#!/usr/local/bin/perl # ━━━……・・初期設定 # ライブラリへのパス require './cclib.pl'; # 管理パスワード(必ず変更すること!!) $password = '840818'; # CGIファイル名 $cgifilename = 'dlcounter.cgi'; # ログファイル名 $logfilename = 'dlcounter.log'; # ━━━……・・設定ここまで $admin_bgcolor = "#FFFFFF" ; $admin_bgcolor_table = "#DDDDDD" ; $admin_fontcolor = "#000000" ; $admin_bordercolor = "#666666" ; &formdecord(); $f_name = $FORM{'name'}; $f_url = $FORM{'url'}; if ( ( $FORM{'url'} ne "" ) and ( $FORM{'name'} ne "" ) ) { &mode_download(); exit } if ( ( $FORM{'url'} ne "" ) and ( $FORM{'name'} eq "" ) ) { &error('パラメータが足りません'); exit } if ( ( $FORM{'mode'} eq "admin" ) && ( $FORM{'password'} eq $password ) ) { &mode_admin(); exit; } if ( ( $FORM{'mode'} eq "edit" ) && ( $FORM{'password'} eq $password ) ) { &mode_edit(); exit; } if ( ( $FORM{'mode'} eq "editwrite" ) && ( $FORM{'password'} eq $password ) ) { &mode_editwrite(); exit; } &mode_login(); exit; # ━━━……・・ダウンロード sub mode_download { # ログ読み込み open ( IN , "< $logfilename" ); chop(@log = ); close(IN); foreach $fr (@log) { @data = split(/\t/,$fr); ( $count{$data[1]} , $name{$data[1]} , $url{$data[1]} , $date{$data[1]} ) = @data; } $count{$f_name}++; $name{$f_name} = $f_name; $url{$f_name} = $f_url; $time = time(); $date{$f_name} = $time; # ログ書き出し open ( OUT , "> $logfilename" ); while (($key , $value) = each(%name)) { print (OUT "$count{$key}\t$name{$key}\t$url{$key}\t$date{$key}\n"); } close(OUT); print "location: $f_url\n\n"; } # ━━━……・・ログインモード sub mode_login { $message = "パスワードを入力してください"; if ( $FORM{'mode'} eq "admin" ) { $message = "パスワードが間違っています"; } &htmlheader(); &puthtml("top","蓄々ダウンロードカウンター管理ページ","$admin_fontcolor","$admin_bgcolor"); print <<"HTML";

■ ログイン

$message
HTML &puthtml("bottom"); } # ━━━……・・管理モード sub mode_admin { &loadlog(); &htmlheader(); &puthtml("top","蓄々ダウンロードカウンター管理ページ"); $tdmargin = "20"; print <<"HTML";
HTML $no = 1; $count_total = 0; foreach $fr (@s_count) { ( $a , $name ) = split ( /\t/ , $fr ); &maketime($date{$name}); print <<"HTML"; HTML $no++; $count_total += $count{$name}; } print <<"HTML";
順位名前DL数最終DL日
$no$name$count{$name}$year/$mon/$mday $hour:$min
$count_total
HTML &puthtml("bottom"); } # ━━━……・・データ編集モード sub mode_edit { &loadlog(); &htmlheader(); &puthtml("top","蓄々ダウンロードカウンター管理ページ"); $tdmargin = "20"; print <<"HTML";
HTML $no = 1; foreach $fr (@s_count) { ( $a , $name ) = split ( /\t/ , $fr ); # &maketime($date{$name}); print <<"HTML"; HTML $no++; } $date = time(); print <<"HTML"; HTML print <<"HTML";
名前DL数

HTML &puthtml("bottom"); } # ━━━……・・データ書き換え実行 sub mode_editwrite() { # ログ書き出し open ( OUT , "> $logfilename" ); for ( $fo = 1 ; $fo <= $FORM{dataquantity} ; $fo++ ) { $count = $FORM{'count'.$fo}; $name = $FORM{'name'.$fo}; $url = $FORM{'url'.$fo}; $date = $FORM{'date'.$fo}; if ( $name ne "" ) { print (OUT "$count\t$name\t$url\t$date\n"); } } close(OUT); &mode_admin(); } # ━━━……・・このCGI特有のライブラリルーチン sub loadlog { # ログ読み込み open ( IN , "< $logfilename" ); chop(@log = ); close(IN); foreach $fr (@log) { @data = split(/\t/,$fr); ( $count , $name , $url , $date ) = @data; ( $count{$name} , $name{$name} , $url{$name} , $date{$name} ) = @data; $count = substr ( '0000000000'.$count , length ( $count ) ); push ( @s_count , "$count\t$name" ); push ( @s_name , "$name\t$name" ); push ( @s_url , "$url\t$name" ); push ( @s_date , "$date\t$name" ); } @s_count = reverse ( sort ( @s_count ) ); @s_name = sort ( @s_name ); @s_url = sort ( @s_url ); @s_date = reverse ( sort ( @s_date ) ); } # ━━━……・・ライブラリルーチン # エラー表示 sub error { print <<"HTML"; ダウンロードカウンターエラー

ダウンロードカウンターエラー


$_[0] HTML }