#!/usr/local/bin/perl #---------------------------------- # 簡易履歴板 v1.00 # for UNIX/perl4,5/SJIS # (c)www.rescue.ne.jp #---------------------------------- # (基本構成) # # |- history.cgi <755> ←記録用 # |- history.html <666> ←表示用HTML # |- crypt.cgi <755> ←パスワード生成用 # |- jcode.pl <644> ←日本語コード変換ライブラリ # # < >内は一般的なパーミッション値。設置するサーバにおいて最適な値にすること。 #----------------# # 初期設定 # #----------------# # 添付のcrypt.cgiを実行してパスワードを暗号化してください。 # 実行後の暗号をそのままコピーして設定してください。 # 例 $crypted = 'hYks8/.TsgR0y'; $crypted = 'ここに暗号をコピーする'; # 更新するファイル $html_file = "./history.html"; # 日本語コード変換ライブラリ require './jcode.pl'; #---------------------------------------------------------------------------- ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 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///g; $value =~ s/\n//g; $value =~ s/\r//g; $value =~ s/\t//g; $in{$name} = $value; } #---------------------------------------------------------------------------- if ($buffer eq '') { &input; exit; } if ($crypted =~ /^\$1\$/) { $salt = 3; } else { $salt = 0; } if (crypt($in{'passwd'}, substr($crypted,$salt,2)) ne $crypted) { &error("エラー","パスワードが合いませんでした."); } if (length($in{'year'}) != 4) { &error("エラー","西暦を4桁で入力してください."); } if ($in{'hour'} eq '' || $in{'min'} eq '') { &error("エラー","日付を入力してください."); } if ($in{'value'} eq '') { &error("エラー","内容を入力してください."); } if (!open(IN,$html_file)) { &error("エラー","履歴ファイルを読み出しオープンできません."); } @lines = ; close(IN); if (!open(OUT,"> $html_file")) { &error("エラー","履歴ファイルを書き込みオープンできません."); } foreach $line (@lines) { if ($line =~ //) { print OUT "\n"; print OUT "
  • $in{'year'}年$in{'month'}月$in{'day'}日$in{'hour'}時$in{'min'}分

    \n$in{'value'}


    \n"; } else { print OUT $line; } } close(OUT); #---------------------------------------------------------------------------- &html_head; print <<"EOF";

    $in{'year'}年$in{'month'}月$in{'day'}日$in{'hour'}時$in{'min'}分

    $in{'value'}


    [履歴へ] [戻る]

    EOF exit; #---------------------------------------------------------------------------- sub input { $year += 1900; $m[$mon] = 'selected'; $d[$mday] = 'selected'; &html_head; print <<"EOF";

    入力


    ※記録したものはHTML形式で表\現されます.

    パスワード

    [履歴へ] [戻る]

    EOF } #---------------------------------------------------------------------------- sub html_head { print "Content-type: text/html\n\n"; print <<"EOF"; 簡易履歴板 EOF } sub error { local (@msg) = @_; local ($i); &html_head; print <<"EOF";

    $_[0]

    EOF print "\n"; print <<"EOF";

    [戻る]

    EOF exit; }