\n";
}
sub write {
my $main = $in{main};
my $mbname = $in{mbname};
if ($main ne '' and $mbname ne ''){
if ($ENV{"REQUEST_METHOD"} ne "POST"){
&error("正規の書き込みではありません。");
}
my $host = $ENV{'REMOTE_HOST'};
my $addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr or $host eq '') {
$host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr;
}
$main =~ s/,/&\#44;/g;
$mbname =~ s/,/&\#44;/g;
&lockfile;
open(IN,"+< $logfile") or open(IN, "> $logfile") or &error("データファイルが作成できません。");
flock IN, 2;
my $latestid;
while (){
($latestid) = split /,/;
}
my $id = $latestid + 1;
print IN "$id,$date_now,$mbname,$main,$host," . &makecrypt($in{pwd}) . "\n";
close(IN);
&unlockfile;
&setcookie($mbname,$in{pwd});
}
print "Location: $script\n\n";
}
sub lockfile {
open (LOCK, "> $lockfile") or &error("$lockfileが作成されません。");
flock LOCK, 2;
}
sub unlockfile {
no strict;
close LOCK;
close TMP if (defined TMP);
unlink "tmp.$$" if (-e "tmp.$$");
}
sub inputform {
my $mbname = shift;
my $main = shift;
my $pwd = shift;
print "名前: \n";
print "パスワード: \n";
print "内容: \n";
}
sub repform {
my ($mbname,$pwd) = &getcookie;
&htmlhead("返信");
print "
返信
";
print "\n";
&htmltail;
}
sub getline {
my $id = shift;
my $line;
if (open(DATA,"< $logfile")) {
flock DATA, 1;
while (){
if (/^$id,/) {
$line = $_;
last;
}
}
close(DATA);
}
chomp($line);
return $line;
}
sub modform {
$modify_en or print "Location: $script\n\n";
my ($mbname,$pwd) = &getcookie;
&htmlhead("変更");
print "
変更
";
print "\n";
&htmltail;
}
sub modify_delete {
($modify_en or $delete_en) or print "Location: $script\n\n";
my $main = $in{main};
my $mbname = $in{mbname};
if ($main ne '' and $mbname ne '' or $in{mode} eq 'delete'){
if ($ENV{"REQUEST_METHOD"} ne "POST"){
&error("正規の書き込みではありません。");
}
my $host = $ENV{'REMOTE_HOST'};
my $addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr or $host eq '') {
$host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr;
}
$main =~ s/,/&\#44;/g;
$mbname =~ s/,/&\#44;/g;
&lockfile;
open (TMP, "> tmp.$$");
open(IN,"< $logfile");
flock IN, 2;
while (){
if (/^$in{id},/){
chomp;
my ($org_id,$org_date,$org_name,$org_main,$org_host,$org_encpwd) = split /,/;
if (!&checkcrypt($in{pwd},$org_encpwd)){
close(IN);
close(TMP);
&error("パスワードが違います。");
}
if ($in{mode} eq 'modify') {
print TMP "$org_id,$org_date,$mbname,$main,$host," . &makecrypt($in{pwd}) . "\n";
}
} else {
print TMP "$_";
}
}
close(IN);
close(TMP);
rename "tmp.$$", "$logfile";
&unlockfile;
}
print "Location: $script\n\n";
}
sub delform {
$delete_en or print "Location: $script\n\n";
my ($mbname,$pwd) = &getcookie;
&htmlhead("削除");
print "
削除
";
print "\n";
&htmltail;
}
###### セットアップフォーム #########################
sub setup {
open(ADMIN,"< $admindat");
my $adminpwd = ;
close(ADMIN);
if (! &checkcrypt($in{pwd},"$adminpwd")){
&error('パスワードが違います。');
}
&htmlhead("セットアップ");
print "\n";
my @toplink_en_check;
my @modify_check;
my @delete_check;
my @admin_link_en_check;
my @style_sheet_check;
my @head_insert_check;
my @localtime_check;
$toplink_en_check[$toplink_en] = 'checked';
$modify_check[$modify_en] = 'checked';
$delete_check[$delete_en] = 'checked';
$admin_link_en_check[$admin_link_en] = 'checked';
$style_sheet_check[$style_sheet_en] = "checked";
$head_insert_check[$head_insert_en] = "checked";
$localtime_check[$localtime_en] = "checked";
print <