#!/usr/bin/perl
require './jcode.pl';
require './mo_hpa3_cfg.cgi';
$ver = 'MO_HPA v2.00';
#+-------------------------------------------------------------+#
# MO_HPA Ver2.00 #
# MOMO'S WEB DESIGN #
# http://momo-s.info/ #
# webmaster@momo-s.info #
# Copyright(C) 2003 MOMO'S WEB DESIGN. All Rights Reserved. #
#+-------------------------------------------------------------+#
#======================================================================
# <<注意事項>>
# このスクリプトはフリーで配布しています。
# このスクリプトを使用したいかなる損害に対して
# 作者は一切の責任を負いません。
# また、CSSなどを多用しているため全てのブラウザソフトで
# 反映されるものでもありません。
# 当サイトはWEB DESIGNのサイトです。そのためこのスクリプトを含め
# デザインの改造は良識の範囲でお願い致します。
# 尚、著作権部分の削除は禁止します。
#======================================================================
&denial;
&d_code;
if ($mode eq "restore") { &restore; }
elsif ($mode eq "readme") { &readme_html; }
elsif ($mode eq "regist") { ®ist; }
elsif ($mode eq "res") { &res_html; }
elsif ($mode eq "admin") { &admin; }
elsif ($mode eq "edit") { &edit_html; }
elsif ($mode eq "l_del") { &l_delete; }
elsif ($mode eq "e_wri") { &e_write; }
elsif ($mode eq "img") { &img; }
&main_html;
#---------------------------------------#
#-------**--- [ホスト制限] ---**--------#
#---------------------------------------#
sub denial {
local($flag) = 0;
foreach (@deny) {
if ($ENV{'REMOTE_ADDR'} =~ /$_/) { $flag = 1; last; }
}
if ($flag) { &error("申し訳ありませんが、アクセスの許可がありません"); }
}
#---------------------------------------#
#--**--- [メインフォームの表示] ---**---#
#---------------------------------------#
sub main_html {
local(@lines,$lines,@NEW);
&get_cookie;
&head;
&an_link;
print "
\n";
#**-- [ログ表示] --**
open(IN,"$log_f") || &error2("Cannot open $log_f");
@lines = ;
close(IN);
@NEW = ();
foreach (0 .. $#lines) {
local($number,$date,$name,$email,$subject,$comment,$url,$color,$icon,$resnum) = split(/<>/,$lines[$_]);
if ($resnum == 0) {
push(@NEW,$lines[$_]);
}
}
@lines = reverse(@lines);
if ($FORM{'page'} eq '') { $page = 0; }
else { $page = $FORM{'page'}; }
$al = @NEW;
$pg = int(($al - 1) / $p_max);
$d_end = @NEW - 1;
$p_end = $page + ($p_max - 1);
if ($p_end >= $d_end) { $p_end = $d_end; }
foreach ($page .. $p_end) {
local($number,$date,$name,$email,$subject,$comment,$url,$color,$icon,$resnum) = split(/<>/,$NEW[$_]);
$p_res = 1;
&t_design;
}
# **--- [ページ操作] ---**
print "\n\n";
$p_next = $p_end + 1;
$p_back = $page - $p_max;
if ($p_back >= 0) {
print "| \n | \n";
}
if ($p_end ne $d_end) {
print "\n | \n";
}
print "
\n
\n";
# **--- [ページ直接移動] ---**
print "Page : ";
$p = 0;
for ($i = 0; $i <= $pg; $i++) {
$ps = $page / $p_max;
if ($i eq $ps) { print "$i /\n"; }
else { print "$i /\n";}
$p += $p_max;
}
print "\n";
# **--- [ユーザー編集・削除] ---**
print "\n";
# **--- [管理画面へ移動] ---**
print "\n\n";
if ($count) { &counter; }
&foot;
}
#---------------------------------------#
#-----**--- [レスページ画面] ---**------#
#---------------------------------------#
sub res_html {
local(@lines,$line,@new);
&get_cookie;
open(IN,"$log_f");
@lines = ;
close(IN);
@lines = reverse(@lines);
foreach $line (@lines) {
local($num,$date,$name,$email,$subject,$comment,$url,$color,$icon,$resnum) = split(/<>/,$line);
if ($number eq "$num") {
if ($subject eq "") { $subject = "No Title"; }
if ($a_link) { &auto($comment); }
$resnum =~ s/\n/0/g;
&head;
print ": BACK :
\n";
print " $number Resform\n
\n";
print "\n\n";
print "\n\n\n";
print "\n \n";
print " --$num $subject | \n \n";
print "| $name --$date | \n";
print " | \n \n \n | \n
\n";
print "\n
$comment | \n
\n";
$tit = $subject;
}
if ($number eq "$resnum") {
if ($a_link) { &auto($comment); }
print "\n\n\n";
print "\n
| \n";
print "\n\n";
print "\n \n";
print " --$num $subject | \n \n";
print "\n| $name --$date | \n";
print " | \n";
print " \n \n | \n \n\n | \n";
print "
$comment | \n";
print " \n \n | \n
\n";
}
}
print "
\n";
print "\n";
&foot;
}
#---------------------------------------#
#----**--- [ログ書きこみ処理] ---**-----#
#---------------------------------------#
sub regist {
local(@lines,$lines,@new,$r_flag);
&wr_check;
&set_cookie;
if (!&lock) { &error("只今、書き込み処理が混み合っています。
しばらく待ってもう一度アクセスしてください。"); }
open(IN,"$log_f") || &error("Cannot open $log_f");
@lines = ;
close(IN);
if ($back_up) { &backup; }
local($l_number,$l_date,$l_name,$l_email,$l_subject,$l_comment) = split(/<>/,$lines[0]);
if ($delkey ne "") { &encry; }
$usr_ip = $ENV{'REMOTE_ADDR'};
if ($r_sort && $resnum != 0) {
@r_date = ();
@new = ();
foreach (0 .. $#lines) {
$r_flag = 0;
local($s_number,$s_date,$s_name,$s_email,$s_subject,$s_comment,$s_url,$s_color,$s_icon,$s_resnum,$s_delkey,$s_ip) = split(/<>/,$lines[$_]);
$s_resnum =~ s/\n/0/g;
$s_delkey =~ s/\n//g;
$s_ip =~ s/\n//g;
$s_icon =~ s/\n//;
if ($name eq $s_name && $comment eq $s_comment) { &error("同じ内容のコメントは投稿できません","1"); }
if ($s_resnum == 0 && $s_number eq "$resnum") {
$new_line = "$s_number<>$s_date<>$s_name<>$s_email<>$s_subject<>$s_comment<>$s_url<>$s_color<>$s_icon<>$s_resnum<>$s_delkey<>$s_ip<>\n";
$r_flag = 1;
} elsif ($s_resnum eq "$resnum") {
push(@r_data,$lines[$_]);
$r_flag = 1;
}
if ($r_flag == 0) { push(@new,$lines[$_]); }
}
unshift(@new,$new_line);
unshift(@new,@r_data);
} else {
$h = 0;
$full = 0;
@log_data = ();
foreach (0 .. $#lines) {
$lines[$_] =~ s/\n//;
local($s_number,$s_date,$s_name,$s_email,$s_subject,$s_comment,$s_url,$s_color,$s_icon,$s_resnum,$s_delkey,$s_ip) = split(/<>/,$lines[$_]);
if ($lines[$_] eq "") { next; }
if ($name eq $s_name && $comment eq $s_comment) { &error("同じ内容のコメントは投稿できません","1"); }
$s_resnum =~ s/\n/0/g;
$s_delkey =~ s/\n//g;
$s_ip =~ s/\n//g;
$s_icon =~ s/\n//;
if ($s_resnum == 0) { $h++; }
if (!$full) { push(@new,"$lines[$_]\n"); }
elsif ($full && $plog_u) { unshift(@log_data,"$lines[$_]\n"); }
else { last; }
if ($h >= $max-1) { $full = 1; }
}
}
if ($number eq "") { $number = $l_number + 1; }
unshift (@new,"$number<>$date<>$name<>$email<>$subject<>$comment<>$url<>$color<>$icon<>$resnum<>$epasswd<>$usr_ip<>\n");
open(OUT,">$log_f") || &error("Cannot write $log_f");
print OUT @new;
close(OUT);
if ($plog_u && @log_data) { &plog; }
if ($m_mail) {
if ($mail_s) { &mail; }
} else {
if ($mail_s && $FORM{'email'} ne $master_m) { &mail; }
}
&unlock;
}
#---------------------------------------#
#-----**---- [ReadMe 画面] -----**------#
#---------------------------------------#
sub readme_html {
if ($tag_u) {
$tagcom = "使用できます。\n";
} else {
$tagcom = "使用できません。\n";
}
&head;
print ": BACK :\n";
print "\n
$b_title の使い方
\n";
print "\n";
print "\n
\n";
print "- この掲示板で書き込むコメントにははタグを$tagcom
\n";
print "- 記事は最大$max件まで保持できます。
\n";
print "- ブラウザをクッキー有効に設定している場合には、このBBSは、クッキー対応です。
\n";
print "- 名前とコメントは必須記入項目です。記入しないで投稿するとエラーになります。
\n";
print "- 半角カナは使用しないでください。文字化けの原因になります。
\n";
print "- このBBSは返信\機\能\があり、RESマークのフォームから返信します。
\n";
print "- 上部「SEARCH」のリンクから投稿記事のキーワード検索ができます。
\n";
print "- 投稿された記事は管理者の判断で予\告\無く全文削除、または部分削除する場合があります。
\n";
print "- Pass(英数字8文字以内)を入力して投稿されると、一番下のフォームから自分の記事の削除と編集がそのPassによってできます。\n";
print "削除したコメントが親記事だった場合は、レス記事もすべて削除されます。
\n";
print " \n | \n
\n
\n\n";
&foot;
}
#---------------------------------------#
#------**--- [クッキー発行] ---**-------#
#---------------------------------------#
sub set_cookie {
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 60*24*60*60);
$yearg += 1900;
if ($secg < 10) { $secg = "0$secg"; }
if ($ming < 10) { $ming = "0$ming"; }
if ($hourg < 10) { $hourg = "0$hourg"; }
if ($mdayg < 10) { $mdayg = "0$mdayg"; }
$tuki = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mong];
$youbi = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdayg];
$d_gmt = "$youbi, $mdayg\-$tuki\-$yearg $hourg:$ming:$secg GMT";
$cook = "name\:$name\,email\:$email\,url\:$url\,icon\:$icon\,color\:$color\,delkey\:$delkey";
print "Set-Cookie: MO_HPA=$cook; expires=$d_gmt\n";
}
#---------------------------------------#
#------**--- [クッキー取得] ---**-------#
#---------------------------------------#
sub get_cookie {
local(@pairs,$value);
$cookies = $ENV{'HTTP_COOKIE'};
@pairs = split(/;/,$cookies);
foreach $pair (@pairs) {
($name,$value) = split(/=/,$pair);
$name =~ s/ //g;
$DUMMY{ $name } = $value;
}
@pairs = split(/,/,$DUMMY{'MO_HPA'});
foreach $pair (@pairs) {
($name,$value) = split(/:/,$pair);
$COOKIE{ $name } = $value;
}
$c_name = $COOKIE{'name'};
$c_email = $COOKIE{'email'};
$c_url = $COOKIE{'url'};
$c_icon = $COOKIE{'icon'};
$c_color = $COOKIE{'color'};
$c_key = $COOKIE{'delkey'};
if ($FORM{'name'}) { $c_name = $FORM{'name'}; }
if ($FORM{'email'}) { $c_email = $FORM{'email'}; }
if ($FORM{'url'}) { $c_url = $url; }
if ($FORM{'icon'}) { $c_icon = $FORM{'icon'}; }
if ($FORM{'color'}) { $c_color = $FORM{'color'}; }
if ($FORM{'delkey'}) { $c_key = $FORM{'delkey'}; }
}
#---------------------------------------#
#---**---- [マスター管理画面] ----**----#
#---------------------------------------#
sub admin {
local(@lines,@NEW);
if ($FORM{'pass'} ne "$pass") { &error("パスワードが違います"); }
open(IN,"$log_f");
@lines = ;
close(IN);
@NEW = ();
foreach (0 .. $#lines) {
local($number,$date,$name,$email,$subject,$comment,$url,$color,$icon,$resnum) = split(/<>/,$lines[$_]);
if ($resnum == 0) { push(@NEW,$lines[$_]); }
}
@lines = reverse(@lines);
if (-s $log_f) { $l_size = -s $log_f; } else { $l_size = 0; }
&head;
print ": BACK :\n";
print "\n
*-- MASTER PAGE --*
\n";
print "現在のログのサイズ : $l_size バイト\n$comp_mess\n";
print "\n\n| ";
print " * 編集したい場合はその記事のタイトルをクリックしてリンクページに移動。 \n";
print "* 削除したい場合は記事にチェックを入れ『DELETE』ボタンを押す。 \n";
print "* 名前の下の数字は IPアドレスです。 (ブラウザのバージョンによって取得できない場合あり) \n";
print "* 親記事を削除するとレス記事もすべて削除されます。 ";
print " | \n
\n
\n";
print "\n";
print "\n\n";
$p_next = $p_end + 1;
$p_back = $page - $p_max;
if ($p_back >= 0) {
print " | \n";
}
if ($p_end ne $d_end) {
print " | \n";
}
print "
\n
\n";
print "Page : ";
$p = 0;
for ($i = 0; $i <= $pg; $i++) {
$ps = $page / $p_max;
if ($i eq $ps) { print "$i /\n"; }
else { print "$i /\n"; }
$p += $p_max;
}
print "\n";
if ($back_up) {
if (-e $bup_f) {
$back_d = int(-M $bup_f); $back_s = -s $bup_f;
$back_c = "$back_s バイト、$back_d 日前のバックアップあります。";
} else {
$back_c = "バックアップはありません。";
}
print "\n";
print "\n\n";
}
&foot;
}
#---------------------------------------#
#----**--- [コメント編集画面] ---**-----#
#---------------------------------------#
sub edit_html {
if ($mo eq "") {
if ($FORM{'admin'} eq "") { &error("登録NO が未入力です"); }
if ($delkey eq "") { &error("Pass が未入力です"); }
$kiji = $FORM{'admin'};
} elsif ($mo == 1) {if ($FORM{'pass'} ne "$pass") { &error("パスワードが違います"); }}
open(IN,"$log_f");
@lines = ;
close(IN);
foreach $line (@lines) {
local($number,$date,$name,$email,$subject,$comment,$url,$color,$icon,$resnum,$epasswd,$ip) = split(/<>/,$line);
if ($kiji eq "$number") {
if ($mo eq "") {
if ($epasswd eq "") { &error("この記事はPassの登録がありません"); }
&decry($epasswd);
if ($match eq "NO") { &error("パスワードが違います"); }
$edit_l = "$cgi_f";
} else {
$edit_l = "$cgi_f?mode=admin&pass=$FORM{'pass'}";
}
$resnum =~ s/\n/0/g;
$delkey =~ s/\n//g;
if ($FORM{'pass'} eq "") { $FORM{'pass'} = $delkey; }
$comment =~ s/
/\n/g;
if ($tag_u) { $comment =~ s/</g; $comment =~ s/>/>/g; }
&head;
print ": BACK :\n";
print "
Edit --$number
\n\n";
print "\n\n";
&foot;
}
}
}
#---------------------------------------#
#----**--- [パスワード暗号化] ---**-----#
#---------------------------------------#
sub encry {
srand();
@salts = ('a'..'z','A'..'Z','0'..'9','.','/');
$salt = $salts[int(rand(64))] . $salts[int(rand(64))];
$epasswd = crypt($FORM{'delkey'},$salt);
}
#---------------------------------------#
#-----**--- [パスワード解読] ---**------#
#---------------------------------------#
sub decry {
if ($epasswd =~ /^\$1\$/) { $crptkey = 3; }
else { $crptkey = 0; }
$match = "NO";
if (crypt($FORM{'delkey'},substr($epasswd,$crptkey,2)) eq $epasswd) { $match = "OK"; }
}
#---------------------------------------#
#----**------- [削除処理] -------**-----#
#---------------------------------------#
sub l_delete {
local(@lines,$line,@NEW);
if ($mo eq "") {
if ($FORM{'admin'} eq "") { &error("登録NO が 未入力です"); }
if ($delkey eq "") { &error("Pass が未入力です"); }
} elsif ($mo == 1) {
if ($FORM{'pass'} ne "$pass") { &error("パスワードが違います"); }
}
if (!&lock) { &error("只今、書き込み処理が混み合っています。
しばらく待ってもう一度アクセスしてください。"); }
open(IN,"$log_f") || &error("Cannot open $log_f");
@lines = ;
close(IN);
@NEW = ();
$d_flag = 0;
foreach $line (@lines) {
$line =~ s/\n//g;
local($s_number,$s_date,$s_name,$s_email,$s_subject,$s_comment,$s_url,$s_color,$s_icon,$s_resnum,$epasswd,$s_ip) = split(/<>/,$line);
$resnum =~ s/\n/0/g;
$epasswd =~ s/\n//g;
$s_ip =~ s/\n//g;
foreach $number (@d_) {
if ($number eq "$s_number" || $number eq "$s_resnum") {
if ($mo eq "" && $number eq "$s_number") {
if ($epasswd eq "") { &error("この記事は 削除Pass が存在しません"); }
&decry($epasswd);
if ($match eq "NO") { &error("パスワードが違います"); }
}
$line = "";
}
}
$n = "\n";
if ($line eq "") {
$line = "";
$n = "";
if ($d_flag == 0) { $line = "$s_number<><><><><><><><><>$s_number<><><>"; $n = "\n"; }
}
$d_flag = 1;
push (@NEW,"$line$n");
}
open (OUT,">$log_f");
print OUT @NEW;
close(OUT);
&unlock;
if ($mo) {
$comp_mess = "
\nCOMPLETED!!";
&admin;
}
}
#---------------------------------------#
#------**--- [編集記事置換] ---**-------#
#---------------------------------------#
sub e_write {
if ($mo) {
if ($FORM{'pass'} ne "$pass") { &error("パスワードが違います"); }
}
&wr_check;
if (!&lock) { &error("只今、書き込み処理が混み合っています。
しばらく待ってもう一度アクセスしてください。"); }
open(IN,"$log_f");
@lines = ;
close(IN);
@new = ();
$flag = 0;
foreach $line (@lines) {
$line =~ s/\n//g;
local($l_number,$l_date,$l_name,$l_email,$l_subject,$l_comment,$l_url,$l_color,$l_icon,$l_resnum,$l_delkey,$l_ip) = split(/<>/,$line);
if ($number eq "$l_number") {
if ($mo eq "") {
$epasswd = $l_delkey;
$FORM{'delkey'} = $FORM{'pass'};
&decry($epasswd);
if ($match eq "NO") { &error("パスワードが違います"); }
}
$line = "$number<>$l_date<>$name<>$email<>$subject<>$comment<>$url<>$color<>$icon<>$l_resnum<>$l_delkey<>$l_ip<>";
$flag = 1;
}
push(@new,"$line\n");
}
if ($flag == 0) { &error("編集Passが不正です。"); }
if ($flag == 1) {
open (OUT,">$log_f");
print OUT @new;
close(OUT);
}
&unlock;
if ($mo) {
$comp_mess = "
\nCOMPLETED!!";
&admin;
}
}
#---------------------------------------#
#------**--- [入力チェック] ---**-------#
#---------------------------------------#
sub wr_check {
if ($FORM{'name'} eq "") { &error("名前が未入力です"); }
if ($FORM{'comment'} eq "") { &error("コメントが未入力です"); }
## 文面の中に日本語が含まれているか確認 -------------------
if ($FORM{'comment'} !~ m/(\x81[\x5B|\x60]|\x82[\x9F-\xF2]|\x83[\x40-\x96]){3}/) {
&error("コメントが未入力です");
}
## 文面の中にあるリンクの数一定以上なら終了 -------------------
if ($FORM{'comment'} ne ''){
my $urlctn = ($FORM{'comment'} =~ s/http/http/g);
if (!$urlctn) { $urlctn = ($FORM{'comment'} =~ s/www\./www\./ig); }
if ($urlctn > 6){
&error('投稿制限の対象となっています。ご了承ください。');
}
}
if (length($delkey) > 8) { &error("削除Passは半角8文字以内です"); }
if ($icon eq "randam") {
srand;
$randam = @icon_r-1;
$icon = $icon_r[int(rand($randam))];
} elsif ($icon eq "master") {
if ($email ne "$master_m") { &error("Master用アイコンはご使用になれません"); }
$icon = $master_i;
}
}
#---------------------------------------#
#-------**--- [ロック処理] ---**--------#
#---------------------------------------#
sub lock {
local ($i,$flag,$lock_t);
$flag = 0;
foreach $i ( 1,2,3,4,5,6) {
#**-----flock-----**
if ($lock_u == 1) {
if (open(LOCK,">$lock_f")) {
if (flock(LOCK,6)) { $flag = 1; last ; }
}
#**-----mkdir-----**
} elsif ($lock_u == 2) {
if (mkdir($lock_f,0755)) { $flag = 1; last; }
elsif ($i == 1) {
$lock_t = (stat("$lock_f"))[9];
if ($lock_t < time - 600) { rmdir("$lock_f"); next; }
}
#**-----ロックなし-----**
} else { $flag = 1; last; }
sleep(1);
}
$SIG{'TERM'} = $SIG{'PIPE'} = $SIG{'HUP'} = "sigexit";
$flag;
$n_lock = 1;
}
sub sigexit {
if ($lock_u == 2) { rmdir("$lock_f"); exit; }
}
#---------------------------------------#
#-----**--- [アンロック処理] ---**------#
#---------------------------------------#
sub unlock {
if ($lock_u == 1) { close(LOCK); }
elsif ($lock_u == 2) { rmdir($lock_f); }
}
#---------------------------------------#
#-------**--- [メール通知] ---**--------#
#---------------------------------------#
sub mail {
$mail_subj = "$b_title の投稿のお知らせです。";
if ($resnum != 0 && $resnum ne "") { $resnums = "(res comment)"; }
&jcode'convert(*mail_subj,'jis');
&jcode'convert(*name,'jis');
&jcode'convert(*subject,'jis');
&jcode'convert(*comment,'jis');
&jcode'convert(*date,'jis');
$comment =~ s/
/\n/g;
$comment =~ s/<//g;
foreach $mailto ($master_m) {
if (open(MAIL,"| $s_mail $mailto")) {
print MAIL "X-Mailer: MO_HPA MAILER\n";
print MAIL "To: $mailto\n";
if ($email eq "") { $email = "***\@***.***"; }
print MAIL "From: $email\n";
print MAIL "Subject: $mail_subj\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-type: text/plain\n";
print MAIL "\n\n";
print MAIL "$mail_subj\n";
print MAIL "--Comment-----------------------------\n";
print MAIL "Time : $date\n";
print MAIL "Name : $name\n";
print MAIL "Email: $email\n";
if ($url ne "") { print MAIL "URL : http://$url\n"; }
if ($subject eq "") { $subject = "No Title"; }
print MAIL "Title: $subject $resnums\n\n";
print MAIL "$comment\n\n";
print MAIL "---------------------------------End--\n";
close(MAIL);
}
}
}
#---------------------------------------#
#------**--- [カウンタ処理] ---**-------#
#---------------------------------------#
sub counter {
if ($lock_u == 1) {
open(DATA, "+<$count_f") || &error2("Cannot open $count_f",'0');
flock(DATA, 2);
$cnt = ;
if ($FORM{'mode'} eq "") { $cnt++; }
seek(DATA, 0,0);
print DATA "$cnt";
close(DATA);
}
elsif ($lock_u == 2) {
if (!mkdir($cloc_f, 0755)) { exit; }
$loc_t = (stat("$cloc_f"))[9];
if ($loc_t < time - 600) { rmdir("$cloc_f"); next; }
$SIG{'TERM'} = $SIG{'PIPE'} = $SIG{'HUP'} = "sigexit";
open(DATA,"$count_f") || &error2("Cannot open $count_f",'0');
$cnt = ;
close(DATA);
if ($FORM{'mode'} eq "") { $cnt++; }
open(DATA,">$count_f") || &error2("Cannot write $count_f",'0');
print DATA $cnt;
close(DATA);
rmdir($cloc_f);
}
else {
open(DATA,"$count_f") || &error2("Cannot open $count_f",'0');
$cnt = ;
close(DATA);
if ($FORM{'mode'} eq "") { $cnt++; }
open(DATA,">$count_f") || &error2("Cannot write $count_f",'0');
print DATA $cnt;
close(DATA);
}
while(length($cnt) < $c_fig) { $cnt = 0 . $cnt; }
@cnts = split(//,$cnt);
print "\n\n\n";
if ($m_wid ne "") {
foreach (0 .. $#cnts) {
print " ";
}
} else {
print "$cnt";
}
print " | \n
\n
\n
\n";
}
#---------------------------------------#
#----**--- [過去ログファイル] ---**-----#
#---------------------------------------#
sub plog {
open(NO,"$plogc_f") || &error("Cannot open $plogc_f");
$n = ;
close(NO);
$plog_f = "$plog_dir\/$n\.txt";
unless(-e $plog_f) { &plog_n; }
$plog_size = $plog_max * 1024;
if (-s $plog_f > $plog_size) { &log_up; }
open(OUT,">>$plog_f") || &error("Cannot write $plog_f");
print OUT @log_data;
close(OUT);
}
#---------------------------------------#
#-**--- [過去ログカウントアップ] ---**--#
#---------------------------------------#
sub log_up {
$n++;
open(NUM,">$plogc_f") || &error("Cannot write $plogc_f");
print NUM "$n";
close(NUM);
$plog_f = "$plog_dir\/$n\.txt";
&plog_n;
}
#---------------------------------------#
#--**--- [過去ログファイル生成] ---**---#
#---------------------------------------#
sub plog_n {
open(OUT,">$plog_f") || &error("Cannot write $plog_f");
print OUT "";
close(OUT);
chmod(0666,"$plog_f");
}
#---------------------------------------#
#----**--- [バックアップ処理] ---**-----#
#---------------------------------------#
sub backup {
unless(-e $bup_f) { $plog_f = $bup_f; &plog_n; }
open(LOG,">$bup_f") || &error("Cannot write $bup_f");
print LOG @lines;
close(LOG);
}
#---------------------------------------#
#------**--- [ログ修復処理] ---**-------#
#---------------------------------------#
sub restore {
if ($n_lock) { &unlock; }
rename ($bup_f,$log_f) || &error("Rename Error");
$comp_mess = "
\nCOMPLETED!!";
&admin;
}
#---------------------------------------#
#------**--- [INDEX画像表示] ---**------#
#---------------------------------------#
sub img {
&head;
print"\n
* アイコン一覧 *\n
\n";
print"
\n\n\n";
local($i) = 0;
foreach (0..$#icon_f) {
if ($icon_f[$_] eq "randam" || $icon_f[$_] eq "master") { next; }
$i++;
print" $icon_n[$_] ";
if ($i >= $icon_h) { print"
"; $i = 0; }
}
print " | \n
\n
\n";
print "\n";
print "\n
\n";
&foot;
}