#!/usr/bin/perl
## -------------------------------------------------------------------
## Sunclip設定画面
## setup.cgi Ver1.10 (2002/01/18) 
## CopyRight：我楽多cgi@nifty by Season
##    e-mail：season.aki@nifty.com
##  HomePage：http://homepage1.nifty.com/mystaff/index.htm
## ---[注意事項]------------------------------------------------------
## 1. このスクリプトはフリーソフトです。このスクリプトを使用した
##    いかなる損害に対して作者は一切の責任を負いません。
## 2. 設置に関する質問はサポート掲示板にお願いいたします。メールに
##    よる質問にはお答え出来ません。
## -------------------------------------------------------------------
## バージョン情報（修正不要）
$ver = 'Setup Ver1.10';

# ■■■ 環境設定（必要最小限の設定）■■■

#日本語変換モジュールの指定
$JcodeLib = './jcode.pl';

# 画面タイトル
$G_title = "Sunclip 設定画面";

# スクリプトのファイル名
$ScriptName  = "setup.cgi";
$ReturnName  = "sunclip.cgi";

# 環境設定ファイル名
$logfile = "./sunclip.cfg";

# ファイルロック(0=no 1=yes)
$lock_mode = 1;
$lockdir = "./setuplock";	# ロックdir名

# methodの形式 (POST or GET)
$method  = 'POST';

#### 各種初期値のテーブル設定 #######
	#  ↓タイトルの文字スタイルの設定。
@T_FACE = ('serif','Times New Roman','ＭＳ Ｐゴシック','ＭＳ Ｐ明朝');
	#  ↓文字サイズの設定。
@F_SIZE = ('8pt','9pt','10pt','11pt','12pt','13pt','14pt','16pt','18pt','20pt','24pt','32pt','40pt');
	#  ↓掲示板の背景色の設定。
@BGCOLOR = ('#FFFFFF','#FDBBD7','#FEEAD1','#FCF9CD','#EAFDBD','#C1FCBC','#DFFDFD','#D0E0FD','#F0D0D0');
	#  ↓掲示板の文字色の設定。
@TXCOLOR = ('#000000','#DF0000','#FF8040','#C100C1','#FFFF00','#008040','#0000FF','#000080','#800000');
	#  ↓未リンク色の設定。
@LINK1   = ('#000000','#DF0000','#FF8040','#C100C1','#FFFF00','#008040','#0000FF','#000080','#800000');
	#  ↓リンク中色の設定。
@LINK2   = ('#000000','#DF0000','#FF8040','#C100C1','#FFFF00','#008040','#0000FF','#000080','#800000');
	#  ↓既リンク色の設定。
@LINK3   = ('#000000','#DF0000','#FF8040','#C100C1','#FFFF00','#008040','#0000FF','#000080','#800000');

# ■■■ 設定完了（ここまで）■■■

# メイン処理 -------------------------------------------------------------------
&error("$JcodeLibが見つかりません。") unless(-e $JcodeLib);
&error("$logfileが見つかりません。")  unless(-e $logfile);
require $JcodeLib;
&decode;
if ($mode eq "login") { &login; }
elsif ($mode eq "input") { &input; }
elsif ($mode eq "regist"){ &regist; }
&error("不正な呼出モードです！");
exit;

# フォーム情報デコード ---------------------------------------------------------
sub decode {
	# フォームデータの取得
	if ($ENV{'REQUEST_METHOD'} eq "POST") {
		read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
	} else { $buffer = $ENV{'QUERY_STRING'}; }

	@pairs = split(/&/,$buffer);
	foreach $pair (@pairs) {
		($key, $value) = split(/=/, $pair);
		$value =~ tr/+/ /;
		$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

		# 文字コード変換
		&jcode'convert(*value,'sjis');

		# タグの無効化
		$value =~ s/</&lt;/g;
		$value =~ s/>/&gt;/g;

		# 改行等処理
		if ($key eq "submsg") {
			$value =~ s/\r\n/<br>/g;
			$value =~ s/\r/<br>/g;
			$value =~ s/\n/<br>/g;
		} else {
			$value =~ s/\r//g;
			$value =~ s/\n//g;
		}

		# フォーム入力dataを連想配列に格納
		$in{$key} = $value;
	}
	$mode   = $in{'mode'};
	$in{'home'}   =~ s/http\:\/\///g;
	$in{'t_img'}  =~ s/http\:\/\///g;
	$in{'bg_img'} =~ s/http\:\/\///g;
	$in{'com_bgimg'} =~ s/http\:\/\///g;

	# 設定データの読みこみ
	&config_load;

	# 日時の取得
	&date_set; 
}

# 初期設定 -------------------------------------------------------------
sub login {
	# 入室画面表示
	&header;
	print "<table width=100%><tr><th bgcolor=$obi_color>\n";
	print "<font color=$sbj_color>$G_title</font></th></tr></table>\n";
	print "<div align=center>\n";
	print "<b>管理者パスワードを入力して下さい。</b>\n";
	print "<form action=\"$ScriptName\" method=\"$method\">\n";
	print "<input type=hidden name=mode value=\"input\">\n";
	print "<b>Password：</b><input type=password name=inpwd size=9>\n";
	print "<input type=submit value=\"認証\"></form>\n";
	print "</div>\n";
	&footer;
}

#------------------------------------------------------------------------------
sub input {
	# 管理パスワード照合チェック
	if ($in{'inpwd'} ne $pass) { &error("パスワードが正しくありません！"); }

	# HTMLヘッダー処理
	&header; 

	#掲示板タイトル表示準備
	local($BBS_TITLE);
	$BBS_TITLE = "<font color=\"$t_color\" face=\"$t_face\"><b><span>$G_title</span></b></font>\n";
	print <<"EOM";
<center>
$BBS_TITLE
<hr width=90% size=2>
<form action="$ScriptName" method="$method">
<input type=hidden name=mode value="regist">
<input type=submit value="送信する"><input type=reset value="リセット">
</center>
<blockquote>
<table border=0>
<tr>
  <td><b>■基本項目の設定</b></td><td>■■■■■■■■■■</td>
</tr>
<tr>
  <td>
   <b>管理パスワード</b>
  </td>
  <td>
    <input type=text name=pass size=10 value="$pass"> ※英数字で8文字以内
  </td>
</tr>
<tr>
  <td>
    <b>最大記事保存数</b>
  </td>
  <td>
    <input type=text name=max size=6 value="$max">
  </td>
</tr>
<tr>
  <td nowrap>
    <b>１ページ表\示数</b>
  </td>
  <td>
    <select name=p_log>
EOM
	@PCNT = ('5','10','15','20','25','30','35','40','45','50');
	foreach (0 .. $#PCNT) {
	    if ($PCNT[$_] eq "$p_log") {
		print "<option value=\"$PCNT[$_]\" selected>$PCNT[$_]\n";
	    }else {
	    	print "<option value=\"$PCNT[$_]\">$PCNT[$_]\n";
	    }
	}
	print <<"EOM";
    </select>
  </td>
</tr>
<tr>
  <td nowrap>
    <b>文字表\示サイズ</b>
  </td>
  <td>
    <select name=b_size>
EOM
	foreach (0 .. $#F_SIZE) {
	    if ($F_SIZE[$_] eq "$b_size") {
		print "<option value=\"$F_SIZE[$_]\" selected>$F_SIZE[$_]\n";
	    }else {
	    	print "<option value=\"$F_SIZE[$_]\">$F_SIZE[$_]\n";
	    }
	}
	print <<"EOM";
    </select>
  </td>
</tr>
<tr>
  <td>
    <b>戻り先ＵＲＬ</b>
  </td>
  <td>
    <input type=text name=home size=64 value="http://$home">
  </td>
</tr>
<tr><td><br></td><td><br></td></tr>
<tr>
  <td><b>■タイトルの設定</b></td><td>■■■■■■■■■■</td>
</tr>
<tr>
  <td nowrap>
    <b>タイトル画像</b>
  </td>
  <td>
    <input type=text name=t_img size=64 value="http://$t_img">
  </td>
</tr>
<tr>
  <td nowrap>
    <b>タイトル文字</b>
  </td>
  <td>
    <input type=text name=title size=50 value="$title">
  </td>
</tr>
<tr>
  <td nowrap>
    <b>フォントサイズ</b>
  </td>
  <td>
    <select name=t_size>
EOM
	foreach (0 .. $#F_SIZE) {
	    if ($F_SIZE[$_] eq "$t_size") {
		print "<option value=\"$F_SIZE[$_]\" selected>$F_SIZE[$_]\n";
	    }else {
	    	print "<option value=\"$F_SIZE[$_]\">$F_SIZE[$_]\n";
	    }
	}
	print <<"EOM";
    </select>
  </td>
</tr>
<tr>
  <td nowrap>
    <b>フォントタイプ</b>
  </td>
  <td>
    <select name=t_face>
EOM
	foreach (0 .. $#T_FACE) {
	    if ($T_FACE[$_] eq "$t_face") {
		print "<option value=\"$T_FACE[$_]\" selected>$T_FACE[$_]\n";
	    }else {
	    	print "<option value=\"$T_FACE[$_]\">$T_FACE[$_]\n";
	    }
	}
	print <<"EOM";
    </select>
  </td>
</tr>
<tr>
  <td>
    <b>タイトルの文字色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=t_color_chk checked>" if($t_color_chk);
	print "<input type=checkbox name=t_color_chk>" if(!$t_color_chk);
	print "<input type=text name=t_color size=9 value=\"$t_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $t_color) {
			print "<input type=radio name=t_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=t_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>一言メッセージ</b>
  </td>
  <td>
    <textarea cols=48 rows=3 name=submsg wrap="soft">$submsg</textarea>
  </td>
</tr>

<tr><td><br></td><td><br></td></tr>
<tr>
  <td><b>■BODYタグの設定</b></td><td>■■■■■■■■■■</td>
</tr>
<tr>
  <td>
    <b>背景の壁紙指定</b>
  </td>
  <td>
    <input type=text name=bg_img size=64 value="http://$bg_img">
  </td>
</tr>
<tr>
  <td>
    <b>背景の色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=bg_color_chk checked>" if($bg_color_chk);
	print "<input type=checkbox name=bg_color_chk>" if(!$bg_color_chk);
	print "<input type=text name=bg_color size=9 value=\"$bg_color\">";
	foreach (0 .. $#BGCOLOR) {
		if ($BGCOLOR[$_] eq $bg_color) {
			print "<input type=radio name=bg_color2 value=\"$BGCOLOR[$_]\" checked> ";
			print "<font color=\"$BGCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=bg_color2 value=\"$BGCOLOR[$_]\"> ";
			print "<font color=\"$BGCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>文字の色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=tx_color_chk checked>" if($tx_color_chk);
	print "<input type=checkbox name=tx_color_chk>" if(!$tx_color_chk);
	print "<input type=text name=tx_color size=9 value=\"$tx_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $tx_color) {
			print "<input type=radio name=tx_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=tx_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>未リンクの色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=link_chk checked>" if($link_chk);
	print "<input type=checkbox name=link_chk>" if(!$link_chk);
	print "<input type=text name=link size=9 value=\"$link\">";
	foreach (0 .. $#LINK1) {
		if ($LINK1[$_] eq $link) {
			print "<input type=radio name=link2 value=\"$LINK1[$_]\" checked> ";
			print "<font color=\"$LINK1[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=link2 value=\"$LINK1[$_]\"> ";
			print "<font color=\"$LINK1[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>リンク中の色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=alink_chk checked>" if($alink_chk);
	print "<input type=checkbox name=alink_chk>" if(!$alink_chk);
	print "<input type=text name=alink size=9 value=\"$alink\">";
	foreach (0 .. $#LINK2) {
		if ($LINK2[$_] eq $alink) {
			print "<input type=radio name=alink2 value=\"$LINK2[$_]\" checked> ";
			print "<font color=\"$LINK2[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=alink2 value=\"$LINK2[$_]\"> ";
			print "<font color=\"$LINK2[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>既リンクの色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=vlink_chk checked>" if($vlink_chk);
	print "<input type=checkbox name=vlink_chk>" if(!$vlink_chk);
	print "<input type=text name=vlink size=9 value=\"$vlink\">";
	foreach (0 .. $#LINK3) {
		if ($LINK3[$_] eq $vlink) {
			print "<input type=radio name=vlink2 value=\"$LINK3[$_]\" checked> ";
			print "<font color=\"$LINK3[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=vlink2 value=\"$LINK3[$_]\"> ";
			print "<font color=\"$LINK3[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr><td><br></td><td><br></td></tr>
<tr>
  <td><b>■記事表\示の設定</b></td><td>■■■■■■■■■■</td>
</tr>
<tr>
  <td>
    <b>記事の表\示幅</b>
  </td>
  <td>
    <input type=text name=log_wide size=6 value="$log_wide">
    <select name=ratio>
EOM
	if ($ratio eq "%") {
	    print "<option value=\"%\" selected>パーセント";
	    print "<option value=\"\">ピクセル";
	}else{
	    print "<option value=\"%\">パーセント";
	    print "<option value=\"\" selected>ピクセル";
	}
    print <<"EOM";
    </select>
    記事表\示幅（パーセント or ピクセル指定）
  </td>
</tr>
<tr>
  <td>
    <b>本文背景の壁紙</b>
  </td>
  <td>
    <input type=text name=com_bgimg size=64 value="http://$com_bgimg">
  </td>
</tr>
<tr>
  <td>
    <b>本文の背景色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=com_bgcolor_chk checked>" if($com_bgcolor_chk);
	print "<input type=checkbox name=com_bgcolor_chk>" if(!$com_bgcolor_chk);
	print "<input type=text name=com_bgcolor size=9 value=\"$com_bgcolor\">";
	foreach (0 .. $#BGCOLOR) {
		if ($BGCOLOR[$_] eq $com_bgcolor) {
			print "<input type=radio name=com_bgcolor2 value=\"$BGCOLOR[$_]\" checked> ";
			print "<font color=\"$BGCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=com_bgcolor2 value=\"$BGCOLOR[$_]\"> ";
			print "<font color=\"$BGCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>本文の文字色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=com_color_chk checked>" if($com_color_chk);
	print "<input type=checkbox name=com_color_chk>" if(!$com_color_chk);
	print "<input type=text name=com_color size=9 value=\"$com_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $com_color) {
			print "<input type=radio name=com_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=com_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>題名ポインタ形状</b>
  </td>
  <td>
EOM
	@POINTER = ('◆','■','●','★','※');
	foreach (0 .. $#POINTER) {
		if ($POINTER[$_] eq $point) {
			print "<input type=radio name=point value=\"$POINTER[$_]\" checked> $POINTER[$_]\n";
		} else {
			print "<input type=radio name=point value=\"$POINTER[$_]\"> $POINTER[$_]\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>題名ポインタ色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=p_color_chk checked>" if($p_color_chk);
	print "<input type=checkbox name=p_color_chk>" if(!$p_color_chk);
	print "<input type=text name=p_color size=9 value=\"$p_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $p_color) {
			print "<input type=radio name=p_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=p_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>題名の帯色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=obi_color_chk checked>" if($obi_color_chk);
	print "<input type=checkbox name=obi_color_chk>" if(!$obi_color_chk);
	print "<input type=text name=obi_color size=9 value=\"$obi_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $obi_color) {
			print "<input type=radio name=obi_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=obi_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>題名の文字色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=sbj_color_chk checked>" if($sbj_color_chk);
	print "<input type=checkbox name=sbj_color_chk>" if(!$sbj_color_chk);
	print "<input type=text name=sbj_color size=9 value=\"$sbj_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $sbj_color) {
			print "<input type=radio name=sbj_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=sbj_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>土曜日の指定色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=sat_color_chk checked>" if($sat_color_chk);
	print "<input type=checkbox name=sat_color_chk>" if(!$sat_color_chk);
	print "<input type=text name=sat_color size=9 value=\"$sat_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $sat_color) {
			print "<input type=radio name=sat_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=sat_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>日曜日の指定色</b>
  </td>
  <td>
EOM
	print "<input type=checkbox name=sun_color_chk checked>" if($sun_color_chk);
	print "<input type=checkbox name=sun_color_chk>" if(!$sun_color_chk);
	print "<input type=text name=sun_color size=9 value=\"$sun_color\">";
	foreach (0 .. $#TXCOLOR) {
		if ($TXCOLOR[$_] eq $sun_color) {
			print "<input type=radio name=sun_color2 value=\"$TXCOLOR[$_]\" checked> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		} else {
			print "<input type=radio name=sun_color2 value=\"$TXCOLOR[$_]\"> ";
			print "<font color=\"$TXCOLOR[$_]\">■</font>\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr><td><br></td><td><br></td></tr>
<tr>
  <td><b>■添付ファイルの設定</b></td><td>■■■■■■■■■■</td>
</tr>
<tr>
  <td nowrap>
    <b>登録上限サイズ</b>
  </td>
  <td>
    <select name=clip_size>
EOM
	@CLIP_MAX_MSG = ('10KB','20KB','30KB','50KB','100KB','150KB','200KB');
	@CLIP_MAX_VAL = ('10240','20480','30720','51200','102400','153600','204800');
	foreach (0 .. $#CLIP_MAX_MSG) {
	    if ($CLIP_MAX_VAL[$_] eq "$clip_size") {
		print "<option value=\"$CLIP_MAX_VAL[$_]\" selected>$CLIP_MAX_MSG[$_]\n";
	    }else {
	    	print "<option value=\"$CLIP_MAX_VAL[$_]\">$CLIP_MAX_MSG[$_]\n";
	    }
	}
	print <<"EOM";
    </select> １回で登録できる添付ファイルの上限サイズ
  </td>
</tr>
<tr>
  <td nowrap>
    <b>添付画像ファイル</b>
  </td>
  <td>
    <input type=text name=clip_icon size=10 value="$clip_icon"> 添付アイコンのファイル名を指定（画像アップディレクトリに配置）
  </td>
</tr>
<tr>
  <td nowrap>
    <b>許可ファイル種別</b>
  </td>
  <td>
EOM
	@OK_TYPE = ('GIF','JPG','PNG','TEXT','LHA','ZIP','PDF','MIDI','WORD','EXCEL','PPoint');
	foreach (0 .. $#OK_TYPE) {
		if ($f_type[$_]) {
			print "<input type=checkbox name=$OK_TYPE[$_] checked> ";
			print "$OK_TYPE[$_]\n";
		} else {
			print "<input type=checkbox name=$OK_TYPE[$_]> ";
			print "$OK_TYPE[$_]\n";
		}
	}
	print <<"EOM";
  </td>
</tr>
<tr><td><br></td><td><br></td></tr>
<tr>
  <td><b>■その他応用設定</b></td><td>■■■■■■■■■■</td>
</tr>
<tr>
  <td nowrap>
    <b>日付タイプ</b>
  </td>
  <td>
    <select name=datetype>
EOM
	@DATETYPE = ('0:洋式','1:和式');
	foreach (0 .. $#DATETYPE) {
	    if ($_ eq "$datetype") {
		print "<option value=\"$_\" selected>$DATETYPE[$_]\n";
	    }else {
	    	print "<option value=\"$_\">$DATETYPE[$_]\n";
	    }
	}
	print <<"EOM";
    </select>　<b>洋式：yyyy/mm/dd(Sun)　和式：yyyy年mm月dd日(日)</b>
  </td>
</tr>
<tr>
  <td nowrap>
    <b>タグ使用モード</b>
  </td>
  <td>
    <select name=tagmode>
EOM
	@HTMLTAG = ('0:使用不可','1:一部使用可','2:全て使用可');
	foreach (0 .. $#HTMLTAG) {
	    if ($_ eq "$tagmode") {
		print "<option value=\"$_\" selected>$HTMLTAG[$_]\n";
	    }else {
	    	print "<option value=\"$_\">$HTMLTAG[$_]\n";
	    }
	}
	print <<"EOM";
    </select>　<b>「一部使用可」では、&lt;B&gt;&lt;I&gt;&lt;FONT&gt;&lt;IMG&gt;タグが使えます。</b>
  </td>
</tr>
<tr>
  <td>
    <b>URL自動リンク</b>
  </td>
  <td>
EOM
    print "<input type=checkbox name=autolink checked>" if ($autolink);
    print "<input type=checkbox name=autolink>" if (!$autolink);
    print "※コメント中のURLを自動リンクします。";
    print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>ファイルロック</b>
  </td>
  <td>
EOM
    print "<input type=checkbox name=lockmode checked>" if ($lockmode);
    print "<input type=checkbox name=lockmode>" if (!$lockmode);
    print "※ファイルロックをＯＮにします。";
    print <<"EOM";
  </td>
</tr>
<tr>
  <td>
    <b>過去ログ設定</b>
  </td>
  <td>
EOM
    print "<input type=checkbox name=pastmode checked>" if ($pastmode);
    print "<input type=checkbox name=pastmode>" if (!$pastmode);
    print <<"EOM";
    <input type=text name=pastline size=5 value="$pastline">※過去ログの1ページ行数を指定します。
  </td>
</tr>
<tr>
  <td>
    <b>HTMLに同時出力</b>
  </td>
  <td>
    <select name=ins_line>
EOM
    @EXPORTGUID = ('無し','１件','２件','３件','５件','10件','全部');
    @EXPORTLINE = (0,1,2,3,5,10,$max);
    foreach (0 .. $#EXPORTLINE) {
	if ($_ eq "$ins_line") {
		print "<option value=\"$EXPORTLINE[$_]\" selected>$EXPORTGUID[$_]\n";
	}else {
	    	print "<option value=\"$EXPORTLINE[$_]\">$EXPORTGUID[$_]\n";
	}
    }
    print "   </select>\n";
    @EXPORTMODE = ('本文(TABLE形式)','題名(FORM形式)','題名(TEXT形式)');
    @EXPORTTYPE = (0,1,2);
    print "   <select name=ins_mode>\n";
    foreach (0 .. $#EXPORTTYPE) {
	if ($_ eq "$ins_mode") {
		print "<option value=\"$EXPORTTYPE[$_]\" selected>$EXPORTMODE[$_]\n";
	}else {
	    	print "<option value=\"$EXPORTTYPE[$_]\">$EXPORTMODE[$_]\n";
	}
    }
    print "   </select>\n";
    print "  </td>\n";
    print <<"EOM";
</tr>
<tr>
  <td></td>
  <td>
    <input type=text name=ins_html size=30 value="$ins_html">※記事を挿入するHTMLページのパスを指定します。
  </td>
</tr>
</table>
</blockquote>
</form>
<hr width=90% size=2>
EOM

	#フッター表示
	&footer;
}

#ログ書き込み処理--------------------------------------------------------------
sub regist {

	# 入力項目のチェック
	if ($in{'pass'}  eq "") { &error("パスワードが入力されていません。"); }
	if ($in{'max'}   eq "") { &error("記事最大保存数の指定が不正です。"); }
	if ($in{'max'}   eq  0) { &error("記事最大保存数が入力されていません。"); }
	if ($in{'title'} eq "") { &error("タイトル文字が入力されていません。"); }
	if ($in{'log_wide'} eq "") { &error("記事表\示幅の指定が不正です。"); }
	if ($in{'log_wide'} eq  0) { &error("記事表\示幅が入力されてません。"); }
	if ($in{'ratio'} && $in{'log_wide'} > 100) { &error("記事表\示幅の比率が100%を超えています！"); }
	if ($in{'ins_line'}) {
	    if (!(-e $in{'ins_html'})) { &error("$in{'ins_html'} が見つかりません！"); }
	}

	# body色指定（任意指定で無い場合はラジオボタンの指定色に変換する）
	if (!$in{'t_color_chk'})  { $in{'t_color'}  = $in{'t_color2'}; }
	if (!$in{'bg_color_chk'}) { $in{'bg_color'} = $in{'bg_color2'}; }
	if (!$in{'tx_color_chk'}) { $in{'tx_color'} = $in{'tx_color2'}; }
	if (!$in{'link_chk'})  { $in{'link'}  = $in{'link2'}; }
	if (!$in{'alink_chk'}) { $in{'alink'} = $in{'alink2'}; }
	if (!$in{'vlink_chk'}) { $in{'vlink'} = $in{'vlink2'}; }

	# 記事表示幅指定（パーセント表示の場合に「％」を付加する）
	$in{'log_wide'} .= $in{'ratio'};

	# 記事表示部色指定（任意指定で無い場合はラジオボタンの指定色に変換する）
	if (!$in{'com_bgcolor_chk'}) { $in{'com_bgcolor'} = $in{'com_bgcolor2'}; }
	if (!$in{'com_color_chk'})   { $in{'com_color'}   = $in{'com_color2'}; }
	if (!$in{'p_color_chk'})     { $in{'p_color'}     = $in{'p_color2'}; }
	if (!$in{'obi_color_chk'})   { $in{'obi_color'}   = $in{'obi_color2'}; }
	if (!$in{'sbj_color_chk'})   { $in{'sbj_color'}   = $in{'sbj_color2'}; }
	if (!$in{'sat_color_chk'})   { $in{'sat_color'}   = $in{'sat_color2'}; }
	if (!$in{'sun_color_chk'})   { $in{'sun_color'}   = $in{'sun_color2'}; }

	# 設定状況のガイドメッセージを準備
	if ($in{'ratio'} eq '%')  { $ratio = "パーセント"; } else{ $ratio = "ピクセル"; }
	if ($in{'tagmode'}  eq 0)  { $tagmsg = "使用不可"; }
	if ($in{'tagmode'}  eq 1)  { $tagmsg = "一部使用可 &lt;B&gt;&lt;I&gt;&lt;FONT&gt;&lt;IMG&gt;タグのみ"; }
	if ($in{'tagmode'}  eq 2)  { $tagmsg = "全て使用可"; }
	if ($in{'datetype'} eq 1) { $datemsg = "和式：yyyy年mm月dd日(日)"; } else{ $datemsg = "洋式：yyyy/mm/dd(Sun)"; }
	if ($in{'autolink'} eq 'on') { $automsg = "使用する"; } else{ $automsg = "使用しない"; }
	if ($in{'lockmode'} eq 'on') { $lockmsg = "使用する"; } else{ $lockmsg = "使用しない"; }
	if ($in{'pastmode'} eq 'on') { $pastmsg = "使用する（行数：$in{'pastline'}）"; } else{ $pastmsg = "使用しない"; }
	if ($in{'ins_line'}) { $ins_msg = "$in{'ins_line'}件（パス：$in{'ins_html'}）"; } else{ $ins_msg = "使用しない"; }

        @EXPORTMODE = ('本文(TABLE形式)','題名(FORM形式)','題名(TEXT形式)');
	if ($in{'ins_line'}) { $ins_msg = "$EXPORTMODE[$in{'ins_mode'}] / $in{'ins_line'}件（パス：$in{'ins_html'}）"; } else{ $ins_msg = "使用しない"; }

	# ファイルロック
	if ($lock_mode) { &file_lock; }

	# ログをフォーマット
	$CONFIG  = "Sunclip<>$in{'pass'}<>$in{'max'}<>$in{'p_log'}<>$in{'b_size'}<>$in{'home'}<>";
	$CONFIG .= "$in{'t_img'}<>$in{'title'}<>$in{'t_size'}<>$in{'t_color'}<>$in{'t_face'}<>$in{'submsg'}<>";
	$CONFIG .= "$in{'bg_img'}<>$in{'bg_color'}<>$in{'tx_color'}<>$in{'link'}<>$in{'alink'}<>$in{'vlink'}<>";
	$CONFIG .= "$in{'log_wide'}<>$in{'ratio'}<>$in{'com_bgimg'}<>$in{'com_bgcolor'}<>$in{'com_color'}<>$in{'point'}<>$in{'p_color'}<>";
	$CONFIG .= "$in{'obi_color'}<>$in{'sbj_color'}<>$in{'sat_color'}<>$in{'sun_color'}<>";
	$CONFIG .= "$in{'datetype'}<>$in{'tagmode'}<>$in{'autolink'}<>$in{'lockmode'}<>";
	$CONFIG .= "$in{'pastmode'}<>$in{'pastline'}<>$in{'ins_line'}<>$in{'ins_html'}<>$in{'ins_mode'}<>\n";
	# カラーチェックボックスの情報セット
	$CONFIG .= "$in{'t_color_chk'}<>$in{'bg_color_chk'}<>$in{'tx_color_chk'}<>$in{'link_chk'}<>$in{'alink_chk'}<>$in{'vlink_chk'}<>";
	$CONFIG .= "$in{'com_bgcolor_chk'}<>$in{'com_color_chk'}<>$in{'p_color_chk'}<>$in{'obi_color_chk'}<>$in{'sbj_color_chk'}<>$in{'sat_color_chk'}<>$in{'sun_color_chk'}<>\n";
	# 添付ファイルの設定情報セット
	$CONFIG .= "$in{'clip_size'}<>$in{'clip_icon'}<>";
	$CONFIG .= "$in{'GIF'}<>$in{'JPG'}<>$in{'PNG'}<>$in{'TEXT'}<>$in{'LHA'}<>$in{'ZIP'}<>$in{'PDF'}<>";
	$CONFIG .= "$in{'MIDI'}<>$in{'WORD'}<>$in{'EXCEL'}<>$in{'PPoint'}<>\n";

	# ログを更新
	open(OUT,">$logfile") || &error("Can't write $logfile");
	print OUT $CONFIG;
	close(OUT);

	# ロック解除
	if (-d $lockdir) { rmdir($lockdir); }  # Lockdirの削除


	## 結果の表示
	&header;
	$OK_MSG = "";
	if($in{'GIF'})    { $OK_MSG .= "GIF "; }
	if($in{'JPG'})    { $OK_MSG .= "JPG "; }
	if($in{'PNG'})    { $OK_MSG .= "PNG "; }
	if($in{'TEXT'})   { $OK_MSG .= "TEXT "; }
	if($in{'LHA'})    { $OK_MSG .= "LHA "; }
	if($in{'ZIP'})    { $OK_MSG .= "ZIP "; }
	if($in{'PDF'})    { $OK_MSG .= "PDF "; }
	if($in{'MIDI'})   { $OK_MSG .= "MIDI "; }
	if($in{'WORD'})   { $OK_MSG .= "WORD "; }
	if($in{'EXCEL'})  { $OK_MSG .= "EXCEL "; }
	if($in{'PPoint'}) { $OK_MSG .= "PPoint "; }
	print <<"_BREAK";
	<div Align=Center>
	<h3>Sunclip 設定内容一覧</h3>
	<form action="$ReturnName" method="$method">
	<input type=hidden name=mode value="setup">
	<input type=submit value=" 確認 ">
	</form></div><P>
	<div Align=Center>
	<table bgcolor=white border=1 cellspacing=0>
	  <tr><td colspan=2>■■基本項目の設定■■</td></tr>
	  <tr><td>管理パスワード</td><td>$in{'pass'}</td></tr>
	  <tr><td>最大記事保存数</td><td>$in{'max'}件</td></tr>
	  <tr><td>１ページ表\示数</td><td>$in{'p_log'}件</td></tr>
	  <tr><td>文字表\示サイズ</td><td>$in{'b_size'}</td></tr>
	  <tr><td>戻り先ＵＲＬ</td><td>http://$in{'home'}</td></tr>

	  <tr><td colspan=2>■■タイトルの設定■■</td></tr>
	  <tr><td>タイトル画像</td><td>http://$in{'t_img'}</td></tr>
	  <tr><td>タイトル文字</td><td>$in{'title'}</td></tr>
	  <tr><td>フォントサイズ</td><td>$in{'t_size'}</td></tr>
	  <tr><td>フォントタイプ</td><td>$in{'t_face'}</td></tr>
	  <tr><td>タイトルの色</td><td><font color=$in{'t_color'}>■$in{'t_color'}</font></td></tr>

	  <tr><td>一言メッセージ</td><td>$in{'submsg'}</td></tr>
	  <tr><td colspan=2>■■BODYタグの色設定■■</td></tr>
	  <tr><td>背景の壁紙</td><td>http://$in{'bg_img'}</td></tr>
	  <tr><td>背景の色</td><td><font color=$in{'bg_color'}>■</font>$in{'bg_color'}</td></tr>
	  <tr><td>文字の色</td><td><font color=$in{'tx_color'}>■$in{'tx_color'}</font></td></tr>
	  <tr><td>未リンクの色</td><td><font color=$in{'link'}>■$in{'link'}</font></td></tr>
	  <tr><td>リンク中の色</td><td><font color=$in{'alink'}>■$in{'alink'}</font></td></tr>
	  <tr><td>既リンクの色</td><td><font color=$in{'vlink'}>■$in{'vlink'}</font></td></tr>
	  <tr><td colspan=2>■■記事表\示部の設定■■</td></tr>
	  <tr><td>記事の表\示幅</td><td>$in{'log_wide'} $ratio</td></tr>
	  <tr><td>本文背景の壁紙</td><td>http://$in{'com_bgimg'}</td></tr>
	  <tr><td>本文の背景色</td><td><font color=$in{'com_bgcolor'}>■</font>$in{'com_bgcolor'}</td></tr>
	  <tr><td>本文の文字色</td><td><font color=$in{'com_color'}>■$in{'com_color'}</font></td></tr>
	  <tr><td>題名ポインタ形状</td><td>『$in{'point'}』</td></tr>
	  <tr><td>題名ポインタ色</td><td><font color=$in{'p_color'}>■$in{'p_color'}</font></td></tr>
	  <tr><td>題名の帯色</td><td><font color=$in{'obi_color'}>■$in{'obi_color'}</font></td></tr>
	  <tr><td>題名の文字色</td><td><font color=$in{'sbj_color'}>■$in{'sbj_color'}</font></td></tr>
	  <tr><td>土曜日の指定色</td><td><font color=$in{'sat_color'}>■$in{'sat_color'}</font></td></tr>
	  <tr><td>日曜日の指定色</td><td><font color=$in{'sun_color'}>■$in{'sun_color'}</font></td></tr>

	  <tr><td colspan=2>■■添付ファイルの設定■■</td></tr>
	  <tr><td>上限サイズ</td><td>$in{'clip_size'} byte</td></tr>
	  <tr><td>アイコン名</td><td>$in{'clip_icon'}</td></tr>
	  <tr><td>許可タイプ</td><td>$OK_MSG</td></tr>

	  <tr><td colspan=2>■■その他の応用設定■■</td></tr>
	  <tr><td>日付タイプ</td><td>$datemsg</td></tr>
	  <tr><td>タグ使用モード</td><td>$tagmsg</td></tr>
	  <tr><td>ＵＲＬ自動リンク</td><td>$automsg</td></tr>
	  <tr><td>ファイルロック</td><td>$lockmsg</td></tr>
	  <tr><td>過去ログ機能\ </td><td>$pastmsg</td></tr>
	  <tr><td>同時出力機能\ </td><td>$ins_msg</td></tr>
	</table><P>
	<hr width='80%'>
	</div>
_BREAK
	&footer;
	exit
}

## 設定ファイルの読みこみ --------------------------------------------------------------
sub config_load {
	open(IN,"$logfile") || &error("Can't open $logfile");
	@lines = <IN>;
	close(IN);
	($id,$pass,$max,$p_log,$b_size,$home,$t_img,$title,$t_size,$t_color,$t_face,$submsg,
	 $bg_img,$bg_color,$tx_color,$link,$alink,$vlink,$log_wide,$ratio,$com_bgimg,$com_bgcolor,$com_color,
	 $point,$p_color,$obi_color,$sbj_color,$sat_color,$sun_color,
	 $datetype,$tagmode,$autolink,$lockmode,$pastmode,$pastline,$ins_line,$ins_html,$ins_mode) = split(/<>/,$lines[0]);
	if ($id ne 'Sunclip') { &error("ログファイルの形式が正しくありません！"); }

	#カラーチェックボックスの情報セット
	($t_color_chk,$bg_color_chk,$tx_color_chk,$link_chk,$alink_chk,$vlink_chk,$com_bgcolor_chk,$com_color_chk,
	 $p_color_chk,$obi_color_chk,$sbj_color_chk,$sat_color_chk,$sun_color_chk) = split(/<>/,$lines[1]);

	#添付ファイル許可の情報セット
	@f_type = ();
	($clip_size,$clip_icon,$f_type[0],$f_type[1],$f_type[2],$f_type[3],$f_type[4],
	 $f_type[5],$f_type[6],$f_type[7],$f_type[8],$f_type[9],$f_type[10]) = split(/<>/,$lines[2]);

	#改行コード処理
	$submsg =~ s/<br>/\r/g;

	#ログ表示幅の単位を切り捨て
	$log_wide =~ s/\%//g;
}

## HTMLのヘッダー--------------------------------------------------------------
sub header { 
	print "Content-type: text/html\n\n";
	print <<"_BREAK";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=x-sjis">
<STYLE type="text/css">
<!--
body,tr,td,th { font-size: $b_size }
a:hover { text-decoration: underline; color: $alink }
span    { font-size: $t_size }
big     { font-size: 16pt }
small   { font-size: 9pt  }
-->
</STYLE>
_BREAK
	print "<title>$G_title</title></head>\n";

	#bodyタグ宣言
	local($BGIMG);
	$BGIMG = "background=\"http://$bg_img\"" if($bg_img);
	print "<body $BGIMG bgcolor=\"$bg_color\" text=\"$tx_color\" link=\"$link\" vlink=\"$vlink\" alink=\"$alink\">\n";
}

## HTMLのフッター--------------------------------------------------------------
sub footer {
	# 著作権表示（この行は削除不可）
	print "<div align=Center><small><!-- $ver -->\n";
	print "- <a href=\"http://homepage1.nifty.com/mystaff/\" target='_top'>$ver</a> -<P>\n";
	print "</small></div>\n";
	print "</body></html>\n";
	exit;
}

# パスワード暗号化  ----------------------------------------------
sub encrypt {
	local($inpw) = $_[0];
	local(@SALT, $salt, $encrypt);

	@SALT = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
	srand;
	$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
	$encrypt = crypt($inpw, $salt) || crypt ($inpw, '$1$' . $salt);
	return $encrypt;
}

# パスワード照合  ----------------------------------------------
sub decrypt {
	local($inpw, $logpw) = @_;
	local($salt, $key, $check);

	$salt = $logpw =~ /^\$1\$(.*)\$/ && $1 || substr($logpw, 0, 2);
	$check = "NO";
	if (crypt($inpw, $salt) eq "$logpw" || crypt($inpw, '$1$' . $salt) eq "$logpw")
		{ $check = "OK"; }
	return $check;
}

# 日時の取得-------------------------------------------------------------------
sub date_set {
	$ENV{'TZ'} = "JST-9";
	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

	# 日時の出力形式を整える
	$year  += 1900;
	$month = sprintf("%02d",$mon + 1);
	$mday  = sprintf("%02d",$mday);
	$hour  = sprintf("%02d",$hour);
	$min   = sprintf("%02d",$min);
	$sec   = sprintf("%02d",$sec);
	$date  = "$year\/$month\/$mday - $hour:$min:$sec";
}

# ホストアドレスの取得-------------------------------------------------------------------
sub host_get {
	$REMOTE_HOST = $ENV{'REMOTE_HOST'};
	$REMOTE_ADDR = $ENV{'REMOTE_ADDR'};
	if ($REMOTE_HOST eq '') { $REMOTE_HOST = $REMOTE_ADDR; }
	if ($REMOTE_HOST eq $REMOTE_ADDR) { 
		$REMOTE_HOST = gethostbyaddr(pack('C4',split(/\./,$REMOTE_HOST)),2) || $REMOTE_ADDR;
	}
}

#  ファイルロック(mkdir関数) ------------------------------------------------------------
sub file_lock {
	local($retry) = 5;
	while (!mkdir($lockdir, 0755)) {
	    if (--$retry <= 0) { &error("Lock Busy…混雑してます"); }
	    sleep(1);
	}
}

#  エラー処理  --------------------------------------------------------------------------
sub error {
	if (-d $lockdir) { rmdir($lockdir); }  # Lockdirの削除
	&header;
	print "<center>\n";
	print "<P><hr width=600><h3>エラー発生！</h3>\n";
	print "<font color=red><B>$_[0]</B></font>\n";
	print "<P><hr width=600></center>\n";
	print "</center>\n";
	&footer;
	exit;
}
