#!/usr/bin/perl #*- スクリプト配布&編集 --------------*# # Moji Navi v2.0309 (02.03.09) # # # # *- CGI Cafe. -* # # URL: http://saya.kiy.jp/ # #*-------------------------------------*# $ver = 'Moji Navi v2.0309';# バージョン #-# スクリプト作成 #--------------------# # Cosmo Navigator v2.04 (2001/03/03) # # Copyright(C) KENT WEB 2001 # # webmaster@kent-web.com # # http://www.kent-web.com/ # #---------------------------------------# #━━━━━━━━━━━━━━━━━━━━━━━━━━━ # # ※ このCGIに対する問い合わせを「KENT WEB」さんには # # 絶対にしないでくださいね。お願いします。 # #━━━━━━━━━━━━━━━━━━━━━━━━━━━ # # ■ 必要なファイルとパーミッション # # # # 「moji」ディレクトリ # # ・moji.cgi ----[755] # # ・moji.log ----[666] # # ・count.dat----[666] # # ・bkup.dat ----[666] # # ・A.bak -------[666] # # ・B.bak -------[666] # # ・C.bak -------[666] # # ・jcode.pl ----[755]or[644] # # 「img」ディレクトリ # # ・gif画像 ---[変更不要] # # 「lock」ディレクトリ[777] ※ロックする場合のみ # #-------------------------------------------------------# #============# # 基本設定 # #============# require './jcode.pl'; # コード変換ライブラリ取り込み $home = "http://f19.aaa.livedoor.jp/~webseek/"; # 戻り先 (絶対パスなら http://から) $homett= "_top"; # ↑戻り先のターゲット指定 $pass = '621030'; # 管理用パスワード(英数字で)※必ず変更してね! $admin = "管理人"; # 管理者の名前 $script = "./moji.cgi"; # スクリプト名 $logfile = "./moji.log"; # ログファイル名 $title = "*- Link Navi -*"; # タイトル名 $t_color = "#88b1cd"; # タイトル文字の色 $t_face = "Verdana"; # タイトルの文字フォントタイプ $t_size = '20pt'; # タイトルサイズ:ポイント数 # タイトル画像の指定 $t_gif = "./img/title.gif"; # タイトル画像ファイル名 $t_wid = '200'; # 画像の横サイズ(ピクセル) $t_hgt = '53'; # 〃 縦サイズ(ピクセル) $ba_img = 1; # バナー表示機能を使用しますか?(0=no 1=yes) $hpsize = 4; # バナー表示がない場合のHPタイトルのフォントサイズ # バナー表示機能を使用する場合、バナーサイズを固定しますか? $ban_w = '200'; # 横幅を指定 (固定しない場合は ''; のままでOK) $ban_h = '40'; # 高さを指定 ( 〃 ) $rank_on = 1; # ランキングを表示しますか?(0=no 1=yes) # URL登録形態 $regtype = 1; # 0 : ユーザが自由に登録,1 : 管理者のみが登録 $mailkey = 0; # メールアドレス登録は必要ですか? (0=no 1=yes) ※但し「sendmail使用」の場合は必ず【1=yes】にして下さい! $master = "Webmaster:"; # 管理人名を表示する場合の見出し # トップページのテーブル表示の指定 $lup = "./img/1.gif"; # 向かって左上コーナー画像 $rup = "./img/2.gif"; # 〃 右上 〃 $ldown = "./img/3.gif"; # 〃 左下 〃 $rdown = "./img/4.gif"; # 〃 右下 〃 $point = "./img/mk_h.gif"; # 見出しポイント画像を指定 $top_bg= "#88b1cd"; # 背景色 $td_w = "180"; # カテゴリー表示部分の幅 # カテゴリータイトルに長い名前をつけると表示が乱れますのでここで調整してね。 $method = 'POST'; # methodの形式 (POST or GET) $msg_limit = 100; # 紹介コメントの制限文字数(全角文字) $newtime = 7; # NEWアイコンの表示日数 $w_new = 10; # 新着情報の最新表示件数 $p_view = 10; # 登録内容の1ページ当りの表示数 $lockkey = 0; # ロックファイル (0=no 1=symlink関数 2=open関数) $lockfile = "./lock/moji.lock";# ロックファイル名(アップロードの必要はありません) # ホスト名取得モード ------------------------------- # --> 0 : $ENV{'REMOTE_HOST'} で取得できる場合 # --> 1 : gethostbyaddr で取得できる場合 $get_remotehost = 0; $keyfile = "./bkup.dat"; # バックアップ用キーファイル # バックアップファイルを置くディレクトリ $backdir = "."; # [moji.cgi]と同一ディレクトリの場合は「.」のままでOK # カテゴリー(ジャンル)の指定 ------------------------------- # --> 変数のカギ括弧内は 0 から連番で続ける ※表示の関係上「2で割切れる数」にして下さいませ(;^_^A $parts[0] = "サーチエンジン"; $parts[1] = "ゲーム関連"; $parts[2] = "音楽関連"; $parts[3] = "競馬関連"; $parts[4] = " みんごる関連"; $parts[5] = "スポーツ関連"; $parts[6] = "CGI関連"; $parts[7] = "HP作成支援"; $parts[8] = "素材屋さん"; $parts[9] = "その他"; # 環境設定 ------------------------------- $bground = "./img/bg.gif"; # 壁紙(http://からでもOK) $bgcolor = "#FFFFFF"; # 背景色 $text = "#517FA0"; # 文字色 $link = "#517FA0"; # リンク色(未訪問)#426882 $vlink = "#517FA0"; # リンク色(既訪問) $alink = "#517FA0"; # リンク色(訪問中) $obi_color = "#517FA0"; # 横線の色 $obi_width = "60%"; # 各ページの(テーブル)表示サイズ $ta_color = "#eeeeee"; # ランキング見出しの色 # コメント前のマークを指定 ※タグまたは「★」などの記号 $com_m = ''; # NEWアイコン ------------------------------- $newgif = "./img/new.gif"; # NEW画像ファイル名 $new_w = '30'; # 〃 横サイズ $new_h = '10'; # 〃 縦サイズ # おすすめ or 相互リンクアイコン ----------------- $lsicon = 'おすすめ'; # 管理者が付加するアイコンの名前(意味) ※おすすめ、相互リンク など $recom = './img/look.gif'; # 画像ファイル名 $rec_w = '44'; # 〃 横サイズ $rec_h = '8'; # 〃 縦サイズ # プロバイダで「sendmail」が使える場合のみ指定 $mailing = 0; # メール通知 (0=no 1=登録者のみ 2=登録者と管理者へ通知) $sendmail = '/usr/slib/sendmail'; # sendmailのパス $admin_mail = 'master@host.or.jp'; # 管理者メールアドレス(メール通知する時) $admin_url = 'http://www.host/'; # 管理者のURL(メール通知する時) $w_url = 0; # 同一URLの二重登録を許可する? (0=no 1=yes) $target ="_blank"; # 登録されたHPへ飛ぶ時のtarget指定(_blank:新しいウィンドウを開く, _top:新しいウィンドウを開かない) # URLジャンプ形式(Locaion関数の使えないサーバ対応 --->> トクトク,3nopaage などの方は「1」を指定) $meta_jump = 0; # 0 : Location関数,1 : METAタグ $wait = 1; # METAタグジャンプの待ち時間(秒数)※ 上記設定で「1」とした場合のみ # タグ広告挿入オプション # → の代わりに「広告タグ」を挿入する。 # → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能です。 $banner1 = ''; # 上部に挿入 $banner2 = ''; # 下部に挿入 # 登録アクセス拒否 # --> 新規登録処理をホスト名から拒否します @deny = ( 'ppp*.xxx.co.jp', 'cache*.*.interlog.com', '*.anonymizer.com', '', '', '', '', '' ); # ミニカウンタの設置--------------------------------------- $counter = 1; # 0=no、 1=テキスト、 2=GIF画像 $mini_fig = 6; # ミニカウンタの桁数 $cnt_color = "#517FA0"; # テキストのとき:ミニカウンタの色 $gif_path = "./img"; # GIFのとき :画像までのディレクトリ $mini_w = 10; # 〃 :画像の横サイズ $mini_h = 10; # 〃 :画像の縦サイズ $cntfile = "./count.dat"; # カウンターファイル $cnt_pl = "right"; # カウンターの表示位置 (画面左:left 画面右:right 中央:center) $cntlock = "./cnt.lock"; # カウンターのロックファイル名 # スタイルシートの設定 ------------------------------- #スタイルシートがわかる人は適当に変更してください。 $font_size = "8pt"; #標準の文字の大きさ $family = "Verdana,Chicago"; #フォント種類 $hlink_color = "#517FA0"; #リンク部分にマウスをのせたときの文字色 $hlink_bgcolor = "#eeeeee"; #リンク部分(ボタン含む)にマウスをのせたときの背景色 $input_color = "#666666"; #入力欄の文字色(IE4以上、NN6以上でのみ反映) $input_border = "#517FA0"; #入力欄の枠の色(IE4以上、NN6以上でのみ反映) $input_bgcolor = "#eeeeee"; #入力欄の背景の色(IE4以上、NN6以上のみ反映) $hr = "#517FA0"; #横線の色(IE4以上、NN6以上のみ反映) $style = <<"HTML"; HTML #============# # 設定完了 # #============# # メイン処理 &decode; if ($mode eq 'howto') { &howto; } if ($mode eq 'new_sort') { &new_sort; } if ($mode eq 'ranking') { &ranking; } if ($mode eq 'new_url') { &new_url; } if ($mode eq 'regist') { ®ist; } if ($mode eq 'mente') { &mente; } if ($mode eq 'do_mente') { &do_mente; } if ($mode eq 'admin') { &admin; } if ($mode eq 'admin_edit') { &admin_edit; } if ($mode eq 'search') { &search; } if ($mode eq 'part') { &part_view; } if ($in{'links'} ne '') { &link_jump; } &html_view; exit; #------------# # 初期画面 # #------------# sub html_view { # バックアップ処理 $bkup_flag=0; if (!$mode) { # キーファイルを読み込み分解 open(BK,"$keyfile") || &error("Open Error : $keyfile"); $BKUP = ; close(BK); ($today,$key) = split(/:/, $BKUP); # 日付が異なればバックアップ処理を行う &get_time; if ($mday ne "$today") { $bkup_flag=1; # バックアップファイルを定義 $bakfile = "$backdir/$key\.bak"; # ローテーションキーを定義 if ($key eq 'A') { $newkey = 'B'; } elsif ($key eq 'B') { $newkey = 'C'; } else { $newkey = 'A'; } # ロック開始 if ($lockkey == 1) { &lock1; } elsif ($lockkey == 2) { &lock2; } # キーファイルを更新 open(BK,">$keyfile") || &error("Write Error : $keyfile","lock"); print BK "$mday\:$newkey"; close(BK); } } # ログを読み込み open(IN,"$logfile") || &error("Open Error : $logfile"); if ($bkup_flag) { open(OUT,">$bakfile") || &error("Open Error : $bakfile"); } while () { print OUT $_ if ($bkup_flag); ($no,$pt,$sub,$hp,$bann,$name,$email,$pw,$msg,$date,$t) = split(/<>/); foreach (0 .. $#parts) { if ($pt eq "$_") { $bunrui[$_]++; last; } } } close(IN); close(OUT) if ($bkup_flag); # ロック解除 if ($bkup_flag && -e $lockfile) { unlink($lockfile); } &header; # カウンタ処理 if ($counter) { &counter; } print "\n"; print "$banner1\n" if ($banner1 ne ''); if ($t_gif) { print "\n"; } else { print "$title\n"; } print "\n"; print "HOME * \n"; print "注意事項 * \n"; if (!$regtype) { print "新規登録 * \n"; } print "新着情報 * \n"; if ($rank_on) { print "ランキング * \n"; } print <<"EOM"; $admin用 条件 AND OR 表\示 10件 15件 20件 25件 30件 EOM print "\n"; print "\n"; print " \n"; print "\n"; print "\n"; $flag=0; foreach (0 .. $#parts) { if ($bunrui[$_] eq '') { $bunrui[$_] = 0; } if ($flag == 0) { print " \n"; print " \n"; print "$parts[$_]($bunrui[$_]件)\n"; $flag=1; } else { print " \n"; print "$parts[$_]($bunrui[$_]件)\n"; print " \n"; $flag=0; } } if ($flag == 1) { print "\n"; } print "\n"; print "\n"; print " \n"; print "\n"; print "\n"; print "\n"; &footer; print "$banner2\n"; print "
\n" if ($banner1 ne ''); if ($t_gif) { print "\n"; } else { print "$title\n"; } print "
$banner2