#!/usr/bin/perl --
#	↑サーバーの「perl」のパスを指定。
#	駄目なら｢#!/usr/local/bin/perl5｣
#	それでも駄目ならサーバー管理者に問い合わせて下さい。

###########################################################################
##------------------- まが CGI(バックナンバー)  -------------------
##   (C)Copyright 2001 by Chama.ne.jp
##   E-mail:master@chama.ne.jp
##   HP:http://www.chama.ne.jp
###########################################################################
# 免責事項、バージョン情報などはkanri.cgiを参照
#---------- ↓初期設定項目 -----------------------------------------------#
#このCGIの名前
$backno_cgi = 'backno.cgi';

#本文表示CGI名
$backno2_cgi = 'backno2.cgi';

#管理ＣＧＩ名
$kanri_cgi = 'kanri.cgi';

#マガジン削除ＣＧＩ名
$mdele_cgi = 'mdele.cgi';

#マガジンの修正ＣＧＩ名
$msyuusei_cgi = 'msyuusei.cgi';

#マガジン配信ＣＧＩ名
$mail2_cgi = 'mail2.cgi';

#基本情報ファイル名
$k_file = 'def/kihon.dat';

#ＣＧＩ名著作権表示ファイル名
$cgi_file = 'def/cgi.dat';

#リストデータファイル名
$index_file = 'def/index2.dat';

#---------- ↓プログラム--------------------------------------------------#
#----------↑設定終了↓以下は修正しない。---------------------------------
require './jcode.pl';
&decode;
#ファイルロック
&o_lock;

#基本ファイルを開く
&k_open;

#ＣＧＩファイルを開く
&cgi_open;

#メルマガリストを取得
&f_open;

#ロック解除
&c_lock;

&prev;
#サブルーチン--------------------------------------------------------------#
#デコード処理-------------------------------------------------------------
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_next = $in{'next'};
}
#基本ファイルのOPEN------------------------------------------------------
sub k_open{
	open KF,"$k_file" or die "$k_file OPEN ERROR (READ)";
		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,$sendmail,$pc_prevmax,$i_prevmax,$track_color,
			$face_color,$shadow_color,$darkshadow_color,$hightlight_color,
			$dlight_color,$arrow_color,$subject_form,$subject_in,$subject_out,
			$mail_on,$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 OPEN ERROR (READ)";
		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;
}
#データファイルのOPEN------------------------------------------------------
sub f_open{
	$m_cnt = 0;
	#メルマガデータを取得
	open IIN,"$index_file" or die "$index_file OPEN ERROR (READ)";
		while (<IIN>){
			chomp $_;
			($m_no[$m_cnt],$m_title[$m_cnt],$m_time[$m_cnt]) = split(/<>/,$_);
			$m_cnt++;
		}
	close IIN;
}
#エラー処理--------------------------------------------------------------
sub err{
	#ロック解除
	&c_lock;
	&top;
	print "<font size=$word_size color=$word_color>\n";
	print "パスワードが違います。";
	print "<br><br>ブラウザの戻るボタンで戻り修正して下さい。</font><br>\n";
	&last;
}
#メニューの表示----------------------------------------------------------
sub prev{
	&top;
	print "<br><br>\n";
	print "<table border=\"0\" width=\"90%\" cellpadding=\"0\" cellspacing=\"0\">\n";
	print "<tbody>\n";
	print "<tr>\n";
	print "<td align=\"center\" bgcolor=\"$word_color\">\n";
	print "<font size=3 color=\"#FFFFFF\">\n";
	print "メルマガ一覧\n";
	print "</font>\n";
	print "</td>\n";
	print "</tr>\n";
	print "<tr>\n";
	print "<td align=\"center\">\n";
	print "<br>\n";
	print "<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\">\n";
	print "<tbody>\n";
	if($in_next){
		$p_cnt = $in_next;
	}else{
		$p_cnt = $m_cnt-1;
	}
	if($p_cnt > $pc_prevmax){
		$last_cnt = $p_cnt -$pc_prevmax+1;
	}else{
		$last_cnt = 0;
	}
	while($p_cnt >=$last_cnt){
		print "<tr>\n";
		print "<td>\n";
		print "<font size=\"$word_size\" color=\"$word_color\">\n";
		print "●\n";
		print "<A href=\"$backno2_cgi?no=$m_no[$p_cnt]\" target=\"new\">\n";
		print $m_title[$p_cnt],"\n";
		print "</A>\n";
		print "</font>\n";
		print "</td>\n";
		print "<td>\n";
		print "<font size=\"$word_size\" color=\"$word_color\">\n";
		print $m_time[$p_cnt],"\n";
		print "</font>\n";
		print "</td>\n";
		print "</tr>\n";
		$p_cnt--;
	}
	print "</tbody>\n";
	print "</table>\n";

	print "<font size=$word_size color=$word_color>\n";
	print "<br><br>\n";
	if($in_next){
		$back_cnt = $in_next + $pc_prevmax;
		if($back_cnt == $m_cnt-1){
			$back_cnt = '';
		}
		print "<A href=\"$ibackno_cgi?next=$back_cnt\">\n";
		print "[BACK]\n";
		print "</A>\n";
		print "　\n";
	}
	if($p_cnt > 0){
		print "<A href=\"$ibackno_cgi?next=$p_cnt\">\n";
		print "[NEXT]\n";
		print "</A>\n";
	}
	print "<br><br>\n";
	print "<A href=\"$url\">\n";
	print "ホームページに戻る\n";
	print "</A>\n";
	print "</font>\n";
	print "</td>\n";
	print "</tr>\n";
	print "</tbody>\n";
	print "</table>\n";
	&last;
}
#HTMLprintサブルーチン---------------------------------------------------
sub top{
	print "Content-type:text/html\n\n";
	print "<html><head><title>$title</title>\n";
	print '<meta HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">',"\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";
	}
	unless($title_on == 2){
		print "<table 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 "$title\n";
		print "</font>\n";
		print "</td>\n";
		print "</tr>\n";
		print "</tbody>\n";
		print "</table>\n";
	}
}
sub last{
	print "<HR width=\"90%\" color=\"$word_color\">\n";
	print "<font size=\"$word_size\" 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);
}
