[PR]テレビ番組表
今夜の番組チェック

infoseekでのアクセスカウンター設置法−アクセスカウンター編−

Ciel Clair ― フリー CGI 配布サイトの CALA - アクセスログ解析を例に挙げてご説明します。 ↑↑サンプルのアクセスカウンターです
ダウンロードしてきて、CGIファィル(cala.cgi , indi.cgi , acs.cgi , cnt.cgi , analyze.cgi , admin.cgi) を開けると第一行目は既に、 #!/usr/local/bin/perl と、なっておりますので、変更の必要はないです。
次にset.cgiを開きます。 この時、「 ' 」や「 ; 」が無くなっただけで、エラーを起こしたりしますので注意してください。 ---------- その他、エラーの種類と主な原因 ---------- # 500エラー CGIファイル(またはディレクトリ)のパーミッションが違う→もう一度確認 CGIファイルの1行目(perlパス)が違う → #!/usr/local/bin/perl に変更 CGIファイルの文法がおかしい→文法チェック 間違った転送モードで転送していないか確認 → CGIファイルをアスキー(テキスト)モードで上げる # 403エラー CGIファイルのパーミッションが厳し過ぎる→パーミッションの数値を大きくする # 404エラー ファイルがサーバーに無い→アドレスの確認とファイルをアップしているか確認 --------------------------------------- $PASS_WORD = '1234'; # 管理者パスワード ※お好きな値にお換え下さい。 $PASS_KEY = 0; # 閲覧制限 ( 1:する, 0: しない ) ※アクセスログは見せたくないので 1 に書き直す方が良いでしょう。 # 重複カウント設定 # 0 : 全てカウント # -1 : 連続した同一IP はカウントしない # 1 以上 : 指定時間内のカウントをしない $COUNT_TYPE = 0; ※お好きな設定の数字に書き換えてください。 「連続した同一IP はカウントしない」にしたい場合は、 # 重複カウント設定 # 0 : 全てカウント # -1 : 連続した同一IP はカウントしない # 1 以上 : 指定時間内のカウントをしない $COUNT_TYPE = -1; といった感じになります。 infoseekでのファイル構成及びパーミッションです。 以下の値が使えるようです。 /cala/ (707) │ ├--- /log/ (707) │ └--- ********.log (666) ( 自動生成 ) │ ├--- /img/ (705) │ └--- 0.gif 〜 9.gif (604) │ ├--- cala.cgi (705) ├--- indi.cgi (705) ├--- acs.cgi (705) ├--- cnt.cgi (705) ├--- analyze.cgi (705) ├--- admin.cgi (705) │ ├--- set.cgi (604) ├--- gifcat.pl (604) ├--- graph.gif (604) │ ├--- count.dat (666) ( 自動生成後にパーミッションを606と直しても良いです。 ) ├--- count.log (666) ( 自動生成後にパーミッションを606と直しても良いです。 ) └--- month.log (666) ( 自動生成後にパーミッションを606と直しても良いです。 ) 他のCGIの場合でも .cgi (755) ==> (705) … 実行ファイル .cgi (644) ==> (604) … 設定ファイル .pl (604) … 外部読み込みファイル(jcode.plなど) .dat または .log (666) ==> (606) … ログファイル(書き込みとかを記録するファイル) ディレクトリ (777) ==> (707) … 一般的に言うフォルダ という値にすることで、セキュリティーが増します。 アップロードが出来たら、カウンターを貼り付けたい場所に 以下のタグを貼り付けてください。 <script type="text/javascript"> <!-- wid = window.screen.width; hei = window.screen.height; clr = window.screen.colorDepth; ref = window.parent.document.referrer; document.write( "<img src='./cgi-bin/cala/cala.cgi?" + "&w=" + wid + "&h=" + hei + "&clr=" + clr + "&ref=" + ref + "'>" ); // --> </script> <noscript> <img src="./cgi-bin/cala/cala.cgi"> </noscript> 今日や昨日のカウンターを付けたい場合は <img src="./cgi-bin/cala/cala.cgi?type=Today"> や <img src="./cgi-bin/cala/cala.cgi?type=Yesterday">を 貼り付けます。 あとはreadmeファイルの説明通り、 ログ解析をみるには、indi.cgi にアクセスします。 また、admin.cgi にアクセスすると管理用パネルが開きます。 管理用パネルでは、カウント数の変更や、ログファイルの保存状況を見ることができます。

改造編

infoseekではファィルのパーミッションが .cgi (755) ==> (705) … 実行ファイル .cgi (644) ==> (604) … 設定ファイル .pl (604) … 外部読み込みファイル(jcode.plなど) .dat または .log (666) ==> (606) … ログファイル(書き込みとかを記録するファイル) ディレクトリ (777) ==> (707) … 一般的に言うフォルダ というふうに真ん中(グループ)の値までしか省略出来ません。 またこのCGIは、ログファイルが自動生成時にパーミッションの値も666になってしまうので、 その度変更していたのでは骨が折れます。 ですから、もう少し改造して、セキュリティーをアップさせる方法も書いておくことにします。 まず改造の前に、サーバーにあるログファイルをダウンロードしておきます。 これは、誤って削除してしまわないようにするのと、 あとから名前を変更して、再度アップして使うために保存しておきたいからです。 FFFTPというFTPを使っている場合、 左側が自分のPC内(ローカル)で、右側がサーバー上のファイル群となっていますね。 ダウンロードする時は、ダウンロードしたいフォルダを左側(ローカル)上に開いておき、 ダウンロードしたいファイルをクリック&ドラッグで右から左に移動させればよいです。 次に以下のcgiファイル(indi.cgi・acs.cgi・cala.cgi・analyze.cgi・admin.cgi・set.cgi)を テキストエディタかメモ帳で開き、 .dat ==> .cgi .log ==> .cgi に変更します。 ログファイルを.cgiに変換するとセキュリティー度は格段に上がります。 indi.cgi 168行目 open(IN, $LOG_FOLDER . Get_Date($time, 1) . ".log") or next; open(IN, $LOG_FOLDER . Get_Date($time, 1) . ".cgi") or next; とします。 acs.cgi 123行目 open(IN, $LOG_FOLDER . Get_Date(time-60*60*24*$i) . ".log"); open(IN, $LOG_FOLDER . Get_Date(time-60*60*24*$i) . ".cgi"); とします。 cala.cgi 267行目 $file = $LOG_FOLDER . Get_Date($Renewed-60*60*24*($SAVE_DAY-1)) . ".log"; $file = $LOG_FOLDER . Get_Date($Renewed-60*60*24*($SAVE_DAY-1)) . ".cgi"; cala.cgi 277行目 open(OUT, ">>$LOG_FOLDER" . Get_Date(time) . ".log") or Error("アクセスログ保存ファイル $LOG_FOLDER***.log に書き込むことができませんでした"); open(OUT, ">>$LOG_FOLDER" . Get_Date(time) . ".cgi") or Error("アクセスログ保存ファイル $LOG_FOLDER***.log に書き込むことができませんでした"); とします。 analyze.cgi 133行目 open(IN, $LOG_FOLDER . Get_Date(time-60*60*24*$i) . ".log");open(IN, $LOG_FOLDER . Get_Date(time-60*60*24*$i) . ".cgi"); とします。 admin.cgi 131行目 $file = $LOG_FOLDER . Get_Date($time, 1) . ".log";$file = $LOG_FOLDER . Get_Date($time, 1) . ".cgi"; admin.cgi 162行目 $file = $LOG_FOLDER . Get_Date($time, 1) . ".log";$file = $LOG_FOLDER . Get_Date($time, 1) . ".cgi"; とします。 set.cgi 55行目 $COUNT_FILE = './count.dat'; # カウント数を保存するファイル $COUNT_FILE = './countdat.cgi'; # カウント数を保存するファイル とします。 set.cgi 56・57行目 $COUNT_LOG = './count.log'; # 日別のカウント数を保存するファイル $MONTH_LOG = './month.log'; # 月別のカウント数を保存するファイル $COUNT_LOG = './countlog.cgi'; # 日別のカウント数を保存するファイル $MONTH_LOG = './month.cgi'; # 月別のカウント数を保存するファイル とします。 これらの変更をすることにより、 /log/ フォルダ内に ********.cgi /cala/フォルダ内に countdat.cgi・countlog.cgi・month.logがそれぞれ自動生成されます。 この方法は他の掲示板などでも応用出来ます。