#!/usr/bin/perl
#--------HNSログカッター(2002年1月2日版)---------------------------------
#SCRIPT by hiro (http://homepage3.nifty.com/cinema1987/)
#mail:fwnk1502@mb.infoweb.ne.jp
#スクリプト配布場所:ハイパー日記システムでpnamazuを使おう
#(http://homepage3.nifty.com/cinema1987/data/hns_for_pnamazu.html)
#EUCコードで保存すること!
#--------設定項目--------------------------------------------------------
#このスクリプトの名前。
$script = 'hns_logcut.cgi';
#パスワード
$pass = 'pass1234';#半角英数字で指定。必ず変えてください。
#日記のURI
$diary_url = 'http://www.foo.bar.ne.jp/~hoge/diary/';
#日記のタイトル
$diary_name = 'My DIARY';
#referer_logの絶対パス
$referer_logfile = '/home/hoge/diary/log/referer_log';
#batta_logの絶対パス
$batta_logfile = '/home/hoge/diary/log/referer_batta_log';
#mail.logの絶対パス
$mail_logfile = '/home/hoge/diary/mail/mail.log';
#simple.logの絶対パス
$simple_logfile = '/home/hoge/diary/mail/simple.log';
#referer_log.oldの絶対パス
$old_logfile = '/home/hoge/diary/log/OLD/referer_log.old';
#rotate_log.cgiのURI
$rotate_url = 'rotate_log.cgi';
#admini.cgiのURI
$admin_url ='admini.cgi';
#------------設定終了---------------------------------------------------------
#------------処理開始-------------------------------------------------------
print "Content-type: text/html\n\n";
&decode;
if ($FORM{'pass'} eq "") {&gate;}
if ($FORM{'pass'} ne "$pass" && $FORM{'pass'} ne "") { &error("パスワードが違います!"); }
if ($FORM{'mode'} eq "" && $FORM{'pass'} eq "$pass") {&logsize;}
if ($FORM{'mode'} eq 'batta' && $FORM{'pass'} eq "$pass") {
&header;
&batta;
&footer;
} elsif ($FORM{'mode'} eq 'mail' && $FORM{'pass'} eq "$pass") {
&header;
&mail;
&footer;
} elsif ($FORM{'mode'} eq 'simple' && $FORM{'pass'} eq "$pass") {
&header;
&simple;
&footer;
} elsif ($FORM{'mode'} eq 'old' && $FORM{'pass'} eq "$pass") {
&header;
&old;
&footer;
}
#-------------------------------------------------------------------------------
sub gate{
print <<"EOL";
HNSログカッター
HNSログカッター
パスワードを入力してください。
EOL
}
sub decode{
if ($ENV{'REQUEST_METHOD'} eq "POST"){
if ($ENV{'CONTENT_LENGTH'} > 50) {
&error ("フォーム入力文字列のサイズが大きすぎます。");
}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{QUERY_STRING};
}
@pairs = split(/&/,$buffer);
foreach (@pairs) {
($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/</g;
$value =~ s/>/>/g;
$value =~ s/\r//g;
$FORM{$name} = $value;
}
}
sub logsize{
$logsize = (-s $referer_logfile);
$logsize = int ($logsize / 1024);
$battalogsize = (-s $batta_logfile);
$battalogsize = int ($battalogsize / 1024);
$maillogsize = (-s $mail_logfile);
$maillogsize = int ($maillogsize / 1024);
$simplelogsize = (-s $simple_logfile);
$simplelogsize = int ($simplelogsize / 1024);
$oldlogsize = (-s $old_logfile);
$oldlogsize = int ($oldlogsize / 1024);
$total_log = $logsize + $battalogsize + $maillogsize + $simplelogsize + $oldlogsize;
print <<"EOL";
HNSログカッター
HNSログカッター
現在のhnsの各種ログサイズを表示しています(小数点以下を切り捨てています)。
・refererログ |
$logsize KB |
・battaログ | $battalogsize KB |
・mailログ | $maillogsize KB |
・simpleログ | $simplelogsize KB |
・referer_oldログ | $oldlogsize KB |
ログサイズは計 $total_log KBです。
削除ボタンを押すと、該当ログを削除します。
refererログはhnsのrotate_log.cgiにリンクしてありますが、他の場合はログサイズを0にします。
後戻りできませんので、ご注意。
EOL
}
sub batta{
if ( -e $batta_logfile) {
open (LOG, "+>$batta_logfile");
close(LOG);
print "";
print "battaログは削除されました。\n";
print "
";
}else{
print "";
print "battaログがありません。\n";
print "
";
}
}
sub mail{
if ( -e $mail_logfile) {
open (LOG, "+>$mail_logfile");
close(LOG);
print "";
print "mailログは削除されました。\n";
print "
";
}else{
print "";
print "mailログがありません。\n";
print "
";
}
}
sub simple{
if ( -e $simple_logfile) {
open (LOG, "+>$simple_logfile");
close(LOG);
print "";
print "simpleログは削除されました。\n";
print "
";
}else{
print "";
print "simpleログがありません。\n";
print "
";
}
}
sub old{
if ( -e $old_logfile) {
open (LOG, "+>$old_logfile");
close(LOG);
print "";
print "referer_oldログは削除されました。\n";
print "
";
}else{
print "";
print "referer_oldログがありません。\n";
print "
";
}
}
sub header {
print "\nHNSログカッター\n";
print "";
}
sub footer {
print "
\n";
print "\n";
print "[
BACK]\n";
print "
\n";
print "\n";
}
sub error {
print <<"EOF";
エラー
$_[0]
[BACK]
EOF
exit;
}