#!/usr/bin/perl
#	↑サーバーの「perl」のパスを指定。
#	駄目なら｢#!/usr/local/bin/perl｣
#	それでも駄目ならサーバー管理者に問い合わせて下さい。

#######################################################
##------------------- RANDUM CGI ---------------------
##   (C)Copyright 2001 by Chama.ne.jp
##       E-mail:master@chama.ne.jp
##       HP:http://www.chama.ne.jp
#######################################################
#バージョン情報、ディレクトリ構造はreadme.txtに掲載
$version = 'v2.0201';
#---------- 免責事項 -----------------------------------#
#####ご使用にあたって#####
#この免責事項、著作権の記載は修正や削除は出来ません。
# １．このプログラムの著作権はChama-Net事務局中川督之にあります。
# ２．このプログラムを使用したことによる一切の損害等は保障致しません。
# ３．ChamaNetの免責事項を遵守する必要があります。
# ４．このCGIは修正、再配布、無償譲渡することが出来ます。
#　ただし、スクリプト内の著作権、免責事項は修正出来ません。
# ５．画面上の著作権の表示を変更したい場合は有料になります。
# ６．その他についてはChama-Net事務局にお問い合わせ下さい。
#　　連絡先　http://www.chama.ne.jp
#　　E-mail　master@chama.ne.jp
#---------- ↓初期設定項目 -----------------------------------------------#
#保存ファイルの指定---------------------------------
#管理ＣＧＩ名
$kanri_cgi = 'kanri.cgi';

#基本情報変更用ＣＧＩ名
$kihon_cgi = 'kihon.cgi';

#リンク情報作成ＣＧＩ名
$linkmake_cgi = 'linkmake.cgi';

#リンク一覧表示ＣＧＩ名
$linklist_cgi = 'linklist.cgi';

#ランダム表示ＣＧＩ名
$index_cgi = 'index.cgi';

#ヘッダー情報修正CGI名
$header_cgi = 'header.cgi';

#フッター情報修正CGI名
$footer_cgi = 'footer.cgi';

#スタイルシート編集CGI名
$css_cgi = 'css.cgi';

#基本情報ファイル名
$k_file = 'data/kihon.dat';

#ＣＧＩ名著作権表示ファイル名
$cgi_file = 'data/cgi.dat';

#---------- ↓プログラム--------------------------------------------------#
require './jcode.pl';

&decode;
#ファイルロック
&o_lock;

#基本ファイルを開く
&k_open;

#ＣＧＩファイルを開く
&cgi_open;

#ロック解除
&c_lock;

if($in_pass){
	#パスワードチェック
	&pass_check;
	#管理メニューの表示
	&prev;
}else{
	#パスワード入力画面の表示
	&pass_in;
}


#サブルーチン--------------------------------------------------------------#
#デコード処理-------------------------------------------------------------
sub decode{
	if ($ENV{'REQUEST_METHOD'} eq "POST") {
		read(STDIN, $buff, $ENV{'CONTENT_LENGTH'});
	} else {
		$buff = $ENV{'QUERY_STRING'};
	}
	@pairs = split(/&/,$buff);
	foreach $pair (@pairs) {
		($name, $value) = split(/=/, $pair);
		$value =~ tr/+/ /;
		$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		$value =~ s/ /　/g;
		&jcode'convert(*value,'sjis');
		$in{$name} = $value;
	}
	$in_pass = $in{'in_pass'};
	$in_flag = $in{'in_flag'};
}
#基本ファイルのOPEN------------------------------------------------------
sub k_open{
	open KF,"$k_file" or die "$k_file オープン失敗";
		while (<KF>){
			chomp $_;
			$_ =~s/\r//g;
			($mail,$url,$logo,$title,$title_size,$title_color,
			$word_size,$word_color,$table_color,$td_color,$data,
			$bg_file,$pass,$track_color,
			$face_color,$shadow_color,$darkshadow_color,$hightlight_color,
			$dlight_color,$arrow_color,
			$title_on,$i_url,$i_logo,$i_bg_file) = split(/<>/,$_);
		}
	close KF;
}
#CGI情報ファイルのOPEN-------------------------------------------------------
sub cgi_open{
	open CGIIN,"$cgi_file" or die "$cgi_file オープン失敗";
		while (<CGIIN>){
			$_ =~ s/[\r\n\t\f]//g;;
			$copyright = $_;
		}
	close CGIIN;
	$copyright2 = $copyright;
	$copyright2 =~ s/&copy;/\(c\)/g;
	$copyright2 =~ s/<\/?$_[^>]*>//ig;
	$copyright2 =~ s/[\r\n\t\f]//g;
}
#パスワードチェック------------------------------------------------------
sub pass_check{
	unless($in_pass eq $pass){
		$err = 1;
		&err;
	}
}
#管理メニュー画面--------------------------------------------------------
sub prev{
	&top;
	print "<br>\n";
	print "<table border=\"0\" width=\"90%\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"$table_color\">\n";
	print "<tbody>\n";
	print "<tr>\n";
	print "<td align=\"center\" bgcolor=\"$word_color\">\n";
	print "<font size=3 color=\"#FFFFFF\">\n";
	print "管理メニュー（パスワード制限あり）";
	print "</font>\n";
	print "</td>\n";
	print "</tr>\n";
	print "<tr>\n";
	print "<td align=\"center\" bgcolor=\"$td_color\">\n";
		print "<table border=\"0\" width=\"90%\" cellpadding=\"0\" cellspacing=\"0\">\n";
		print "<tbody>\n";
		print "<tr>\n";
		print "<td valign=\"top\">\n";
		print "<font size=\"$word_size\" color=\"$word_color\">\n";
		print "<br>\n";
		print "<FORM action=\"$kihon_cgi\" method=\"post\">\n";
		print "１．基本情報の変更（パスワードの変更）\n";
		print "<input type=\"hidden\" name=\"in_pass\" value=\"$in_pass\">\n";
		print "<input type=\"submit\" value=\"GO\">\n";
		print "</FORM>\n";
		print "<FORM action=\"$linkmake_cgi\" method=\"post\">\n";
		print "２．リンク情報の作成\n";
		print "<input type=\"hidden\" name=\"in_pass\" value=\"$in_pass\">\n";
		print "<input type=\"submit\" value=\"GO\">\n";
		print "</FORM>\n";
		print "<FORM action=\"$linklist_cgi\" method=\"post\">\n";
		print "３．リンク一覧（修正・削除）\n";
		print "<input type=\"hidden\" name=\"in_pass\" value=\"$in_pass\">\n";
		print "<input type=\"submit\" value=\"GO\">\n";
		print "</FORM>\n";
		print "<FORM action=\"$header_cgi\" method=\"post\">\n";
		print "４．ヘッダー情報修正\n";
		print "<input type=\"hidden\" name=\"in_pass\" value=\"$in_pass\">\n";
		print "<input type=\"submit\" value=\"GO\">\n";
		print "</FORM>\n";
		print "<FORM action=\"$footer_cgi\" method=\"post\">\n";
		print "５．フッター情報修正\n";
		print "<input type=\"hidden\" name=\"in_pass\" value=\"$in_pass\">\n";
		print "<input type=\"submit\" value=\"GO\">\n";
		print "</FORM>\n";
		print "<FORM action=\"$css_cgi\" method=\"post\">\n";
		print "６．スタイルシートの編集\n";
		print "<input type=\"hidden\" name=\"in_pass\" value=\"$in_pass\">\n";
		print "<input type=\"submit\" value=\"GO\">\n";
		print "</FORM>\n";

		print "<A href=\"$index_cgi\" target=\"randum\">";
		print "７．ランダム表\示を見る";
		print "</A>\n";
		print "</font>\n";
		print "</td>\n";
		print "</tr>\n";

		print "<tr>\n";
		print "<td align=\"right\">\n";
		print "<font size=\"$word_size\" color=\"$word_color\">\n";
		print "このCGIのバージョン：\n";
		print $version;
		print "</font>\n";
		print "</td>\n";
		print "</tr>\n";
		print "</tbody>\n";
		print "</table>\n";
	print "</td>\n";
	print "</tr>\n";
	print "</tbody>\n";
	print "</table>\n";
	&last;
}
#パスワード入力画面------------------------------------------------------
sub pass_in{
	&top;
	print "<br>\n";
	print "<table width=\"300\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"$table_color\">\n";
	print "<tbody>\n";
	print "<tr bgcolor=\"$td_color\">\n";
	print "<td align=\"center\">\n";
	print "<font size=\"$title_size\" color=\"$title_color\">\n";
	print "パスワード入力画面\n";
	print "</font>\n";
	print "</td>\n";
	print "</tr>\n";
	print "</tbody>\n";
	print "</table>\n";
	print "<br><br>\n";

	print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#333333\">\n";
	print "<tbody>\n";
	print "<tr bgcolor=\"#dddddd\">\n";
	print "<td align=center>\n";
	print "パスワード\n";
	print "</td>\n";
	print "</tr>\n";
	print "<tr bgcolor=\"#dddddd\">\n";
	print "<td align=center>\n";
	print "<FORM action=$kanri_cgi method=post>\n";
	print "<INPUT type=password size=20 name=\"in_pass\">\n";
	print "<INPUT type=submit value=\"送信\"\n";
	print "</FORM>\n";
	print "</td>\n";
	print "</tr>\n";
	print "</tbody>\n";
	print "</table>\n";
	&last;
}
#エラー画面の表示--------------------------------------------
sub err{
	#ロック解除
	&c_lock;

	&top;
	print "<table border=0 bgcolor=$word_color>\n";
	print "<tbody>\n";
	print "<tr>\n";
	print "<td align=center bgcolor=#FFFFFF>\n";
	print "<font size=3 color=$word_color>\n";
	print "入力エラーです。";
	print "</font>\n";
	print "</td>\n";
	print "</tr>\n";
	print "</tbody>\n";
	print "</table>\n";
	print "<br><br>\n";
	if($err == 1){
		print "パスワードが違います";
	}
	print "<br><br>\n";
	&last;
}
#HTMLprintサブルーチン---------------------------------------------------
sub top{
	print "Content-type:text/html\n\n";
	print "<html><head><title>$title</title>\n";
	print "<STYLE type=text/css>\n";
	print '<!--',"\n";
	print 'body {scrollbar-Track-Color:',$track_color,';',"\n";
	print 'scrollbar-Face-Color:',$face_color,';',"\n";
	print 'scrollbar-Shadow-Color:',$shadow_color,';',"\n";
	print 'scrollbar-DarkShadow-Color:',$darkshadow_color,';',"\n";
	print 'scrollbar-Highlight-Color:',$hightlight_color,';',"\n";
	print 'scrollbar-3dLight-Color:',$dlight_color,';',"\n";
	print 'scrollbar-Arrow-Color:',$arrow_color,';}',"\n";
	print 'INPUT{',"\n";
	print 'color : blown;border-width : 1px 1px 1px 1px;border-style : solid solid solid solid;border-color : navy navy navy navy;}',"\n";
	print '-->',"\n";
	print "</STYLE>\n";
	print "</head>\n";
	if($bg_file){
		print "<body background=$bg_file>\n";
	}else{
		print "<body bgcolor=$bg_color>\n";
	}
	print "<center>\n";
	print "<font size=$word_size color=$word_color>\n";
	if($logo){
		print "<IMG src=$logo>\n";
		print "<br>\n";
	}
	print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"$table_color\">\n";
	print "<tr bgcolor=\"$td_color\">\n";
	print "<td align=center>\n";
	print "<font size=$title_size color=$title_color>\n";
	print "$title\n";
	print "</font>\n";
	print "</td>\n";
	print "</tr>\n";
	print "</table>\n";
}
sub last{
	print "<HR width=\"90%\" color=\"$word_color\">\n";
	print "<font size=\"$word_siz\" color=\"$word_color\">\n";
	print $copyright;
	print "</font>\n";
	print "</center>";
	print "</body></html>\n";
	exit;
}
#データロック------------------------------------------------
sub o_lock{
	open(LOCK,">data.lock");
	flock(LOCK,2);
}
#ロック解除--------------------------------------------------
sub c_lock{
	close(LOCK);
}