DL ranking v1.5


製作:秀麗 / WebSite:Labyrinthe Noir

目的と仕様について

 アンカータグからCGIを呼び出し、リンクもしくはダウンロードを行ったファイル名を記録します。
 CGIを呼び出すと同時にリンク先のファイル名を記述します。CGIはそのファイル名をログファイルに記録し、次にそのファイルを呼び出す動作をしてくれます。

 ログファイルにはアンカータグを押した時の日付と時間、目的のファイル名、使用者のホスト名などが記録されます。(最後の数字は日時を示しています)
 カウントの多い順、名前の順(コード順)に並び替えて表示することができます。

 ファイルをダウンロードする場合の動作手順は次のようになります。

通常のリンクDL rankingを使ったリンク
ソースファイル<A HREF="software.sit.hqx">
DOWNLOAD
</A>
<A HREF="download.cgi?software.sit.hqx">
DOWNLOAD
</A>
クリックsoftware.sit.hqx を呼び出すdownload.cgiを呼び出し、「software.sit.hqx」を
文字列データとして受け取らせる
CGIの動作-受け取った文字列をログファイルに記録
同文字列のファイルを呼び出す
表示software.sit.hqx をダウンロードsoftware.sit.hqx をダウンロード
(HTMLファイルの場合はそれが表示されます。)

 画面上の結果は同じですが、CGIを通すことで、その記録を残して、集計された記録を見ることが出来るようになります。
 プログラムのダウンロードだけでなく、リンク先ファイルの統計全般に利用できます。


ファイル構成

必要なファイル
download.cgi(実行プログラム)
delete.cgi(データ削除用プログラム)
total.csv(積算用ログファイル)
filelog.csv(ログファイル)
index.html(ディレクトリの目隠し用)
テスト用のファイル
test.html(テスト用ファイル。メニューインデックス)
TEST1.sit(そのまま送ってください)
TEST2.sit(そのまま送ってください)
※これらテスト用のファイルは動作テストのために使いますので、実際の動作時には不要となります。


設定方法(1)- リンクの記述とcgiファイルの初期設定

 まず、html から download.cgi を使用する方法を説明しましょう。
 <A HREF="soft.sit.hqx">download</A>
 通常ファイルのダウンロードは上記のようにアンカーを設置しますが、これを次のように変更します。
 <A HREF="download.cgi?soft.sit.hqx">download</A>

 これによって download.cgi に対して、ダウンロードしたい(記録したい)ファイル名を引き渡します。
 ダウンロードファイルは download.cgi の中で指示したディレクトリから呼び出します。
 ファイルが存在しない場合、「No File」と題したページが表示されます。

ダウンロードランキングを見たいとき:
 <A HREF="download.cgi">ランキングを見る</A>
 ファイル名を省略するだけでOKです。

最新のログファイルを見たいとき:
 <A HREF="download.cgi?filelog.csv">ログファイルを見る</A>
 ログファイル名をCGIへ引き渡します。


download.cgi の初期設定

#! /usr/local/bin/perl

 これはサーバーの perl プログラムの場所を示しています。プロバイダに確認してください。
# 集計画面のタイトル
$title = "Download Ranking";

# リンク先ファイルのディレクトリ
# 受け取ったファイル名の前に付加します。
$file_host = "./";

 実際にDLファイルの保管してあるディレクトリを表記します。この後ろに受け渡されたファイル名がつながりますので、必ず最後に「/」を忘れないでください。
 download.cgiのファイルから見た相対的な位置か、サーバー内での絶対的な位置指定を行ってください。

 【相対的な位置指定の場合
 「./」・・・同じディレクトリ
 「../」・・・1つ上のディレクトリ(親ディレクトリ)
 「archive/」・・・1つ下の archive ディレクトリ(名称は任意)
 「../archive/」・・・1つ上のディレクトリにあるサブディレクトリ(名称は任意)

 【絶対的な位置指定の場合
 「/home/user/archive/」・・・FTPで転送するときのパス(プロバイダが設定したもの)にディレクトリ名(任意)を付加する

 【ディレクトリが複数ある場合
 リンク先として受け渡すファイル名にディレクトリ名をそれぞれ付加する必要があります。
 $file_host の設定はそれらディレクトリに共通の親ディレクトリを指し示す必要があります。

# 戻るページ
$backpage = "test.html";

 「Back」と表示されたアンカーのリンク先。
# ログを記録するファイル名
$log = "filelog.csv";

 ログファイルです。下記の最大件数までここに記録されます。
 必ず読み書き可能なディレクトリに入れる必要があります。
 別ディレクトリに入れる場合は、ディレクトリ名を付加してください。
# ログを集計するファイル名
$total_log = "total.csv";

 積算ログファイルです。下記の最大件数を超えた分はここにまとめて集計されます。
 必ず読み書き可能なディレクトリに入れる必要があります。
 別ディレクトリに入れる場合は、ディレクトリ名を付加してください。
# ロックファイル名
$file_lock = "dr.lock";

 ファイルの同時書込を回避するためにロックファイルで書込の許可があるか判別します。
 必要に応じて自動作成されるため、普段は存在しませんが、ロック中のみ作成されます。
 他のCGIのロックファイルと名前が同じにならないように注意してください。
 必ず読み書き可能なディレクトリに入れる必要があります。
 別ディレクトリに入れる場合は、ディレクトリ名を付加してください。
# 最大ログ記録件数
$max = 1000;

 これを越えた分は自動的に集計ファイルへ記録を積算します。
 「0」に設定すると記録されなくなります。(ダウンロードはできます)
# 連続DL記録の回避時間(秒)
$D_time = 300;

 同じファイルに対して同じホストのユーザーからのダウンロード操作があったとき、一定時間を空けて記録します。
 IEを使用していると、5秒~3分の間を置いて2回ログが発生することがありましたので、その対策にもなっています。
# グラフバー
$block = "I";

 グラフを表示するときの文字です。左から右へ繰り返し表示して棒グラフのように使います。
 <IMG SRC="block.gif">としてイメージを繰り返し配置することもできます。
# ログ表示の最大行数
$max_view = 1000;

 ログ表示をするときにテーブルを組む最大の行数です。
 大きいと表示に時間がかかります。
# 並べ替えのデフォルト選択
# 0=ファイル名/1=カウント数/2=更新日/3=アクセス日
$sortmode = 1;

 ランキングを表示する時の並べ替え方法を選択できます。ここでは指定なしの場合の標準値を設定します。
 ファイル名:A-Za-zの順
 カウント数:カウント(ダウンロードやアクセス数)の多い順
 更新日:ファイル更新日の新しい順
 アクセス日:最終アクセス日の新しい順
 CGIを呼び出す時に「download.cgi?sort=1」として指示することも可能。
# 更新日の表示(ON=1/OFF=0)
$update = 1;

 ランキング表示画面で各ファイルの最終更新日(アップロード)を表示します。
 この機能はCGIとダウンロードファイルが同じサイトにある場合のみ(ファイルの存在チェックが可能)正常に表示されます。
 0の時、並べ替えもできません。
# アクセス日時の表示(ON=1/OFF=0)
$access = 1;

 ランキング表示画面で最終アクセス日(ダウンロード)を表示します。
 0の時、並べ替えもできません。
# 色の設定
# TABLE
$tablecolor = "#EEEEEE";
# ヘッダー
$headcolor = "#EEEEBB";
# グラフ表示色
$ratiocolor = "#0000FF";
# 最近のファイル
$newcolor = "#BBBBFF";
# 削除ファイル
$delcolor = "#BBBBBB";

 $tablecolro = テーブル全体色。
 $headcolor = テーブルのヘッダーで使用する色。
 $ratiocolor = グラフのブロック部文字色。
 $newcolor = 最近(30日以内)登録・更新されたファイルを表示する行の背景色。
 $delcolor = 削除されたファイルを表示する行の背景色。
# 動作テストモード(ON=1/OFF=0)
$testmode = 1;

 動作テストモードではログは記録されますがダウンロードは行われません。
 実際に使い出すときはこれを「0」にしてください。
 (テストモード中は test.html へ戻るように固定しています。)

設定方法(2)- ファイルの転送とパーミッションの設定

 CGI の使えるディレクトリに4つのファイルを転送します。
 (テスト用の3つのファイルも同じディレクトリで使用します。)

 index.html はCGI用にディレクトリを新しく作成したときに使います。そのディレクトリの中を覗かれないようにするもので、ファイル名を省略したときに呼び出されるものです。
 (ファイル名を省略したときに呼び出されるファイル名に変更してください。)

 パーミッションの設定は次のようにしてください。
ディレクトリ「777」(下記ファイルを含むディレクトリ)
download.cgi「755」
delete.cgi「755」(安全のため、必ずファイル名を変更してください)
total.csv「777」
filelog.csv「777」
index.html(特別に指定する必要はありません)

 パーミッションの設定はFTPやTelnetのソフトなどを使用して変更します。


一覧画面の見方

File Name[S]Count[S]Ratio GraphUpdate[S]Access[S]

 一覧表は最大表示で上記5つの項目が表示されます。
 Update、Accessは初期設定で表示/非表示を設定します。
 タイトル行にある[S]の部分はソートを意味しています。これをクリックするとそのタイトルに応じた並び替えを行って一覧表示します。

 リンクから直接ソートを指定することもできます。
 download.cgi?sort=0:ファイル名
 download.cgi?sort=1:カウント数
 download.cgi?sort=2:ファイル更新日
 download.cgi?sort=3:ダウンロードアクセス日


データ削除方法

 集計ファイルから任意のデータを削除するときには「delete.cgi」を使用します。(必ず名前を変えて使ってください。)
 ファイル内の各設定は「download.cgi」の場合とほぼ同じですが、設定項目は少なくなっています。

 「delete.cgi」を起動するとログファイルと集計ファイルを別々にカウントした表が現れます。
 表の右にはファイルがあるかどうかチェックした結果(Yes/No)がありますが、これはCGIと対象ファイルが同じサイトにある場合のみ機能します。

 ファイル名の頭にあるラジオボタンを1つ選択して、「DELETE」ボタンを押せば対象ファイルのデータを削除します。
 ここで削除されるのは集計ファイルのデータだけです。もし、ログファイルにカウントが残っている分は一覧に集計されます。


注意事項

実行するとき:
 標準では動作テストモードになっているため、ダウンロードはできません。かなら動作テストモードをオフにしてください。

実行ファイル名を変更したとき:
 CGIの中からログファイルを見る画面に切り替えるために実行ファイルを標準の名称で呼び出していますので、その部分のファイル名の表記を変更する必要があります。

バージョン1.3以前のログファイルとの互換性:
 v1.4を使用してログファイルを新しいパターンに書き換えることができます。
 v1.5からはその機能を省略していますので、1.3以前のログファイルは抹消してください。


免責事項

 CGI の利用はサーバーへの負担を伴います。また、改良に際しては正しい知識が必要です。
 このCGIは運用テストをして発表をしておりますが、利用環境に応じた設定は個別に必要です。
 使用に際しては各個人の責任においてご使用ください。いかなる損害が発生しようとも責任は負いかねます。


著作権者

 このスクリプトは「秀麗(Shurey)」がその著作権を有しています。
 利用は無償です。改良はもちろん二次配布も了承します。
 使用に際して著作権の表示は変更いただいて結構ですが、二次配布の場合、ドキュメント等に著作権者または出典を明示してください。


Created by Shurey