Font Size: [S] [M] [L]

◆ ダウンロードカウンタ ◆

概要

どのファイルがどれだけダウンロードされたかをカウントするスクリプトです。
画像ファイルでも zip 等に圧縮しないでそのままダウンロードしてもらうことができます。(Mac IE 5.x を除く)
主な解析項目は、日単位、月単位、ファイル名、ホスト名から任意の解析が行えます。
指定したディレクトリにあるファイル以外に、外部にあるファイルのダウンロード数をカウントすることもできます。
オプションにより、指定された参照元からのみ許可、1日当たりのダウンロード数の上限や多重ダウンロードの防止といった簡易制限も可能です。
正確なダウンロード数を取得するためにファイルへの直リンクを防止することもできます。(通常モードで CGI 実行権限がオーナー権限のみ)
ログのフォーマットはカンマ区切りの CSV 形式として出力されます。
ログは管理画面にて閲覧することができ、サーバの容量が許す限り全て保存することができます。
ログのダウンロード、削除が管理画面で行なえますので管理が容易に行なえます。
ログを添付ファイルとして指定メールアドレスに送信することもできます。
ダウンロードに指定できるファイルの種類
*.7z *.bin *.bmp *.cab *.doc *.docx *.exe
*.gif *.hqx *.jpg *.jpeg *.lzh *.mid *.midi *.mp3
*.mpg *.mpeg *.pdf *.png *.ppt *.pptx *.rar *.sit
*.swf *.txt *.wav *.xls *.xlsx *.zip

※上記以外の拡張子のファイルを使用する場合は設定ファイルに追加してください。

ダウンロード

  • スクリプト利用規定(お読みください)
  • ダウンロード (download.zip)
  • バージョンアップ方法(旧バージョンをお使いの方)

    v1.51 以前をお使いの方はお手数ですが downcfg.cgi を新規に設定されてから logs ディレクトリ、downcfg.cgi, download.cgi をアップロードしてパーミッションを変更してください。

    v1.51 以降をお使いの方は download.cgi のみ差し替えるだけで OK です。(download.cgi の perl のパス、パーミッションの設定は忘れずに行なってください)

    〓 設置以外の変更・注意点 〓

    ファイル設定

    ダウンロードしたファイルを解凍すると download フォルダがあります。このフォルダを開くと2つのフォルダと4つのファイルの計6つのファイルがあります。

    file/
    この中にダウンロードしてもらうファイルを入れてください。index.html はそのまま入れておいてください。
    なお、ファイル名には半角英数字、ハイフン、ドット、アンダースコア (0-9 A-Z a-z - . _) のみ使用できます。
    logs/
    この中にログファイルが格納されます。index.html はそのまま入れておいてください。
    downcfg.cgi
    設定ファイルです。以下の青文字が設定箇所です。この設定ファイル内の詳細説明を参考に半角英数字で正確に記述してください。
    各ログファイルの設定値はカレントディレクトリに指定してください。(ログファイル名は基本的に初期設定値のままで OK です)
    ※通常使用では、基本設定の [管理パスワード](管理画面にログインするために必要)のみ初期値から変更されれば正常に動作いたします。
    ■ 基本設定
    $FileDir = './file/';
    [必須] ファイルディレクトリのパスを相対パスで記述してください。
    
    $LogDir = './logs/';
    [必須] ログ保存ディレクトリのパスを相対パスで記述してください。
    
    $DownLog = 'downlog.csv';
    [必須] ダウンロードログファイル名を記述してください。
    
    $ErrLog = 'errlog.csv';
    [必須] エラーログファイル名を記述してください。
    
    $LogSplitMode = 0;
    [必須] ログを分割するタイミングを 0, 1, 2 のいずれかで記述してください。
    0 は指定サイズに達した時、1 は日付が変わった時、2 は月が変わった時に現状のログが過去ログとなります。
    
    $LogSplitSize = 1024 * 300;
    [必須] ログ分割サイズを記述してください。
    この場合はログ分割指定がサイズ指定「0」の時、ログサイズが300キロバイトになると過去ログファイルが作成されます。
    ※ログ分割指定がサイズ指定以外の場合はこの項目は無視されます。
    
    $LogSave = 0;
    [必須] 作成された過去ログを保存しておく最大ファイル数を数値で記述してください。
    全て保存しておく場合は 0 にしてください。この場合は自動削除いたしません。
    保存数を指定した場合は指定されたファイル数を超えた時に一番古い過去ログが自動削除されます。
    
    $AdminMailto = '';
    $SendmailPath = '';
    [任意] 過去ログを送信する場合、送信先のメールアドレスと sendmail のパスを記述してください。
    過去ログ保存数を指定している場合に自動削除される過去ログを添付ファイルとして送信することができます。
    使用しない場合はそれぞれ空白「''」にするかコメントアウトしてください。
    
    $TotalCountFile = './count.cgi';
    [任意] 総ダウンロード回数保持ファイル名をカレントディレクトリに指定して記述してください。
    解析時に表示されるダウンロード数はログ単位になりますので、
    今までの各ファイルの総ダウンロード数を保存する場合のみ記述してください。
    使用しない場合は空白「''」にするかコメントアウトしてください。
    
    $LoginLogFile = './loginlog.cgi';
    [任意] ログイン時間記録ファイル名をカレントディレクトリに指定して記述してください。
    ログイン記録を使用する場合のみ記述してください。
    使用しない場合は空白「''」にするかコメントアウトしてください。
    
    $RowIndexFormat = 0;
    [必須] 解析項目に表示される番号の形式を設定してください。
    0 は連番形式、1 はランキング形式になりますのでどちらかを記述してください。
    ※総ダウンロード回数の表示は常にランキング形式になります。
    
    $AdminPass = 'password';
    [必須] 管理パスワードを記述してください。半角英数字とアンダースコアのみ使用できます。
    ※他人がわからないようなパスワードに必ず変更してください。
    
    ■ オプション設定 詳細説明
    (@AllowLoginDomain) = ();
    [任意] 管理画面にログインを許可するドメインを設定する場合に記述してください。
    
    $ViewTotalCount = 0;
    [任意] 総ダウンロード数を一般公開する、しないを指定してください。
    
    $LineFeedChange = 0;
    [任意] テキストファイルをダウンロードしてもらう時の改行コードの扱いを指定してください。
    
    $UrlDirectory = '';
    (@UrlFileList) = ();
    [任意] ファイルディレクトリ以外のファイルをダウンロードしてもらう場合(以下 URL モード)に記述してください。
    
    (%AliasFileName) = ();
    [任意] ダウンロードされたファイルを別の名前としてログに記録する場合に記述してください。
    
    (%AddMime) = ();
    [任意] ファイルの種類を追加する場合に記述してください。
    
    ■ 制限設定 詳細説明
    $SetReferer = '';
    [任意] 指定した URL からのみダウンロードを許可する場合に記述してください。
    
    $DownloadLimit = 0;
    $NeedCookie = 0;
    [任意] 1人のユーザーが1日にダウンロードできる最大数を指定してください。
    最大数を指定する場合はクッキーのチェックをする、しないを指定してください。
    
    $WaitTime = 0;
    $DenyIPFile = './denyip.cgi';
    [任意] 同一 IP アドレスのクライアントが最後にダウンロードしてから
    次のファイルをダウンロードするまでの待機時間(秒)を指定してください。
    待機時間を指定する場合は IP アドレスを記録するファイル名をカレントディレクトリに指定して記述してください。
    
    ■ デザイン設定(詳細は設定ファイル内の説明を参照してください)
    $StyleBgColor = '#ffffff';
    $StyleColor = '#000000';
    $StyleFont = 'Verdana';
    $StyleSize = '0.7em';
    $StyleBorder = '#eeefef';
    $StyleHeader = '#eeeeff';
    $StyleGraph = '#ccccff';
    $StyleGraphBdr = 0;
    $StyleGraphBdrColor = '#77aaff';
    $StyleLink = '#0000ff';
    $StyleVlink = '#800080';
    [必須] 解析結果表示されるデザイン(見栄え)を変更される場合は、各項目を任意の値に変更してください。
    
    ■ 上級者向け設定(通常は変更不要です。詳細は設定ファイル内の説明を参照してください)
    $UnRecErrorCode = '';
    [任意] エラー時にエラーログに記録したくないエラーがある場合のみ設定してください。
    
    download.cgi
    ダウンロードスクリプトファイルです。以下の青文字が設定箇所です。
    #!/usr/local/bin/perl
    [必須] 1行目に perl のパスをサーバで指定された perl のパスに書き換えてください。
    
    index.html
    ディレクトリ参照を防ぐための index.html です。
    Readme.html
    オフライン版の取り扱い説明書です。このファイルは転送不要です。

    オプション設定の詳細

    ログイン許可ドメイン
    総ダウンロード回数の公開
    テキストファイルの改行コード変換
    URL モード(ファイルディレクトリ以外のファイルのダウンロード)
    ダウンロードされたファイル名の別名記録
    ファイルの種類を追加する場合

    制限設定の詳細(通常は使用しないことをおすすめします)

    ダウンロードを許可する URL
    ダウンロードの上限数
    同時ダウンロード制限

    ファイル転送

    FFFTP をご使用の場合
    オプション → 環境設定にある転送1のタブにおいて、ファイル名で切り替えのラジオボタンにチェックを入れて、アスキーモードのファイル名に *.txt *.html *.cgi がある場合、(無い場合は追加して)そのまま download ディレクトリをアップロードしてそれぞれパーミッションを変更してください。
    その他の推奨アップロード方法
    download ディレクトリをバイナリモードで転送してから file ディレクトリ以外をアスキーモードで転送し直して、それぞれパーミッションを変更してください。
    ファイル名 概要 転送モード パーミッション *1
    download/ ディレクトリ - (701 or 705) or 707 or 777
    file/ ファイルディレクトリ バイナリモード (700 or 701) or 705 or 755 *2
    aaa.zip bbb.jpg ... ここにダウンロードしてもらうファイルをいれて転送してください *3 -
    index.html - - -
    logs/ ログ保存ディレクトリ アスキー(テキスト)モード 700 or 707 or 777
    index.html - -
    downcfg.cgi 設定ファイル 600 or 604 or 644
    download.cgi ダウンロードスクリプトファイル 700 or 705 or 755
    index.html - -
    Readme.html 取り扱い説明書(転送不要) - -
    以下自動作成されます(各ファイルのパーミッションは 600 に自動設定されます)
    logs/downlog.csv ダウンロードログファイル *4 - -
    logs/errlog.csv エラーログファイル *4 - -
    count.cgi 総ダウンロード回数保持ファイル *5 - -
    denyip.cgi 多重ダウンロード防止用ファイル *5 - -
    loginlog.cgi ログイン記録ファイル *5 - -
    *1
    基本的にサーバで指定されたパーミッションに変更してください。
    オーナー権限で実行される(suEXEC が実装されている)サーバは、一番左側のパーミッションで動作すると思われます。
    一番左側のパーミッションで動作しない場合にはそれぞれ右のパーミッションに変更してください。
    「-」のパーミッションは設定不要です。
    *2
    ファイルディレクトリのパーミッションを 700 にして動作するサーバの場合(オーナー権限で動作)、CGI から呼ばれたときにだけダウンロードされます。
    これは、この CGI を通さないでファイルディレクトリ内にあるファイルに直接アクセスされてもアクセス権が無いため、直リンクを防止することができますので、正確なダウンロード数を取得することができます。(ファイルの保護にもなります)
    オーナー権限以外で動作するサーバの場合、ファイルを直接呼び出すだけなので 701 でも可能ですが、ファイルチェック等でディレクトリ内を読み取りますので 705 か 755 として読み取りと実行権を与えてください。
    *3
    ダウンロードしてもらうファイルがテキストファイルの場合はアスキーモードで転送してください。
    *4
    現状のログが分割指定で指定した時に日付付きのログファイルが作成されます。
    *5
    使用する場合のみ作成されます。

    設置完了確認

    設置が完了しましたら download.cgi にアクセスしてください。パスワード入力フォームが表示されれば設置完了です。
    表示されない場合は perl のパス、downcfg.cgi の設定、パーミッションを確認してください。FAQ

    表示されましたら、パスワード入力フォームに downcfg.cgi で設定したパスワードを入力してログインしてください。
    セッションの管理にクッキーを使用していますので、ブラウザの設定でクッキーの受け入れを有効にしておいてください。有効にしないとログイン後のモード切替等ができません。

    正常にログインされるとファイル保存ディレクトリにあるファイル一覧と設定のチェック結果が表示されます。表示例
    設定項目に [NG] が表示されている時は、downcfg.cgi 内の該当する設定記述を見直してください。

    ※ダウンロードログファイルが存在する場合は、ダウンロード結果表示が優先されて表示されますので、モード切替で「File Info」を選択してください。

    ダウンロードリンクの作成

    ファイルディレクトリにあるファイルを、download.cgi の引数に ?name=xxx.xxx として name= にファイル名を記述してリンクを作成してください。ファイル名には必ず拡張子もつけてください。

    <a href="http://www.example.com/cgi-bin/download/download.cgi?name=aaa.zip">ダウンロード</a>
    
    <a href="../cgi-bin/download/download.cgi?name=bbb.jpg">ダウンロード</a>
    

    ダウンロードに指定できるファイル名は半角英数字、ハイフン、ドット、アンダースコア (0-9 A-Z a-z - . _) のみ使用できます。指定された文字以外が含まれているファイル名の場合は、ファイルが存在していてもダウンロードすることはできませんので確認してください。

    ※管理画面にログインしてモード切替で「File Info」を選択すると該当ファイルのリンクが表示されますので参考にしてください。
    ただし、不正なファイル名や該当しないファイルの種類(許可されている拡張子以外)のリンクは表示されません。

    管理画面の使用方法

    クッキーの受け入れを有効にしておいてください。受け入れ拒否の状態ではログイン以降の操作が行えません。

    ログの並び順(昇順、降順)を変えたい場合は、ログ番号上部の No. をクリックすると変更されます。
    1ページ内の表示件数を指定する場合は、「view」のドロップダウンメニューから変更することができます。
    指定した表示件数を超えた場合は、ページ切り替え用のリンクが表示されます。表示件数が多い場合、直接移動のリンクは一部省略されます。

    Log Name に指定したログファイルを Select Mode のアクションをします。
    日付とファイル名を指定する場合は、それぞれドロップダウンメニューから選択してください。

    「ALL DATE」「ALL FILE」以外の組み合わせで該当するログがない場合は全て表示されます。その時はドロップダウンメニューの「ALL DATE」「ALL FILE」以外のメニューリストは消えますので、再度の「ALL DATE」「ALL FILE」の状態でモード切り替えをしてください。

    ログ内のホスト名の項目にあるホスト名のリンクをクリックすると、そのホスト名がダウンロードしたログのみ表示します。(ホスト名解析)
    このときに表示件数を切り替えるドロップダウンメニューの横にチェックボックスが表示されますので、Host Search に表示されているホストがダウンロードした日付やファイルを表示する場合は、チェックボックスのチェックを入れた状態でモード切り替えをしてください。
    また、ホスト名解析(「Host Search」にホスト名が表示されている状態)を解除する場合は、チェックを外してモード切り替えをしてください。

    モード切替の「Delete」を選択すると Log Name に表示されているログを削除します。削除時には誤って削除しないように削除確認のダイアログが表示されます。なお、JavaScript が無効の場合は「Delete」の表示はされません。

    モード切替の「Download」を選択すると Log Name に表示されているログをダウンロードします。

    設定項目の [総ダウンロード回数保持ファイル] を記述して設定された場合、モード切替に「Total Count」が追加されます。
    このモードは、通常のログはログファイル単位での解析になりますが、今までにダウンロードされたファイルの総ダウンロード数が表示されます。
    ここに記録されるログは、ファイル名、総ダウンロード数、初めてダウンロードされた日付、最後にダウンロードされた日付です。
    ただし、途中からこのファイルを有効にした場合はその時点からの総ダウンロード数になります。

    モード切替の「File Info」を選択するとファイルディレクトリにあるファイルの一覧、設定のチェック結果が表示されます。
    また、ログファイルが無い場合には自動的にこのモードに切り替わります。

    モード切替の「Logout」を選択するとログアウトして管理画面を終了します。ブラウザを全て終了した場合にもログアウトした状態になります。パスワード、現在のセッションの状態は一時クッキーに保持され、ログアウトしたときに破棄されます。

    その他

    ダウンロードしてもらうファイルのサイズが 5 MB 以上の場合は、CGI の負荷を減らすために URL モードに指定することをおすすめします。

    count.cgi, loginlog.cgi, denyip.cgi は管理画面からダウンロード、削除することはできませんので、FTP 上にて行ってください。
    ※オーナー権限以外で動作されている場合、このファイルは CGI 自身が作成していますので削除のみ行えます。(ローカルからこのファイルを別途アップロードされた場合はこの限りではありません)

    [PR] 世界にたった一つ、あなただけのドメインを登録しよう!