#!/usr/local/bin/perl

# 注意：NTサーバでは画像のUP機能がうまく動きません

### 【ここからヘッダ】 ####################################################
#
#　著作権の告知                                                              
#　diary (diary.cgi)
#　Copyright (c) 1998 To-chat Script Factory. All Rights Reserved.
#　Maintained by Tanaka Hiroyuki <maru@post.co.jp>
#
$script_url = "\"http://www2m.biglobe.ne.jp/~To-chat/script/index.cgi\"";
$script_v = "diary v1.0";
#
#　このスクリプトはフリーで公開しています。
#　この著作権の告知に手を加えない限り、diary.cgi を使用し改変することがで
#　きます。
#　でもお中元やお歳暮もお待ちしてたりなんかしちゃいます。
#　お贈りいただける方はmaru@post.co.jpまで住所等をお問合わせ下さい（笑）
#
#　当スクリプトを使用することにより、使用者は To-chat Script Factory に対し、
#　使用によって生じる可能性のあるいかなる責務に関しても免責を保証したものと                                 
#  します。
#                                                                         
#　事前の書面による同意を得ることなしに当スクリプトのコードを販売することは、 
#　禁止します。                                               
#                                                                            
#　当方の許可無く、当スクリプト、もしくは当スクリプトをカスタマイズしたもの
#　を再配布することは堅く禁じます。再配布を希望される場合は、必ず事前に許可
#　を得てください。
#
#　いかなる場合も、著作権表示およびこのヘッダ部分に手を加えることは禁止します。
#
################################################## 【ヘッダはここまで】 ###

### 【ここから設定】 #####################################################
#
#　必要に応じて以下の項目の設定を変更して下さい。
#　クオーテーションマーク(')は必要なものですので削除しないで下さい。

# 管理用パスワード（必ず変更）
$password = '1203'; 

# CGIファイル（このファイル）
$cgi_url = 'diary.cgi';

# 画像UP用CGIファイル
$upcgi_url = 'upload.cgi';

# ログを保存するディレクトリ。このCGIからの相対的位置を指定
$log_directory = './log/'; 

# 設定ファイル
$room = 'r.dat';

# ログ保存ファイル
$file = 'log.dat';

# postが使えないサーバーはgetに変更。
$method = 'post';

# 海外サーバー利用時、時差がある場合は以下を設定する。
# たとえば表示時刻に３時間の遅れがある場合は、$HourOffset = '+3'; と変更する。
$HourOffset = '0';

################################################## 【 設定はここまで 】#####

$dir_room = "$log_directory$room";
$dir_file = "$log_directory$file";

$space = "　";

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+($HourOffset*3600));
$month1 = ($mon + 1);
$date_now = sprintf("%02d/%02d/%02d",$year,$month1,$mday);
$time2= time;

$ENV{'TZ'} = "GMT";
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = localtime(time + 30*24*60*60);
$youbi = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday) [$wdayg];
$month = (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec) [$mong];
$date_gmt = sprintf("$youbi\, %02d\-$month\-%02d %02d:%02d:%02d GMT",$mdayg,$yearg,$hourg,$ming,$secg);

if (!open(FILE,"$dir_file")) { &openchat1;} close(FILE);
if (!open(ROOM,"$dir_room")) { &openchat2;} close(ROOM);

$cookie_name = 'keijiban40';

require './jcode.pl';
require "$dir_room";

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {

	($name,$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/ , / &#44; /g;
	$value =~ s/\n//g;
	if ($name eq "target") { push(@RM,$value); }
	else { $FORM{$name} = $value; }

}

      if($max eq ""){$max = "100";}
      if($titlecolor eq ""){$titlecolor = $txtcolor;}
      $top = "<center>This CGI Script is <a href=$script_url>$script_v</a></center>";
      if($z1color) { $z1 = "bgcolor\=\"$z1color\""; } else {$z1 = '';}


###　分岐　###

  if ($buffer eq "" ) { &disp; }
  else { 
      if ($FORM{'action'} eq "regist") { &regist; }
      elsif ($FORM{'action'} eq "regist2") { &regist2; }
      elsif ($FORM{'action'} eq "mente") { &mente; }
      elsif ($FORM{'action'} eq "admin") { &admin; }
      elsif ($FORM{'action'} eq "admin2") { &admin2; }
      elsif ($FORM{'action'} eq "change") { &change; }
      elsif ($FORM{'action'} eq "change2"){
	  	if ($FORM{'change'}) { &change2; }
	  	elsif ($FORM{'delete'}) { &delete; }
      }
      elsif ($FORM{'action'} eq "change3") { &change3; }
      elsif ($FORM{'action'} eq "remove") { &remove; }
      elsif ($FORM{'action'} eq "delmsg") { &delmsg; }
      else { &disp; }
 
  }

###　表示作業　###

sub disp {

  &decode_cookie($cookie_name);

    &title;
    print "$head<br>\n";

    # print "<DIV ALIGN=center><TABLE border=0 width=\"70\"><TR><TD>$rinji</TD></TR></TABLE></DIV>\n";

if (!open(IN,"$dir_file")) { $errorcode = "1"; &error; }
@DATA = <IN>;
close(IN);

if ($FORM{'top'}) { $next = 0; }  else {
if ($FORM{'next'} eq "") { $next = 0; }  else { $next = $FORM{'next'}; }}

$accesses = @DATA;
@DATA = reverse(@DATA);
@DATA2 = splice(@DATA,$next,$limit); 
$next2 = ($next + $limit);

foreach $data (@DATA2) {

    if ($data =~ /(.*) \, (.*) \, (.*) \, (.*)/) { $date = $1; $name = $2; $com = $3; $new = $4; $hr = 0; }
    else { next; }

	print "<DIV ALIGN=center>\n";
	print "<form action=\"$cgi_url\" method=$method>\n";
	print "<input type=hidden name=action value=\"msg\">\n";
    print "<input type=hidden name=next value=\"$next\">\n";
    print "<table border=0 cellpadding=\"1\" cellspacing=\"0\" width=\"510\" bgcolor=\"\#FFFFFF\"><tr><td><TABLE border=\"0\" cellspacing=\"3\" cellpadding=\"1\" width=\"100%\">\n";
    print "<TR><TD align=left $z1>$space$date\n";
    if($name) { print "$space$name\n"; } 
    print "</TD></TR>\n";
    print "<TR><TD bgcolor=\"\#FFFFFF\"><img src=toumei.gif width=400 height=4><br>\n";
    print "$com\n";
    print "</TD></TR></TABLE></td></tr></table></form></DIV>\n";


}

if($next2 < $accesses){

    print "<br><DIV ALIGN=center><form method=\"$method\" action=\"$cgi_url\">\n";
    print "<input type=hidden name=\"next\" value=\"$next2\">\n";
    if($next ne "0"){ print "<input type=submit name=\"top\" value=\"TOPに戻る\">\n"; }
    if($limit eq "1"){ print "<input type=submit name=\"change\" value=\"次を表\示\">\n"; }
    else { print "<input type=submit name=\"change\" value=\"次の$limit件を表\示\">\n"; }
    print "</form></DIV>\n";

} elsif($next ne "0") { 

    print "<br><DIV ALIGN=center><form method=\"$method\" action=\"$cgi_url\">\n";
    print "<input type=hidden name=\"next\" value=\"$next2\">\n";
    print "<input type=submit name=\"top\" value=\"TOPに戻る\">\n";
    print "</form></DIV>\n";

}

    print "<hr size=1>\n";
    print "$top</body></html>\n";
    exit;

}

###　認証画面　###

sub mente {

  &title;
  &mentelog;

}

###　認証画面２　###

sub remente {

  &title;
  print "パスワードが正しくありません。もう一度お確かめ下さい。<br>\n";
  &mentelog;
  exit;

}

###　認証画面３　###

sub mentelog {

if($FORM{'action'} eq "regist") {
$mente1 = '<option  value="admin">設定の変更';
$mente2 = '<option  value="regist" selected>新規に登録';
$mente3 = '<option  value="change">変更・削除'; }
elsif($FORM{'action'} eq "change") {
$mente1 = '<option  value="admin">設定の変更';
$mente2 = '<option  value="regist">新規に登録';
$mente3 = '<option  value="change" selected>変更・削除'; }
else{
$mente1 = '<option  value="admin" selected>設定の変更';
$mente2 = '<option  value="regist">新規に登録';
$mente3 = '<option  value="change">変更・削除'; }

print <<"_MENTELOG_";
<HR><DIV ALIGN=CENTER>
<form method="$method" action="$cgi_url">
<table><tr><td>●●●$space<b>管理用メニュー</b>$space●●●<br><br>
<table border=0>
<tr><td>メニュー</td><td>：</td><td><select name="action">
$mente1
$mente2
$mente3
</select>$space</td></tr>
<tr><td>パスワード</td><td>：</td><td><input type=password name="pass" size="20">$space</td></tr>
</table><br>
<table width="500" cellpadding="10">
<tr><td>
<ul><li>メニューから行う作業を選択して下さい。。
<li>パスワード欄に管理用パスワードを記入して下さい。
</ul></td></tr></table>
<input type=submit value="Submit"></td></tr>
</table>
</form></DIV></body></html>
_MENTELOG_

}

###　設定フォーム　###

sub admin {

  if ($FORM{'pass'} ne $password) { &remente; }
  &title;

print <<"_ADMIN1_";
<HR><DIV ALIGN=CENTER>
<form method="$method" action="$cgi_url">
<input type=hidden name="action" value="admin2">
<table><tr><td>●●●$space<b>基本設定</b>$space●●●<br><br>
<table border="0">
<tr><td>タイトル</td><td>：</td><td><input type=text name="cgte" size="30" value="$title">$space</td></tr>
<tr><td>ログの保存数</td><td>：</td><td><input type=text name="cgmax" size="10" value="$max">$space</td></tr>
<tr><td>表\示数／頁</td><td>：</td><td><input type=text name="cglimit" size="10" value="$limit">$space</td></tr>

</table><br>
<table width="500" cellpadding="10">
<tr><td>
<ul><li>タイトル欄にはタイトルをご記入下さい。
<li>ログの保存数欄に履歴情報を何件まで保存させるか記入して下さい。
<li>表\示数／頁欄に１ページあたりの表\示数を記入して下さい。
</ul></td></tr></table><BR><BR>
</td></tr><tr><td>
●●●$space<b>diary の色設定</b>$space●●●<br><br>
<table border=0>
<tr><td>BGCLOOR</td><td>：</td><td><input type=text name="cgcr" size="10" value="$color">
$space背景色の指定</td></tr>
<tr><td>TEXTCOLOR</td><td>：</td><td><input type=text name="cgtr" size="10" value="$txtcolor">
$space文字色の指定</td></tr>
<tr><td>LINKCOLOR</td><td>：</td><td><input type=text name="cglr" size="10" value="$linkcolor">
$spaceリンク色の指定</td></tr>
<tr><td>ALINKCOLOR</td><td>：</td><td><input type=text name="cgar" size="10" value="$alinkcolor">
$spaceリンクをクリックしたときの色の指定</td></tr>
<tr><td>VLINKCOLOR</td><td>：</td><td><input type=text name="cgvr" size="10" value="$vlinkcolor">
$space行ったことのあるリンク色の指定</td></tr>
<tr><td>DATE_COLOR</td><td>：</td><td><input type=text name="cgz1r" size="10" value="$z1color">
$space日付のバックのカラー</td></tr>
</table><br>
<table width=500 cellpadding=10>
<tr><td>
<UL><LI>背景・文字色は#000000〜#ffffffの # + 半角英数字６字の形（色コード・16進数）で指定します。</UL></td></tr></table><BR><BR>
</td></tr><tr><td>
●●●$space<b>オプション</b>$space●●●<br><br>
<table border="0">
<tr><td>背景の画像</td><td>：</td><td><input type=text name="cgbd" size=60 value="$bd"></td></tr>
</table><br>

<table width="500" cellpadding="10">
<tr><td>
<UL>
<LI>壁紙を張る場合は、画像の場所(URL)を<b>http://〜</b>の形で背景の画像欄に記入して下さい。
</UL></td></tr></table><BR><BR>
</td></tr><tr><td>
●●●$space<b>ヘッダスペース</b>$space●●●<br><br>
<table border=0>
<tr valign=top><td>ヘッダ</td><td>：</td><td><textarea name="cghead" rows="5" cols="60">$head</textarea></td></tr>
</table><br>

<table width="500" cellpadding="10">
<tr><td>
<UL>
<LI>ここに記入された内容は、ヘッダ部分に表\示されます。タイトル表\示などにお使い下さい。
<LI>この欄はHTMLのタグが使えます。HTMLの文法に則ってお書き下さい。
</UL></td></tr></table><BR><BR>
</td></tr><tr><td>
●●●$space<b>臨時連絡用スペース</b>$space●●●<br><br>
<table border="0">
<tr valign=top><td>臨時連絡</td><td>：</td><td><textarea name="cgrinji" rows="5" cols="60">$rinji</textarea></td></tr>
</table><br>

<table width="500" cellpadding="10">
<tr><td>
<UL>
<LI>ここに記入された内容は、ヘッダの下に表\示されます。常に一番上に表\示しておきたい臨時連絡用途などにお使い下さい。
<LI>この欄はHTMLのタグが使えます。HTMLの文法に則ってお書き下さい。
</UL></td></tr></table><p>
<input type=submit value="Submit"> <input type=reset></td></tr>
</table>
</form></DIV></body></html>
_ADMIN1_

}

###　設定作業　###

sub admin2 {

  $title=$FORM{'cgte'}; unless ($title) { $errorcode = "4"; &quit; }
     if ($title =~ /</) { $errorcode = "12"; &quit; }
     if ($title eq "$userpass") { $errorcode = "14"; &quit; }
     $ctitle = "$title";
     $ctitle =~ s/ //g; $ctitle =~ s/　//g; 
     unless ($ctitle) { $errorcode = "4"; &quit; }
  $color=$FORM{'cgcr'}; unless ($color) { $errorcode = "6"; &quit; }
  $txtcolor=$FORM{'cgtr'}; unless ($txtcolor) { $errorcode = "7"; &quit; }
  $linkcolor=$FORM{'cglr'}; unless ($linkcolor) { $errorcode = "8"; &quit; }
  $alinkcolor=$FORM{'cgar'}; unless ($alinkcolor) { $errorcode = "9"; &quit; }
  $vlinkcolor=$FORM{'cgvr'}; unless ($vlinkcolor) { $errorcode = "10"; &quit; }
  $z1color=$FORM{'cgz1r'};
  $bd=$FORM{'cgbd'}; if ($bd && index($bd,http) !=0 ) { $errorcode = "20"; &quit; }
  $cgmax=$FORM{'cgmax'}; 
    if ($cgmax =~ /[^0-9]/) { $errorcode = "21"; &quit; }
    unless ($cgmax) { $errorcode = "23"; &quit; }
  $cglimit=$FORM{'cglimit'};
    if ($cglimit =~ /[^0-9]/) { $errorcode = "22"; &quit; }
    unless ($cglimit) { $errorcode = "24"; &quit; }
  $head=$FORM{'cghead'};
  $rinji=$FORM{'cgrinji'};

  if ($cgmax ne $max){ &reset_log; }

  $bd =~ s/'/\\'/gi; 
  $title =~ s/'/\\'/gi; 
  $color =~ s/'/\\'/gi; 
  $txtcolor =~ s/'/\\'/gi; 
  $linkcolor =~ s/'/\\'/gi; 
  $vlinkcolor =~ s/'/\\'/gi; 
  $alinkcolor =~ s/'/\\'/gi; 
  $z1color =~ s/'/\\'/gi; 
  $max =~ s/'/\\'/gi;
  $limit =~ s/'/\\'/gi;
  $head =~ s/'/\\'/gi;
  $rinji =~ s/'/\\'/gi;

  open(DATA,">$dir_room") || die "error";

  $mentecc01 = "\$bd = \'$bd\'"; $mentecc01 =~ s/\012//gi;
  $mentecc02 = "\$title=\'$title\'"; $mentecc02 =~ s/\012//gi;
  $mentecc03 = "\$color=\'$color\'"; $mentecc03 =~ s/\012//gi;
  $mentecc04 = "\$txtcolor=\'$txtcolor\'"; $mentecc04 =~ s/\012//gi;
  $mentecc05 = "\$linkcolor=\'$linkcolor\'"; $mentecc05 =~ s/\012//gi;
  $mentecc06 = "\$vlinkcolor=\'$vlinkcolor\'"; $mentecc06 =~ s/\012//gi;
  $mentecc07 = "\$alinkcolor=\'$alinkcolor\'"; $mentecc07 =~ s/\012//gi;
  $mentecc20 = "\$max=\'$cgmax\'"; $mentecc20 =~ s/\012//gi;
  $mentecc21 = "\$limit=\'$cglimit\'"; $mentecc21 =~ s/\012//gi;
  $mentecc22 = "\$z1color=\'$z1color\'"; $mentecc22 =~ s/\012//gi;
  $mentecc23 = "\$head=\'$head\'";
  $mentecc24 = "\$rinji=\'$rinji\'";

  print DATA "$mentecc01\;\n";
  print DATA "$mentecc02\;\n";
  print DATA "$mentecc03\;\n";
  print DATA "$mentecc04\;\n";
  print DATA "$mentecc05\;\n";
  print DATA "$mentecc06\;\n";
  print DATA "$mentecc07\;\n";
  print DATA "$mentecc20\;\n";
  print DATA "$mentecc21\;\n";
  print DATA "$mentecc22\;\n";
  print DATA "$mentecc23\;\n";
  print DATA "$mentecc24\;\n";
  print DATA "1\;\n";
  close(DATA);

    print "Content-type: text/html\n\n";
    print "<html><head><title>$title</title>\n";
    print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=$cgi_url\"></head>\n";
    print "<body bgcolor=\"$color\" text=\"$txtcolor\" link=\"$linkcolor\" vlink=\"$vlinkcolor\" alink=\"$alinkcolor\" background=\"$bd\">\n";

  print "$space変更しました。</blockquote></body></html>\n";
  exit;

}

###　登録フォーム　###

sub regist {

  if ($FORM{'pass'} ne $password) { &remente; }
  &title;

print <<"_REGIST_";
<HR><DIV ALIGN=CENTER>

<table><tr><td>●●●$space<b>登録内容</b>$space●●●<br><br>

<form ENCTYPE="multipart/form-data" method=post action="$upcgi_url">
<table border="0">
<tr valign=top><td>画像</td><td>：</td><td><input type=file name="uploaded_file">$space<input type=submit value="Upload"></td></tr></table>
</form></center>

<form method="$method" action="$cgi_url">
<input type=hidden name="action" value="regist2">
<table border="0">
<tr valign=top><td>日付</td><td>：</td><td><input type=text name="rireki_date" size="60" value="$date_now">$space</td></tr>
<tr valign=top><td>題名</td><td>：</td><td><input type=text name="rireki_title" size="60">$space</td></tr>
<tr valign=top><td>内容</td><td>：</td><td><textarea name="comment" rows="10" cols="60" WRAP=SOFT></textarea>$space</td></tr>
<tr valign=top><td><input type=submit value="Submit"></td><td>$space</td></tr></table>
</form>
</td></tr></table>
</DIV></body></html>
_REGIST_

}

###　登録作業　###

sub regist2 {

  $img =$FORM{'img'};
  if($img){ $img2 = "<table border=0><tr><td><img src=$img></td></tr></table><br>"; }

  $rireki_date=$FORM{'rireki_date'};
  $rireki_date =~ s/　//g;
  $rireki_date =~ s/ //g;
  if ($rireki_date eq "") { $errorcode = "1";  &quit; }

  $rireki_title=$FORM{'rireki_title'};

  $comment =$FORM{'comment'};
      $comment =~ s/\015\012/\012/g;
      $comment =~ s/\015/\012/g;
      $comment =~ s/\012/<br>/g;
  if ($comment eq "") { $errorcode = "3";  &quit; }

	if (!open(DB,"$dir_file")) { $errorcode = "1"; &error; }
	@lines = <DB>;
	close(DB);

    @TESTLOG = reverse(@lines);
    @TESTLOG2 = splice(@TESTLOG,0,2);

    foreach $line (@TESTLOG2)
    { if ($line =~ /(.*) , (.*) , (.*) , (.*)/)
       { $test_title = $2; $test_com = $3; 
       if ($test_title eq $FORM{'rireki_title'} && $test_com eq $comment) { &disp; }
    }}

	$axs = @lines;
	if ($axs >= $max) { shift(@lines); }
	push(@lines,"$FORM{'rireki_date'} \, $FORM{'rireki_title'} \, $img2$comment \, $time2\n");

	if (!open(DB,">$dir_file")) {  $errorcode = "1"; &error; }
	print DB @lines;
	close(DB);

&disp; 

}

###　変更・削除画面　###

sub change {

  if ($FORM{'pass'} ne $password) { &remente; }
  &title;

    print "$head\n";
    print "<a href=\"$cgi_url\">▼ 通常画面に戻る</a><br><br>\n";

if (!open(IN,"$dir_file")) { $errorcode = "1"; &error; }
@DATA = <IN>;
close(IN);

if ($FORM{'top'}) { $next = 0; }  else {
if ($FORM{'next'} eq "") { $next = 0; }  else { $next = $FORM{'next'}; }}

$accesses = @DATA;
@DATA = reverse(@DATA);
@DATA2 = splice(@DATA,$next,$limit); 
$next2 = ($next + $limit);

foreach $data (@DATA2) {

    if ($data =~ /(.*) \, (.*) \, (.*) \, (.*)/) { $date = $1; $name = $2; $com = $3; $new = $4; }
    else { next; }

    print "<DIV ALIGN=center><TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"600\" bgcolor=\"\#FFFFFF\"><tr><td><TABLE border=\"0\" cellspacing=\"3\" cellpadding=\"1\" width=\"100%\">\n";
    print "<TR><TD align=left $z1>$space$date";
    if($name) { print "$space$name\n"; } 
    print "</TD></TR>\n";
    print "<TR><TD bgcolor=\"\#FFFFFF\"><img src=toumei.gif width=400 height=4><br>\n";
    print "$com\n";
    print "</TD></TR></TABLE></td></tr></table></DIV>\n";

    print "<DIV ALIGN=center><form method=\"$method\" action=\"$cgi_url\">\n";
    print "<input type=hidden name=\"action\" value=\"change2\">\n";
    print "<input type=submit name=\"change\" value=\" 変更 \"><input type=submit name=\"delete\" value=\" 削除 \">\n\n";
    print "<input type=hidden name=\"pass\" value=\"$FORM{'pass'}\">\n";
    print "<input type=hidden name=\"chenge_point\" value=\"$new\">\n";
    print "<input type=hidden name=\"next\" value=\"$next\">\n";
    print "</form></DIV>\n";
}

if($next2 < $accesses){

    print "<DIV ALIGN=right><form method=\"$method\" action=\"$cgi_url\">\n";
    print "<input type=hidden name=\"next\" value=\"$next2\">\n";
    print "<input type=hidden name=\"pass\" value=\"$FORM{'pass'}\">\n";
    print "<input type=hidden name=\"action\" value=\"change\">\n";
    if($next ne "0"){ print "<input type=submit name=\"top\" value=\"TOPに戻る\">\n"; }
    if($limit eq "1"){ print "<input type=submit name=\"change\" value=\"次を表\示\">\n"; }
    else { print "<input type=submit name=\"change\" value=\"次の$limit件を表\示\">\n"; }
    print "</form></DIV>\n";

} elsif($next ne "0") { 

    print "<DIV ALIGN=right><form method=\"$method\" action=\"$cgi_url\">\n";
    print "<input type=hidden name=\"next\" value=\"$next2\">\n";
    print "<input type=hidden name=\"pass\" value=\"$FORM{'pass'}\">\n";
    print "<input type=hidden name=\"action\" value=\"change\">\n";
    print "<input type=submit name=\"top\" value=\"TOPに戻る\">\n";
    print "</form></DIV>\n";
}

print "<hr size=1>\n";
print "$top</body></html>\n";
exit;

}

###　変更フォーム　###

sub change2 {

  if ($FORM{'pass'} ne $password) { &remente; }

  if ($FORM{'next'} eq "") { $next = 0; }  else { $next = $FORM{'next'}; }

  &title;

    print "$head\n";

if (!open(IN,"$dir_file")) { $errorcode = "1"; &error; }
@DATA = <IN>;
close(IN);

@DATA = reverse(@DATA);

foreach $data (@DATA) {

    if ($data =~ /(.*) \, (.*) \, (.*) \, (.*)/) { $date = $1; $name = $2; $com = $3; $new = $4; }
    else { next; }

    if($FORM{'chenge_point'} eq $new) {

print <<"_REGIST_";
<center>
<form method="$method" action="$cgi_url">
<input type=hidden name="action" value="change3">
<table><tr><td>●●●$space<b>内容変更</b>$space●●●<br><br>
<table border="0">
<tr valign=top><td>日付</td><td>：</td><td><input type=text name="rireki_date" size="60" value="$date">$space</td></tr>
<tr valign=top><td>題名</td><td>：</td><td><input type=text name="rireki_title" size="60" value="$name">$space</td></tr>
<tr valign=top><td>内容</td><td>：</td><td><textarea name="comment" rows="10" cols="60" WRAP=SOFT>$com</textarea>$space</td></tr>
<tr valign=top><td><input type=submit value=" 変更する "></td><td>$space</td></tr></table>
</td></tr></table>
<input type=hidden name="pass" value="$FORM{'pass'}">
<input type=hidden name="chenge_point" value="$new">
<input type=hidden name="next" value="$next">
</form>
</center>
_REGIST_

	}
}

print "<hr size=1>$top</body></html>\n";
exit;

}

###　変更作業　###

sub change3 {

  if ($FORM{'pass'} ne $password) { &remente; }

  if ($FORM{'next'} eq "") { $next = 0; }  else { $next = $FORM{'next'}; }

  $rireki_date=$FORM{'rireki_date'};
  $rireki_date =~ s/　//g;
  $rireki_date =~ s/ //g;
  if ($rireki_date eq "") { $errorcode = "1";  &quit; }

  $rireki_title=$FORM{'rireki_title'};

  $comment =$FORM{'comment'};
      $comment =~ s/\015\012/\012/g;
      $comment =~ s/\015/\012/g;
      $comment =~ s/\012/<br>/g;
  if ($comment eq "") { $errorcode = "3";  &quit; }

	if (!open(DB,"$dir_file")) { $errorcode = "1"; &error; }
	@lines = <DB>;
	close(DB);

  foreach $line (@lines)
  { if ($line =~ /(.*) , (.*) , (.*) , (.*)/)
     { $date = $1; $name = $2; $com = $3; $new = $4;
        $user = "$date , $name , $com , $new\n";

		if ($FORM{'chenge_point'} eq $new) { 
        push(@New,"$FORM{'rireki_date'} \, $FORM{'rireki_title'} \, $comment \, $new\n"); }
		else { push(@New,$user); }
     }
  }


	if (!open(DB,">$dir_file")) {  $errorcode = "1"; &error; }
	print DB @New;
	close(DB);

&change; 

}

###　削除作業　###

sub delete {

  if ($FORM{'pass'} ne $password) { &remente; }

  if ($FORM{'next'} eq "") { $next = 0; }  else { $next = $FORM{'next'}; }

	if (!open(DB,"$dir_file")) { $errorcode = "1"; &error; }
	@lines = <DB>;
	close(DB);

  foreach $line (@lines)
  { if ($line =~ /(.*) , (.*) , (.*) , (.*)/)
     { $date = $1; $name = $2; $com = $3; $new = $4;
        $user = "$date , $name , $com , $new\n";

		if ($FORM{'chenge_point'} ne $new)  { push(@New,$user); }

     }
  }


	if (!open(DB,">$dir_file")) {  $errorcode = "1"; &error; }
	print DB @New;
	close(DB);

&change; 

}

sub reset_log {

  if (!open(LOG,"$dir_file")) { $errorcode = "1"; &error; }
  @lines=<LOG>;
  close(LOG);

  $axs=@lines;
  $max2 = ($axs - $cgmax);

  if ($axs >= $cgmax) {

  if (!open(LOG,">$dir_file")) { $errorcode = "1";  &error; }
  foreach $axs ($max2..$axs) { print LOG $lines[$axs]; }
  close(LOG); }

}

sub title { 

    print "Content-type: text/html\n\n";
    print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n";
    print "<html><head><title>$title</title>\n";
    print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\"></head>\n";
    print "<body bgcolor=\"$color\" text=\"$txtcolor\" link=\"$linkcolor\" vlink=\"$vlinkcolor\" alink=\"$alinkcolor\" background=\"$bd\">\n";

}

sub error {

  if($errorcode eq "1") { 
  $errorcode ="ログファイルが壊れている可能性があります。";}
  if($errorcode eq "2") { 
  $errorcode ="設定ファイルが壊れている可能性があります。";}

  print "Content-type: text/html\n\n";
  print "<html><head><title>Error</title></head><body>$space<font size=\"+3\">Error</font><p>\n";
  print "処理に何らかのエラーが発生し、作業は中止されました。<p>\n";
  if ( $errorcode ne "" ) { print "$errorcode\n"; }
  print "</body></html>\n";

exit;

}

sub quit {
  
  $m_error = "ブラウザのバックボタンを押して戻った上、訂正してください。";

  if($errorcode eq "1") { 
  $errorcode ="日付が記入されておりません。$m_error";}
  if($errorcode eq "3") { 
  $errorcode ="内容が記入されておりません。$m_error";}
  if($errorcode eq "4") { 
  $errorcode ="タイトルが記入されていない、もしくは不適切な文字列です。$m_error";}
  elsif($errorcode eq "6") { 
  $errorcode ="BGCOLORが記入されておりません。$m_error";}
  elsif($errorcode eq "7") { 
  $errorcode ="TXTCOLORが記入されておりません。$m_error";}
  elsif($errorcode eq "8") { 
  $errorcode ="LINKCOLORが記入されておりません。$m_error";}
  elsif($errorcode eq "9") { 
  $errorcode ="ALINKCOLORが記入されておりません。$m_error";}
  elsif($errorcode eq "10") { 
  $errorcode ="VLINKCOLORが記入されておりません。$m_error";}
  elsif($errorcode eq "12") { 
  $errorcode ="タイトルの中でタグを使うことは出来ません。$m_error";}
  elsif($errorcode eq "20") { 
  $errorcode ="背景の画像を指定するURLの形式が正しくありません。<br>半角英数字、かつ、http://で始まる形で指定して下さい。$m_error";}
  elsif($errorcode eq "21") { 
  $errorcode ="ログ保存数は半角数字で指定して下さい。$m_error";}
  elsif($errorcode eq "22") { 
  $errorcode ="表\示数／頁は半角数字で指定して下さい。$m_error";}
  elsif($errorcode eq "23") { 
  $errorcode ="ログ保存数が記入されておりません。$m_error";}
  elsif($errorcode eq "24") { 
  $errorcode ="表\示数／頁が記入されておりません。$m_error";}

  print "Content-type: text/html\n\n";
  print "<html><head><title>Error</title></head><body>$space<font size=\"+3\">Error</font><p>\n";
  if ( $errorcode ne "" ) { print "$errorcode\n"; }
  print "</body></html>\n";

exit;

}

sub openchat1 {

  open(NEWFILE,">$dir_file") || die "error";
  print NEWFILE "$date_now , diary を設置しました。 , これは動作確認を兼ねたメッセージです。動作確認後はご自由に削除して下さい。 , $time2\n"; 
  close(NEWFILE);
  chmod 0666,$dir_file;

}

sub openchat2 {

  open(NEWFILE,">$dir_room") || die "error";
  print NEWFILE "\$bd = \'\'\;\n"; 
  print NEWFILE "\$title=\'DIARY\'\;\n"; 
  print NEWFILE "\$color=\'\#E6E6FA\'\;\n"; 
  print NEWFILE "\$txtcolor=\'\#191970\'\;\n";
  print NEWFILE "\$linkcolor=\'\#6A5ACD\'\;\n";
  print NEWFILE "\$vlinkcolor=\'\#ff0000\'\;\n";
  print NEWFILE "\$alinkcolor=\'\#6A5ACD\'\;\n";
  print NEWFILE "\$max=\'100\'\;\n";
  print NEWFILE "\$limit=\'10\'\;\n";
  print NEWFILE "\$z1color=\'\#DDDDDD\'\;\n";
  print NEWFILE "\$head=\'<table border=0 width=\"100%\"><tr><td align=left valign=top><font color=\"#000000\">DIARY</font></td>
<td align=right valign=top><a href=\"$cgi_url?action=mente\">| admin |</a></td></tr></table><hr size=1>\'\;\n";
  print NEWFILE "\$rinji=\'<center><br><br>ここは臨時の連絡用スペースです。<br>常に一番上に表\示しておきたい情報などがある場合はご利用下さい。<br><br></center>\'\;\n";

  print NEWFILE "1\;\n";
  close(NEWFILE);
  chmod 0666,$dir_room;

}

sub data_read {

	@DATA = (); 
	if (open(DB,"$datafile")) {
		@DATA = <DB>;
		close(DB); }

}

sub data_save {

	$tmpfile = 'cnt.tmp';
	foreach (1 .. 10) {
		unless (-f $tmpfile) { $tmpflag = 1; last; }
		$tmpflag = 0;
		sleep(1);
	}
	if ($tmpflag == 1) {
		$tmp_dummy = "$$\.tmp";
		if (!open(TMP,">$tmp_dummy")) { &error(bad_tmpfile); }
		close(TMP);
		chmod 0666,$tmp_dummy;
		if (!open(TMP,">$tmp_dummy")) { &error(bad_tmpfile); }
		print TMP @NEW;
		close(TMP);
		foreach (1 .. 10) {
			unless (-f $tmpfile) {
				if (!open(TMP,">$tmpfile")) { &error(bad_tmpfile); }
				close(TMP);
				rename($tmp_dummy,$datafile);
				unlink $tmpfile;
				$tmpflag = 1;
				last;
			}
			$tmpflag = 0;
			sleep(1);
		}
	}
	$tmpflag;

}

sub decode_cookie {

   local($cookie) = @_;
   local($name,$value,$cookies);

   foreach (split(/\;/,$ENV{'HTTP_COOKIE'}))
   {
      ($name, $value) = split(/=/);
      $name =~ s/ //g;
      $COOKIES{$name} = $value;
   }

   foreach (split(/\,/,$COOKIES{$cookie}))
   {
      ($name, $value) = split(/:/);
      $COOKIE{$name} = $value;
   }
}
