#!/usr/bin/perl

#┌─────────────────────────────────
#│ Web Forum v5
#│ admin.cgi - 2007/02/16
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#│ 
#│ Web Forum Antispan Version Modified by isso.
#│ http://swanbay-web.hp.infoseek.co.jp/index.html
#└─────────────────────────────────

# 外部ファイル取り込み
require './init.cgi';
require $jcodepl;
require $cgi_lib;
require $uploadpl;

# 表示モード設定
if ($boardmode && -s "$colordata") { &read_color; }

&agent;
&decode;
$in{"$bbscheckmode"} = &decode_bbsmode($in{"$bbscheckmode"});
if ($in{'pass'} eq "") { &enter; }
elsif ($mode eq "edit" && $in{'no'}) { &edit; }
elsif ($mode eq "edit2" && $in{'no'}) { &edit2; }
elsif ($mode eq "dele" && $in{'no'}) { &dele; }
elsif ($mode eq "Maintenance") { &Maintenance; }
elsif ($mode eq "sage") { &sage; }
elsif ($mode eq "spam") { &spam; }
elsif ($mode eq "spammsg") { &spammsg; }
elsif ($mode eq "spamclear") { &spamclear; }
elsif ($mode eq "spamdata") { &spamdata; }
elsif ($mode eq "editspam") { &editspam; }
elsif ($mode eq "deltempimg") { &deltempimg; }
elsif ($mode eq "admin_repost_form") { &admin_repost_form; }
elsif ($mode eq "sendmaillog") { &sendmaillog; }
elsif ($mode eq "maillogclear") { &maillogclear; }
elsif ($mode eq "htmllog") { require $pasthtmlpl; &htmllog; }
elsif ($mode eq "set_cmode") { &set_cmode; }
elsif ($mode eq "cmode") { &save_cmode; }
elsif ($mode eq "chcolor") { &change_color; }
elsif ($mode eq "color_clear") { &color_clear; }
&loglist;

#-------------------------------------------------
#  リスト画面
#-------------------------------------------------
sub loglist {
	local($no,$re,$lx,$sub,$eml,$url,$nam,$dat,$msg,$t,
	$hos,$pw,$wr,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni);

	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	&header;
	print <<EOM;
<form action="$script">
<table border="0"><tr>
<td>
<input type="submit" value="掲示板に戻る"></form>
</td>
EOM
	if ($boardmode) {
	print <<EOM;
<td>
<form action="$admin" method="$method">
<input type="hidden" name="mode" value="set_cmode">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" カラーモード設定 ">
</form>
</td>
EOM
	}

	if (-e $spamdata) {
	print <<EOM;
<td>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="spamdata">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value="NGワードの一括編集"><br>
</form>
</td>
EOM
	}

	if(-s $spamlogfile) {
	print <<EOM;
<td>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="spam">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value="$postmodeを閲覧">
</form>
</td>
EOM
	}

	if($webmail && (-e "$mailchk$sendmaillog")) {
	print <<EOM;
<td>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="sendmaillog">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value="Webmail送信履歴を閲覧">
</form>
</td>
EOM
	}
	print <<EOM;
<td>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="Maintenance">
<input type="hidden" name="pass" value="$in{'pass'}">
EOM
	if (-e "maintenance") {
		print "<input type=\"hidden\" name=\"ma\" value=\"0\">\n",
		"<input type=\"submit\" value=\"保守点検モードを解除する\"></form>\n";
	} else { print "<input type=\"hidden\" name=\"ma\" value=\"1\">\n",
		"<input type=\"submit\" value=\"保守点検モードにする\"></form>\n";
	}
	print <<EOM;
</td>
</tr>
</table>
<hr>
<ul>
<li>登録した先頭記事番号のツリーを強制的にsage指定できます。
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="sage">
<input type="hidden" name="pass" value="$in{'pass'}">
EOM

	if (-e $sagefile) {
		open(IN,"$sagefile");
		$sage = <IN>;
		close(IN);
		@sage = split(/\,/,$sage);
	} else { open(OUT,">$sagefile");
		chmod (0666,$sagefile);
		print OUT "";
	}

	foreach (0 .. $#sage+2) {
		print "<input type=\"text\" name=\"sage$_\" size=\"5\" value=\"$sage[$_]\">\n";
	}
	$sn = $#sage+2;
	print <<EOM;
<input type="hidden" name="sn" value="$sn">
<input type="submit" value="登録する">
</form>
</ul>
<hr>
EOM

	if($pastloghtml) {
		print <<EOM;
<ul>
<li>過去ログの新規追加分をhtmlファイル化します。<br>
過去ログが多いときはかなり時間がかかります。<br>
保守点検モードにしてから行ってください。
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="htmllog">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value="htmlファイルの追加登録">
</form>
html過去ログファイルリストは<A HREF="$loglist">こちら</A>に作成されます。
</ul>
<hr>
EOM
	}

	# 不要画像ファイルの削除
	open(IN,"$logfile") || &error("ログファイル $logfile がありません。");
	@lines = <IN>;
	close(IN);
	$top = shift(@lines);
	local($count,$ip,$tim) = split(/<>/, $top);

	opendir IMGDIR,"$imgdir";
#	@BGIMG = grep(/\.jpg/i,readdir IMGDIR);
	@BGIMG = grep { /\.jpg/i || /\.gif/i || /\.png/i } readdir IMGDIR;
	close IMGDIR;

	my $i = 0; my @temp = ();
	foreach (@BGIMG) {
		($uptime[$i],$tail[$i]) = split(/\./, $_);
		if ($uptime[$i] > $count) { push (@temp,"$_"); }
		$i++;
	}

	if (@temp) {
	print <<EOM;
<ul>
<li>不要画像ファイルの削除<br>
プレビューモードでアップロードし掲載をやめた画像やスパム投稿による画像を削除できます。
<table border="0">
EOM
		require $uploadpl;
		foreach (@temp) {
			if ($imgurl) { $ImgFile = "$imgurl$_"; } else { $ImgFile = "$imgdir$_"; }
			if ($ImgFile =~ /(\.\w+)$/i) { $tail = $1; }
			# 画像サイズ取得
			if ($tail eq ".jpg") { ($wi, $hi) = &JpegSize("$ImgFile"); }
			elsif ($tail eq ".gif") { ($wi, $hi) = &GifSize("$ImgFile"); }
			elsif ($tail eq ".png") { ($wi, $hi) = &PngSize("$ImgFile"); }
			$size = int(( -s "$ImgFile" )/1000);
			$size = ($size < 1000) ? ($size)."kB" : (int(($size+50)/100)/10)."MB";

			print <<EOM;
<tr><td><A HREF="$ImgFile" target="_blank">この画像[ $_ ($wi×$hi $size) ]を</A>
<td><form action="$admin" method="POST">
<input type="hidden" name="mode" value="deltempimg">
<input type="hidden" name="delimg" value="$imgdir$_">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value="削除">
</form>
</td>
</tr>
EOM
		}
		print "</table>\n</ul>\n<hr>";
	}

	if ($idmode) {
		print "<ul>";
		if ($in{'idmode'} eq "idcode") {
			print "<li>通常表\示に切り替えます。\n";
		} else { print "<li>IDコード順表\示に切り替えます。\n"; }

		print "<form action=\"$admin\" method=\"POST\">";

		if ($in{'idmode'} eq "idcode") {
			print "<input type=\"hidden\" name=\"idmod\" value=\"normal\">\n",
			"<input type=\"submit\" value=\"通常表\示に切り替える\"><br>\n";
		} else { print "<input type=\"hidden\" name=\"idmode\" value=\"idcode\">\n",
			"<input type=\"submit\" value=\"IDコード順表\示に切り替える\"'><br>\n";
		}
		print "<input type=\"hidden\" name=\"pass\" value=\"$in{'pass'}\">";
		print "</form></ul><hr>";
	}
	print <<EOM;
<ul>
<li>処理を選択して送信ボタンを押してください。
<li>ツリーの先頭記事を削除すると、ツリーごと一括削除されます。
</ul>
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="idmode" value="$in{'idmode'}">
処理 <select name="mode">
<option value="edit">修正
<option value="dele">削除
</select>
<input type="submit" value="送信する">
<dl>
EOM

	if ($in{'idmode'} eq "idcode") {
	open(IN,"$logfile") || &error("ログファイル $logfile がありません。");
	$top = <IN>;
	while (<IN>) {
		chomp;
		($no,$reno,$xl,$sub,$email,$url,$name,$date,$msg,$tim,$h,
		$pw,$wrap,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni) = split(/<>/);
		$no{$no}  = $no;
		$cnt{$no} = $tim;
		$rno{$no} = $reno;
		$dat{$no} = $date;
		$nam{$no} = $name;
		$hos{$no} = $h;
		$sub{$no} = $sub;
		$oya{$no} = $oya;
		$msg{$no} = $msg;
		$id{$no}  = $id;
		$uni{$no}  = $uni;
		$color{$no} = $color;
	}
	close(IN);

	print "<hr><blockquote><table border=\"0\">";

	# ソート処理
	$i = 0;
	$x = 0;
	$p_tree = $sortcnt;
	foreach (sort { ($id{$b} cmp $id{$a}) } keys(%cnt)) {
		$i++;
		if ($i < $page + 1) { next; }
		if ($i > $page + $p_tree) { next; }

		$msg{$_} =~ s/<br>/ /g;
		$msg{$_} =~ s/</&lt;/g;
		$msg{$_} =~ s/>/&gt;/g;
		if (length($msg{$_}) > 60) { $msg{$_} = substr($msg{$_},0,58); $msg{$_} .= '..'; }
		if (!$uni{$_}) { $uni{$_} = "-----------"; }
		if (!$id{$_})  { $id{$_}  = "--------"; }

		print "<tr><td><input type=\"checkbox\" name=\"no\" value=\"$no{$_}\">",
		"[$no{$_}]</td><td> <b>$sub{$_}</b> </td>";
		print "<td> <B>$nam{$_}</B> </td>";
		if ( $id{$_} ) {
			print " <td>[ID:<font color=\"$idc\">$id{$_}【<font color=\"$li\">$uni{$_}</font>】</font>]</td>";
		}
		print "<td> $dat{$_} </td><td>【<font color=\"$sub_color\">$hos{$_}</font>】</td></tr>\n";
		print "<tr><td colspan=\"6\"><span style=\"font-size:11px;color:$no_color;\">",
		"$msg{$_}</span></td></tr>\n";
	}
	print "</table></blockquote>\n";

	} else {

	$i = 0;
	$x = 0;
	open(IN,"$logfile") || &error("Open Error: $logfile");
	$top = <IN>;
	while (<IN>) {
		($no,$re,$lx,$sub,$eml,$url,$nam,$dat,$msg,$t,
		$hos,$pw,$wr,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni) = split(/<>/);
		if ($re == 0) { $i++; }
		if ($i < $page + 1) { next; }
		if ($i > $page + $p_tree) { next; }

		if ($lx) { $sp="&nbsp;&nbsp;&nbsp;" x $lx; } else { $sp=""; }
		$msg =~ s/<br>/ /g;
		$msg =~ s/</&lt;/g;
		$msg =~ s/>/&gt;/g;
		if (length($msg) > 60) { $msg = substr($msg,0,58); $msg .= '..'; }

		print "<dt>";
		print "<hr>" if ($no == $oya);
		print "$sp<input type=\"checkbox\" name=\"no\" value=\"$no\">[$no] <b>$sub</b> ";
		print "- <B>$nam</B> ";
		if ( $id ) { print " <small>[ID:<font color=\"$idc\">$id</font>]</small> "; }
		print " $dat 【$hos】\n";
		print "<dd>$sp<span style=\"font-size:11px;color:$no_color;\">$msg</span>\n";

	}
	close(IN);

	}

	print "<dt><hr></dl></form>\n";

	$next = $page + $p_tree;
	$back = $page - $p_tree;

	print "<table><tr>\n";
	if ($back >= 0) {
		print "<td><form action=\"$admin\" method=\"POST\">\n";
		print "<input type=\"hidden\" name=\"pass\" value=\"$in{'pass'}\">\n";
		print "<input type=\"hidden\" name=\"idmode\" value=\"$in{'idmode'}\">\n";
		print "<input type=\"hidden\" name=\"page\" value=\"$back\">\n";
		print "<input type=\"submit\" value=\"前画面\"></form></td>\n";
	}
	if ($next < $i) {
		print "<td><form action=\"$admin\" method=\"POST\">\n";
		print "<input type=\"hidden\" name=\"pass\" value=\"$in{'pass'}\">\n";
		print "<input type=\"hidden\" name=\"idmode\" value=\"$in{'idmode'}\">\n";
		print "<input type=\"hidden\" name=\"page\" value=\"$next\">\n";
		print "<input type=\"submit\" value=\"次画面\"></form></td>\n";
	}

	print <<EOM;
</tr>
</table>
<DIV ALIGN="RIGHT"><B>$ver</B></DIV><br>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  編集画面
#-------------------------------------------------
sub edit {
	local($no,$re,$x,$sub,$eml,$url,$nam,$dat,$msg,$t,
	$ho,$pw,$wr,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni);

	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	if ($in{'no'} =~ /\0/) { &error("修正処理は１記事づつです"); }

	# ログを開く
	open(IN,"$logfile") || &error("Can't open $logfile");
	$top = <IN>;
	while (<IN>) {
		($no,$re,$x,$sub,$eml,$url,$nam,$dat,$msg,$t,
		$ho,$pw,$wr,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni) = split(/<>/);
		last if ($in{'no'} == $no);
	}
	close(IN);

	$msg =~ s/<br>/\r/g;

	# 編集フォームを出力
	&header;
	print <<EOM;
<form>
<input type="button" value="前画面に戻る" onclick="history.back()">
</form>
▼変更したい部分のみ修正し送信ボタンを押してください。
<form action="$admin" method="POST" enctype="multipart/form-data">
<input type="hidden" name="mode" value="edit2">
<input type="hidden" name="no" value="$in{'no'}">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="idmode" value="$in{'idmode'}">
<table border="0">
<tr>
  <td><B>投稿者</B></td>
  <td><input type="text" name="name" value="$nam" size="28"></td>
</tr>
EOM
	if ($nam_color) {
	
		print "<tr><td nowrap><b>文字色</b></td><td>\n";

		# 文字色判定
		my $cflag = 0;
		foreach (0 .. $#COLORS) {
			if ($color =~ /$COLORS[$_]/i) { $cflag = 1; last; }
		}
		# 管理者色
		if ($color eq $a_color && $in{'pass'} eq $pass) { $COLORS[0] = $a_color; }
		# 文字色不明
		if (!$cflag) { $color = $COLORS[0]; }

		foreach (0 .. $#COLORS) {
		if ($color eq "$COLORS[$_]") {
				print "<input type=\"radio\" name=\"color\" value=\"$COLORS[$_]\" checked>";
				print "<font color=\"$COLORS[$_]\">■</font>\n";
			} else {
				print "<input type=\"radio\" name=\"color\" value=\"$COLORS[$_]\">";
				print "<font color=\"$COLORS[$_]\">■</font>\n";
			}
		}
	}
	print <<EOM;
<tr>
  <td><B>Ｅメール</B></td>
  <td><input type="text" name="email" value="$eml" size="28">
EOM

	print "<select name=\"smail\">\n";
	$selected0 = ""; $selected1 = "";
	if ($sml eq "1") { $selected1 = "selected";
	} else { $selected0 = "selected"; }
	print "<option value=\"0\" $selected0>$mailopt",
	"<option value=\"1\" $selected1>$usewebmail",
	"</select></td></tr>\n";

	print <<EOM;
</td>
</tr>
<tr>
  <td><B>タイトル</B></td>
  <td><input type="text" name="sub" value="$sub" size="38"></td>
</tr>
<tr>
  <td><B>URL</B></td>
  <td><input type="text" name="url" value="$url" size="55"></td>
</tr>
<tr>
  <td colspan="2"><B>メッセージ</B>
EOM

	@w1 = ('手動改行', '強制改行', '図表モード');
	@w2 = ('soft', 'hard', 'pre');
	foreach (0 .. 2) {
		if ($wr eq $w2[$_]) {
			print "<input type=\"radio\" name=\"wrap\" value=\"$w2[$_]\" checked>$w1[$_]\n";
		} else {
			print "<input type=\"radio\" name=\"wrap\" value=\"$w2[$_]\">$w1[$_]\n";
		}
	}

	print <<EOM;
<br><textarea name="message" cols="64" rows="10" wrap="soft">$msg</textarea></td>
</tr>
EOM

	print "<tr><td><b>画像File</b></td>",
	"<td><input type=\"file\" name=\"upfile\" size=\"28\">(←<B>$imagesize程度まで</B>)\n";
	if ( $img ){
		print "&nbsp;<A HREF=\"$img\" target=\"_blank\">画像</A>\n",
		"<input type=\"hidden\"  name=\"img\" value=\"$img\">\n",
		"&nbsp;&nbsp;<input type=\"checkbox\" name=\"delimg\" value=\"yes\">削除\n";
	}
	print "</td></tr>\n";

	if ($exifinfo) {
		print "<tr><td nowrap class=\"form\"><b>Exif情報</b></td>\n<td>";
		print "<select name=delexif>\n";
		$selected2 = ""; $selected3 = "";
		if ($delexif eq "yes") { $selected3 = "selected";
		} else { $selected2 = "selected"; }
		print "<option value=\"no\" $selected2>削除しない",
		"<option value=\"yes\" $selected3>削除する",
		"</select></td></tr>\n";
	}

	print <<EOM;
</table>
<p>
<input type="submit" value=" 送信する "><input type="reset" value="リセット">
</form>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  編集実行
#-------------------------------------------------
sub edit2 {
	local($no,$re,$x,$sub,$eml,$url,$nam,$dat,$msg,$t,
	$ho,$pw,$wr,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni);

	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	# エスケープ
	$in{'sub'}  =~ s/"/&quot;/g;
	$in{'url'}  =~ s/"/&quot;/g;
	$in{'name'} =~ s/"/&quot;/g;

	# 画像ファイル削除
	if ( $in{'delimg'} eq 'yes' ) { &DeleImg($in{'img'}); $in{'img'}= ''; }

	# Exif情報の削除
	if ($in{'delexif'} eq "yes") { &JPEGCommentCut($in{'img'}); }

	# ファイル添付処理
	$imgno = $in{'no'}; if ($in{'upfile'}) { ($img,$wi,$hi) = &UpFile($imgno); }

	# ログを開く
	local($top,@new);
	open(DAT,"+< $logfile") || &error("Open Error: $logfile");
	eval "flock(DAT, 2);";
	$top = <DAT>;
	while (<DAT>) {
		chomp;
		($no,$re,$x,$sub,$eml,$url,$nam,$dat,$msg,$t,
			$ho,$pw,$wr,$oya,$sml,$res,$color,$im,$w,$h,$id,$uni) = split(/<>/);
		if ($in{'no'} == $no) {
			if ($in{'upfile'}) { $im = $img; $w = $wi; $h = $hi; }
			$_ = "$no<>$re<>$x<>$in{'sub'}<>$in{'email'}<>$in{'url'}<>$in{'name'}<>$dat<>$in{'message'}<>$t<>$ho<>$pw<>$in{'wrap'}<>$oya<>$in{'smail'}<>$res<>$in{'color'}<>$im<>$w<>$h<>$id<>$uni<>";
		}
		push(@new,"$_\n");
	}

	# ログを更新
	unshift(@new,$top);
	seek(DAT, 0, 0);
	print DAT @new;
	truncate(DAT, tell(DAT));
	close(DAT);

	# 初期画面に戻る
	&loglist;
}

#-------------------------------------------------
#  削除処理
#-------------------------------------------------
sub dele {
	local($no,$re,$x,$sub,$eml,$url,$nam,$dat,$msg,$t,
	$ho,$pw,$wr,$oya,$flag,$top,$del,@del,@new,$color,$img,$wi,$hi,$id,$uni);

	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	# ログを開く
	local($flag,$top,@new);
	open(DAT,"+< $logfile") || &error("Open Error: $logfile");
	eval "flock(DAT, 2);";
	$top = <DAT>;
	while (<DAT>) {
		$flag = 0;
		($no,$re,$x,$sub,$eml,$url,$nam,$dat,$msg,$t,
		$ho,$pw,$wr,$oya,$sml,$res,$color,$img,$wi,$hi,$id,$uni) = split(/<>/);

		# マッチング
		foreach $del ( split(/\0/, $in{'no'}) ) {
			if ($del == $no || $del == $oya) {
				$flag = 1;
				# 画像ファイル削除
				&DeleImg($img); $img= ''; 
				last;
			}
		}
		if (!$flag) { push(@new,$_); }
	}

	# ログを更新
	unshift(@new,$top);
	seek(DAT, 0, 0);
	print DAT @new;
	truncate(DAT, tell(DAT));
	close(DAT);

	# 初期画面に戻る
	&loglist;
}

#-------------------------------------------------
#  入室画面
#-------------------------------------------------
sub enter {
	&header;
	print <<EOM;
<div align="center">
<table width="360">
<tr><td align="center">
<fieldset>
<legend><b>パスワードを入力してください</b></legend>
<form action="$admin" method="POST">
<input type="password" name="pass" size="12">
<input type="submit" value=" 認証 ">
</form>
</fieldset>
</td></tr>
</table>
<script language="javascript">
<!--
self.document.forms[0].pass.focus();
//-->
</script>
</div>
<!-- $ver -->
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  強制sage
#-------------------------------------------------
sub sage {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	$sage = $in{"sage0"};
	foreach (1 .. $in{"sn"}) {
		$sage = "$sage,$in{\"sage$_\"}";
	}
	$sage =~ s/\,{2,}/\,/g;

	push (@sage,"$sage");
	open(OUT,">$sagefile") || &error("Write Error");
	print OUT @sage;
	close(OUT);
	&loglist;
}

#-------------------------------------------------
#  メンテナンス
#-------------------------------------------------
sub Maintenance {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	if ($in{'ma'}) {
		open(OUT,">maintenance") || &error("File Write Error");
		print OUT "$Maintenance";
		close(OUT);
	} else {
		unlink("maintenance")
	}
	&loglist;
}

#-------------------------------------------------
#  画像ファイル削除
#-------------------------------------------------
sub deltempimg {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
	if ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	unlink("$in{'delimg'}");
	&loglist;
}

#-------------------------------------------------
#  カラーモード設定
#-------------------------------------------------
sub set_cmode {
	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	&header;
	print <<EOM;
<table border="0">
<tr><td><form action="$script">
<input type="submit" value="&lt; 掲示板へ">
</form>
</td><td>
<form action="$admin" method="$method">
<input type="hidden" name="mode" value="admin">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
</td></tr>
</table></div>
<hr>
<form action="$admin" method="$method">
<input type="hidden" name="mode" value="cmode">
<input type="hidden" name="pass" value="$in{'pass'}">
<p><table border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="$tbl_col0">
<td bgcolor="$tbl_col0">カラーモードを変更することができます。</td>
</tr>
<tr>
<td bgcolor="$tbl_col0">
<table border="$border" cellspacing="1" cellpadding="5">
<td bgcolor="$tbl_color">
EOM

	open(COL,"$colorfile") || &error("カラーモードデータファイル $colorfile がありません。");
	$colormode = <COL>;
	close(COL);

	print "カラーモードを&nbsp;<select name=colormode>\n";
	$selected0 = ""; $selected1 = ""; $selected2 = ""; $selected3 = ""; $selected4 = "";
	$selected5 = ""; $selected6 = ""; $selected7 = ""; $selected8 = ""; $selected9 = "";
	if    ($colormode eq "1") { $selected1 = "selected"; }
	elsif ($colormode eq "2") { $selected2 = "selected"; }
	elsif ($colormode eq "3") { $selected3 = "selected"; }
	elsif ($colormode eq "4") { $selected4 = "selected"; }
	elsif ($colormode eq "5") { $selected5 = "selected"; }
	elsif ($colormode eq "6") { $selected6 = "selected"; }
	elsif ($colormode eq "7") { $selected7 = "selected"; }
	elsif ($colormode eq "8") { $selected8 = "selected"; }
	elsif ($colormode eq "9") { $selected9 = "selected"; }
	else { $selected0 = "selected"; }
	print 
	"<option value=0 $selected0>オリジナル系",
	"<option value=1 $selected1>オレンジ系",
	"<option value=2 $selected2>ピンク系",
	"<option value=3 $selected3>ブルー系",
	"<option value=4 $selected4>グリーン系",
	"<option value=5 $selected5>イエロー系",
	"<option value=6 $selected6>ヴァイオレット系",
	"<option value=7 $selected7>ホワイト系",
	"<option value=8 $selected8>グレー系",
	"<option value=9 $selected9>ブラック系",
	"</select>&nbsp;に&nbsp;\n";

	print <<EOM;
<input type="submit" value="設定する">
</td></tr></table>
</td></tr></table>
</form>
<br>
<p><table border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="$tbl_col0">
<td bgcolor="$tbl_col0">
カラーモードを変更後に、下記の設定を変更することで掲示板を詳細にカスタマイズすることができます。
</td></tr>
<tr>
<td bgcolor="$tbl_col0">
<table border="$border" cellspacing="1" cellpadding="5">
<td bgcolor="$tbl_color">
<table border="0">
<tr>
<form action="$admin" method="$method">
<input type="hidden" name="mode" value="chcolor">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="colormode" value="$colormode">
<td>背景色</td><td><input type="text" name="bc" size="8" value="$bc"></td>
<td>文字色</td><td><input type="text" name="te" size="8" value="$te"></td>
<td>ツリー背景色</td><td><input type="text" name="bc2" size="8" value="$bc2"></td>
<td>タイトル文字色</td><td><input type="text" name="t_color" size="8" value="$t_color"></td>
</tr><tr>
<td>記事表\示部の下地色</td><td><input type="text" name="tbl_color" size="8" value="$tbl_color"></td>
<td>親記事欄背景色</td><td><input type="text" name="tbl_col0" size="8" value="$tbl_col0"></td>
<td>スレッド枠サイズ</td><td><input type="text" name="thr_brd" size="8" value="$thr_brd"></td>
<td>ボタン背景色</td><td><input type="text" name="btn_col" size="8" value="$btn_col"></td>
</tr><tr>
<td>投稿フォーム背景色</td><td><input type="text" name="frm_bc" size="8" value="$frm_bc"></td>
<td>投稿フォーム文字色</td><td><input type="text" name="frm_tx" size="8" value="$frm_tx"></td>
<td>投稿フォーム枠色</td><td><input type="text" name="frm_brd" size="8" value="$frm_brd"></td>
<td>投稿フォーム枠サイズ</td><td><input type="text" name="frm_solid" size="8" value="$frm_solid"></td>
</tr><tr>
<td>ボタン文字色</td><td><input type="text" name="btx_col" size="8" value="$btx_col"></td>
<td>ボタン枠色</td><td><input type="text" name="btn_solid" size="8" value="$btn_solid"></td>
<td>メニュー文字色</td><td><input type="text" name="menu_chr" size="8" value="$menu_chr"></td>
<td>メニュー背景色</td><td><input type="text" name="menu_bg" size="8" value="$menu_bg"></td>
</tr><tr>
<td>メニュー枠色</td><td><input type="text" name="menu_solid" size="8" value="$menu_solid"></td>
<td>メニュー枠サイズ</td><td><input type="text" name="menu_brd" size="8" value="$menu_brd"></td>
<td>タイトル一覧背景色</td><td><input type="text" name="allt_col" size="8" value="$allt_col"></td>
<td>タイトル一覧枠色</td><td><input type="text" name="allt_solid" size="8" value="$allt_solid"></td>
</tr><tr>
<td>タイトル一覧枠サイズ</td><td><input type="text" name="allt_brd" size="8" value="$allt_brd"></td>
<td>コメント欄背景色</td><td><input type="text" name="tbl_col1" size="8" value="$tbl_col1"></td>
<td>テキストエリア枠サイズ</td><td><input type="text" name="tarea_brd" size="8" value="$tarea_brd"></td>
<td>入力欄枠サイズ</td><td><input type="text" name="btn_brd" size="8" value="$btn_brd"></td>
</tr><tr>
<td>投稿フォーム下地色</td><td><input type="text" name="formCol1" size="8" value="$formCol1"></td>
<td>投稿フォーム文字色</td><td><input type="text" name="formCol2" size="8" value="$formCol2"></td>
<td>投稿ボタン文字色</td><td><input type="text" name="post_chr" size="8" value="$post_chr"></td>
<td>投稿ボタン背景色</td><td><input type="text" name="post_bg" size="8" value="$post_bg"></td>
</tr><tr>
<td>投稿ボタン枠色</td><td><input type="text" name="post_solid" size="8" value="$post_solid"></td>
<td>投稿ボタン枠サイズ</td><td><input type="text" name="post_brd" size="8" value="$post_brd"></td>
<td>投稿キー画像の文字色</td><td><input type="text" name="moji_col" size="8" value="$moji_col"></td>
<td>投稿キー画像の背景色</td><td><input type="text" name="back_col" size="8" value="$back_col"></td>
</tr><tr>
<td>ラジオボタン枠サイズ</td><td><input type="text" name="radio_brd" size="8" value="$radio_brd"></td>
<td>スレッド全体枠幅</td><td><input type="text" name="border" size="8" value="$border"></td>
<td>スレッド枠幅</td><td><input type="text" name="cellspacing" size="8" value="$cellspacing"></td>
<td>スレッド枠余白</td><td><input type="text" name="cellpadding" size="8" value="$cellpadding"></td>
</tr><tr>
<td>親記事マーク</td><td><input type="text" name="treehead" size="8" value="$treehead"></td>
<td>コメントマーク</td><td><input type="text" name="c_mark" size="8" value="$c_mark"></td>
<td>メッセージ左マージン</td><td><input type="text" name="margin_left" size="8" value="$margin_left"></td>
<td>メッセージ右マージン</td><td><input type="text" name="margin_right" size="8" value="$margin_right"></td>
</tr><tr>
<td>記事 [タイトル] 色</td><td><input type="text" name="sub_color" size="8" value="$sub_color"></td>
<td>記事 [タイトル] 文字数</td><td><input type="text" name="sub_len" size="8" value="$sub_length"></td>
<td>上部タイトル背景色</td><td><input type="text" name="backCol" size="8" value="$backCol"></td>
<td>上部タイトル文字色</td><td><input type="text" name="charCol" size="8" value="$charCol"></td>
</tr><tr>
<td>
<br>
<input type="submit" value="設定変更する">
</td>
</tr>
</table>
</td></tr></table>
</td></tr></table>
</form>
<br>
<br>
<p>
<form action="$admin" method="$method">
<input type="hidden" name="mode" value="color_clear">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value="設定を初期化する">
</form>
</div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  カラーモード保存
#-------------------------------------------------
sub save_cmode {
	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	open(OUT,">$colorfile") || &error("カラーデータファイル $colorfile を正しく更新できませんでした。");
	print OUT "$in{'colormode'}";
	close(OUT);

	# 表示モード設定
	if ($boardmode && -s "$colordata") { &read_color; }
	&loglist;
}

#-------------------------------------------------
#  カラーモード設定変更
#-------------------------------------------------
sub change_color {
	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	open(PARA,"$colordata") || &error("カラーデータファイル $colordata がありません。");
	@para = <PARA>;
	close(PARA);

	$para[$in{'colormode'}] = "$in{'bc'}<>$in{'te'}<>$in{'bc2'}<>$in{'t_color'}<>$in{'tbl_color'}<>$in{'tbl_col0'}<>$in{'thr_brd'}<>$in{'menu_chr'}<>$in{'menu_bg'}<>$in{'menu_solid'}<>$in{'menu_brd'}<>$in{'allt_col'}<>$in{'allt_solid'}<>$in{'allt_brd'}<>$in{'tbl_col1'}<>$in{'tarea_brd'}<>$in{'btn_col'}<>$in{'btx_col'}<>$in{'btn_solid'}<>$in{'btn_brd'}<>$in{'formCol1'}<>$in{'formCol2'}<>$in{'post_chr'}<>$in{'post_bg'}<>$in{'post_solid'}<>$in{'post_brd'}<>$in{'moji_col'}<>$in{'back_col'}<>$in{'radio_brd'}<>$in{'border'}<>$in{'cellspacing'}<>$in{'cellpadding'}<>$in{'treehead'}<>$in{'c_mark'}<>$in{'margin_left'}<>$in{'margin_right'}<>$in{'sub_color'}<>$in{'sub_len'}<>$in{'backCol'}<>$in{'charCol'}<>$in{'frm_brd'}<>$in{'frm_bc'}<>$in{'frm_tx'}<>$in{'frm_solid'}<>\n";

	# 設定ファイルを保存
	open(OUT,">$colordata") || &error("カラーデータファイル $colordata を正しく更新できませんでした。");
	print OUT @para;
	close(OUT);

	# 表示モード設定
	if ($boardmode && -s "$colordata") { &read_color; }
	&loglist;
}

#-------------------------------------------------
#  カラーモード設定初期化
#-------------------------------------------------
sub color_clear {
	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	unlink("$colordata");
	rename($colorinit,$colordata) || &error("カラー設定ファイルエラー");

	open(PARA,"$colordata");
	@para = <PARA>;
	close(PARA);

	open(COL,">>$colorinit");
	print COL @para;
	close(COL);

	open(OUT,">>$colorfile");
	print OUT "0";
	close(OUT);

	# 表示モード設定
	if ($boardmode && -s "$colordata") { &read_color; }
	&loglist;
}

#-------------------------------------------------
#  スパムログ
#-------------------------------------------------
sub spam {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	&header;
	print <<EOM;
<UL>
<table border="0">
<tr><td><form action="$script">
<input type="submit" value="掲示板に戻る">
</form>
</td><td>
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
</td></tr>
</table></div>
</UL>
<UL><li>$postmodeログ<br>
「投稿処理」をクリックすると投稿を公開することができます。<br>
必用な投稿を復活させたあとは、「$postmodeログを全て削除」しておいて下さい。
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="spamclear">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" $postmodeログを削除する ">
</form>
EOM
	open(IN,"$spamlogfile") || &error("Open Error : $spamlogfile");
	$i = 0;
	while (<IN>) {
		my ($count,$no,$lx,$sub,$email,$url,$name,$date,$msg,$times,$host,$ango,$wrap,$oya,$smail,$res,$color,
		$img,$wi,$hi,$idcode,$uni,$reason,$fcheck,$referer,$useragent) = split(/<>/);
		$no{$i}        = $no;
		$sub{$i}       = $sub;
		$email{$i}     = $email;
		$url{$i}       = $url;
		$name{$i}      = $name;
		$date{$i}      = $date;
		$msg{$i}       = $msg;
		$times{$i}     = $times;
		$host{$i}      = $host;
		$ango{$i}      = $ango;
		$wrap{$i}      = $wrap;
		$oya{$i}       = $oya;
		$smail{$i}     = $smail;
		$color{$i}     = $color;
		$img{$i}       = $img;
		$wi{$i}        = $wi;
		$hi{$i}        = $hi;
		$idcode{$i}    = $idcode;
		$uni{$i}       = $uni;
		$reason{$i}    = $reason;
		$timecheck{$i} = &encode_bbsmode($fcheck);
		$uploadtime{$i} = $fcheck;
		if ($fcheck) { $fcheck{$i} = &get_time($fcheck); }
		else { $fcheck{$i} = "アクセス記録なし"; }
		$postdate{$i}  = &get_time($times);
		$useragent{$i} = &escape($useragent);
		if ($keychange) {
			if ($url{$i} && $url{$i} =~ /\@/) { ($email{$i},$url{$i})=($url{$i},$email{$i}); }
			elsif ($email{$i} && $email{$i} !~ /\@/) { ($email{$i},$url{$i})=($url{$i},$email{$i}); }
		}
		$i++;
	}
	close(IN);

	# ソート処理
	$j = 0;
	$x = 0;
	$page = $in{'page'};
	foreach (sort { ($date{$b} cmp $date{$a}) } keys(%date)) {
		$j++;
		if ($j < $page + 1) { next; }
		if ($j > $page + $spamlog_page) { next; }

		$useragent = "<small>$useragents</small>";
		print "<p><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n",
			"<tr bgcolor=\"$tbl_col0\">\n<td bgcolor=\"$tbl_col0\">";
		print "<table border=\"$border\" cellspacing=\"1\" cellpadding=\"5\">\n";
		print "<tr bgcolor=\"$tbl_color\">",
			"<td bgcolor=\"$tbl_color\">投稿日時</td><td bgcolor=\"$tbl_color\">$postdate{$_}</td>",
			"<td bgcolor=\"$tbl_color\">タイトル</td><td bgcolor=\"$tbl_color\">$sub{$_}</td></tr>",
		"<tr bgcolor=\"$tbl_color\">",
			"<td bgcolor=\"$tbl_color\">アクセス日時</td><td bgcolor=\"$tbl_color\">$fcheck{$_}</td>",
			"<td bgcolor=\"$tbl_color\">$alreason</td><td bgcolor=\"$tbl_color\">$reason{$_}</td></tr>",
		"<tr bgcolor=\"$tbl_color\">",
			"<td bgcolor=\"$tbl_color\">投稿者名</td><td bgcolor=\"$tbl_color\">$name{$_}</td>",
			"<td bgcolor=\"$tbl_color\">URL</td><td bgcolor=\"$tbl_color\">$url{$_}</td></tr>",
		"<tr bgcolor=\"$tbl_color\">",
			"<td bgcolor=\"$tbl_color\">ホストアドレス</td><td bgcolor=\"$tbl_color\">$host{$_}</td>",
			"<td bgcolor=\"$tbl_color\">ブラウザ</td><td bgcolor=\"$tbl_color\">$useragent{$_}</td></tr>",
		"<tr bgcolor=\"$tbl_color\">",
		"<td bgcolor=\"$tbl_color\">メールアドレス</td><td bgcolor=\"$tbl_color\">$email{$_}</td>",
		"<td bgcolor=\"$tbl_color\">投稿内容</td><td bgcolor=\"$tbl_color\"> ";
	print <<EOM;
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="spammsg">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="msg" value="$msg{$_}">
<input type="submit" value="投稿内容を閲覧">
</form></td></tr></table>
</td></tr></table>
<table border="0"><tr><td>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="admin_repost_form">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="no"   value="$no{$_}">
<input type="hidden" name="sub"   value="$sub{$_}">
<input type="hidden" name="email" value="$email{$_}">
<input type="hidden" name="url"   value="$url{$_}">
<input type="hidden" name="name"  value="$name{$_}">
<input type="hidden" name="date"  value="$date{$_}">
<input type="hidden" name="msg"   value="$msg{$_}">
<input type="hidden" name="times" value="$times{$_}">
<input type="hidden" name="host"  value="$host{$_}">
<input type="hidden" name="ango"   value="$ango{$_}">
<input type="hidden" name="wrap"   value="$wrap{$_}">
<input type="hidden" name="oya"   value="$oya{$_}">
<input type="hidden" name="smail" value="$smail{$_}">
<input type="hidden" name="color" value="$color{$_}">
<input type="hidden" name="img"  value="$img{$_}">
<input type="hidden" name="wi"    value="$wi{$_}">
<input type="hidden" name="hi"    value="$hi{$_}">
<input type="hidden" name="idcode" value="$idcode{$_}">
<input type="hidden" name="uni"  value="$uni{$_}">
<input type="hidden" name="$bbscheckmode" value="$timecheck{$_}">
<input type="hidden" name="uploadtime" value="$uploadtime{$_}">
<input type="hidden" name="reason" value="$reason{$_}">
<input type="submit" value="投稿処理">
</form></td><td>(上記の投稿を公開することができます)</td></tr></table>
EOM
	}

	print "</table><br>\n";
	$next = $page + $spamlog_page;
	$back = $page - $spamlog_page;

	print "<table><tr>\n";
	if ($back >= 0) {
		print "<td><form action=\"$admin\" method=\"POST\">\n";
		print "<input type=\"hidden\" name=\"pass\" value=\"$in{'pass'}\">\n";
		print "<input type=\"hidden\" name=\"mode\" value=\"$in{'mode'}\">\n";
		print "<input type=\"hidden\" name=\"page\" value=\"$back\">\n";
		print "<input type=\"submit\" value=\"前画面\"></form></td>\n";
	}
	if ($next < $i) {
		print "<td><form action=\"$admin\" method=\"POST\">\n";
		print "<input type=\"hidden\" name=\"pass\" value=\"$in{'pass'}\">\n";
		print "<input type=\"hidden\" name=\"mode\" value=\"$in{'mode'}\">\n";
		print "<input type=\"hidden\" name=\"page\" value=\"$next\">\n";
		print "<input type=\"submit\" value=\"次画面\"></form></td>\n";
	}
	print "</tr></table>\n";
	print <<EOM;
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="spamclear">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" $postmodeログを削除する ">
</form>
</div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  エスケープ
#-------------------------------------------------
sub escape {
	my $str = $_[0];
	$str =~ s/[\x00-\x1F\x7F]//g;
	$str =~ s/&/&amp;/g;
	$str =~ s/</&lt;/g;
	$str =~ s/>/&gt;/g;
	$str =~ s/"/&quot;/g;
	$str =~ s/'/&#x27;/g;
	return $str;
}

#-------------------------------------------------
#  投稿拒否ログ初期化
#-------------------------------------------------
sub spamclear {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	# 添付ファイルの削除
	open(IN,"$spamlogfile") || &error("Open Error : $spamlogfile");
	while (<IN>) {
		local ($count,$no,$lx,$sub,$email,$url,$name,$date,$msg,$times,$host,$ango,$wrap,$oya,$smail,$res,$color,
		$img,$wi,$hi,$idcode,$uni,$reason,$fcheck,$referer,$useragent) = split(/<>/);
		if ($img =~ /(\.\w+)$/i) { $tail = $1; } else { $tail = ""; }
		if ($tail) {
			if (-e "$imgdir$fcheck$tail") { unlink("$imgdir$fcheck$tail"); }
			if (-e"$imgdir$fcheck"."s"."$tail") { unlink("$imgdir$fcheck"."s"."$tail"); }
		}
	}
	close(IN);

	# 投稿拒否ログの初期化
	open(OUT,">$spamlogfile");
	chmod (0606,"$spamlogfile");
	print OUT "";
	close(OUT);

	&header();
	print <<EOM;
<div align="center">
<h4>$postmodeログを削除しました</h4>
<table border="0">
<tr><td><form action="$script" method="POST">
<input type="submit" value="掲示板に戻る">
</form>
</td><td>
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
</td></tr>
</table></div>
</div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  投稿拒否コメント
#-------------------------------------------------
sub spammsg {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	# エスケープ
	$in{'msg'} =~ s/"/&quot;/g;
	$in{'msg'} =~ s/</&lt;/g;
	$in{'msg'} =~ s/>/&gt;/g;
	# 改行処理
	$in{'msg'} =~ s/&lt;br&gt;/<br>/ig;

	&header();
	print <<EOM;
<div align="center">
<h4>コメント</h4>
<p><table border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="$tbl_col0">
<td bgcolor="$tbl_col0">
<table border="$border" cellspacing="1" cellpadding="5">
<tr bgcolor="$tbl_color">
<td bgcolor="$tbl_col0"><div align="center">
$postmode メッセージ内容</div></td></tr>
<tr bgcolor="$tbl_color">
<td bgcolor="$tbl_color">$in{'msg'}</td></tr>
</table>
</td></tr>
</table><BR>
<table border="0">
<tr><td><form action="$admin" method="POST">
<input type="hidden" name="mode" value="spam">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" $postmodeログ閲覧に戻る ">
</form>
</td><td>
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
</td></tr>
</table></div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  NGワード編集
#-------------------------------------------------
sub spamdata {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	&header;
	print <<EOM;
<div align="left">
<table border="0">
<tr><td>
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
</td></tr>
</table></div>
<BR>
<li>NGワードを一括登録できます(半角のカンマで区切る)。<br>
<br>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="editspam">
<input type="hidden" name="pass" value="$in{'pass'}">
EOM
	if (-e $spamdata) {
		open(IN,"$spamdata");
		$SPMLST = <IN>;
		close(IN);
	}

	print <<EOM;
<textarea name="SPMLST" rows="30" cols="80" wrap="soft">$SPMLST</textarea><br>
<br>
<input type="submit" value="更新する">
</form>
</ul>
</div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  NGワード更新
#-------------------------------------------------
sub editspam {

	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	$SPMLST = $in{"SPMLST"};

	# 空データ・改行・空白を削除
	$SPMLST =~ s/，/\,/g;
	$SPMLST =~ s/<br>//ig;
	$SPMLST =~ s/\n//g;
	$SPMLST =~ s/\r//g;
	$SPMLST =~ s/　//g;
	$SPMLST =~ s/\,{2,}/\,/g;
	$SPMLST =~ s/^\,{1,}//;

	open(OUT,">$spamdata") || &error("Write Error");
	print OUT $SPMLST;
	close(OUT);

	&header;

	print <<EOM;
<div align="center">
<h4>NGワードを更新しました</h4>
<BR>
<table border="0">
<tr><td>
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
</td></tr>
</table></div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  管理者再投稿画面
#-------------------------------------------------
sub admin_repost_form {

	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	$in{'msg'} =~ s/<br>/\n/g;
	$in{'msg'} =~ s/&lt;br&gt;/\n/g;
	$in{"$bbscheckmode"} = &encode_bbsmode($in{"$bbscheckmode"});

	&header;
	print <<EOM;
<h3>下記の投稿を公開処理できます。</h3>
<hr>
<table border="0" cellspacing="1">
<form action="$regist" method="POST">
<input type="hidden" name="mode" value="admin_repost">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="no" value="$in{'no'}">
<input type="hidden" name="date"  value="$in{'date'}">
<input type="hidden" name="times" value="$in{'times'}">
<input type="hidden" name="host"  value="$in{'host'}">
<input type="hidden" name="ango"   value="$in{'ango'}">
<input type="hidden" name="wrap"   value="$in{'wrap'}">
<input type="hidden" name="oya"   value="$in{'oya'}">
<input type="hidden" name="smail" value="$in{'smail'}">
<input type="hidden" name="color" value="$in{'color'}">
<input type="hidden" name="img"  value="$in{'img'}">
<input type="hidden" name="wi"    value="$in{'wi'}">
<input type="hidden" name="hi"    value="$in{'hi'}">
<input type="hidden" name="idcode" value="$in{'idcode'}">
<input type="hidden" name="uni"  value="$in{'uni'}">
<input type="hidden" name="$bbscheckmode" value=$in{"$bbscheckmode"}>
<input type="hidden" name="uploadtime" value="$in{'uploadtime'}">
<tr>
  <td><b>投稿拒否理由&nbsp;:&nbsp;$in{'reason'}</b><br><br></td>
</tr>
<tr>
  <td><b>お名前</b>&nbsp;:&nbsp;
    <input type="text" name="name" size="20" value="$in{'name'}" class="f"></td>
</tr>
<tr>
  <td><b>Ｅメール</b>&nbsp;:&nbsp;
    <input type="text" name="email" size="30" value="$in{'email'}" class="f"></td>
</tr>
<tr>
  <td><b>タイトル</b>&nbsp;:&nbsp;
    <input type="text" name="sub" size="40" value="$in{'sub'}" class="f"></td>
</tr>
<tr>
  <td>
    <b>メッセージ</b><br>
    <textarea cols="80" rows="12" name="message" wrap="soft" class="f">$in{'msg'}</textarea>
  </td>
</tr>
<tr>
  <td><b>参照先</b>&nbsp;:&nbsp;
  <input type="text" name="url" size="50" value="$in{'url'}" class="f"></td>
</tr>
</table>
<table><tr><td>
<input type="submit" value="投稿復活処理する">
</form>
</td>
<td><form action="$admin" method="POST">
<input type="hidden" name="mode" value="spam">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 投稿拒否ログ閲覧に戻る ">
</form>
</td></tr></table>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  Webmail送信ログ
#-------------------------------------------------
sub sendmaillog {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	&header;
	print <<EOM;
<form action="$admin" method="POST">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 管理画面に戻る ">
</form>
<hr>
<li>Webmail送信ログ
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="maillogclear">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 送信記録を削除する ">
</form>
<P>Webmailを利用したメール送信記録です。
<table border="1">\n<tr><td>日時</td><td>送信者名</td><td>送信者メールアドレス</td>
<td>送信元ホストアドレス</td><td>受信者名</td><td>受信者メールアドレス</td></tr>
EOM

	if(-e "$mailchk$sendmaillog") {
		open(IN,"$mailchk$sendmaillog") || &error("Open Error : $mailchk$sendmaillog");
		$i = 0;
		while (<IN>) {
			my ($dat,$nam,$em,$to,$sem,$hos) = split(/<>/);
			$dat{$i} = $dat;
			$nam{$i} = $nam;
			$em{$i}  = $em;
			$to{$i}  = $to;
			$sem{$i} = $sem;
			$hos{$i} = $hos;
			$date{$i} = &get_time($dat{$i});
			$i++;
		}
		close(IN);

		foreach (sort { ($dat{$b} cmp $dat{$a}) } keys(%dat)) {
			print "<tr><td><small>$date{$_}</small></td><td>$nam{$_}</td><td>$em{$_}</td>",
			"<td>$hos{$_}</td><td>$to{$_}</td><td>$sem{$_}</td></tr>";
		}
	}
	print <<EOM;
</table><br>
<form action="$admin" method="POST">
<input type="hidden" name="mode" value="maillogclear">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" value=" 送信記録を削除する ">
</form>
</div>
</body>
</html>
EOM
	exit;
}

#-------------------------------------------------
#  送信記録を削除
#-------------------------------------------------
sub maillogclear {
	# POST限定
	if ($postonly && !$post_flag) { &error("不正なアクセスです"); }

	if ($in{'pass'} eq "") { &enter; }
	elsif ($in{'pass'} ne $pass) { &error("パスワードが違います"); }

	unlink("$mailchk$sendmaillog");

	&loglist;
}

__END__

