#!/usr/bin/perl #------------------------------- # padrep.cgi (ShiftJIS) # 2001.11. 6 MIYAMORI Yoshimasa # 1999. 2.13 MIYAMORI Yoshimasa # (kan_ta@amcsys.com) #------------------------------- require 'padres.pl'; require $myReqPadlib; require $myReqJcode; $myTitle = 'padrep: ' . $padresMyTitle; $myUrl = $padresMyUrl . 'padrep.cgi'; &main; exit; sub main { if ($ENV{'REQUEST_METHOD'} eq 'HEAD') { &dispMsg('Request method: HEAD.'); return; } if (&chkBusy) { &dispMsg($myMsgBusy); return; } &setBusy(1); if (&chkEnv) { &dispMsg($myMsgDeny); &setBusy(0); return; } &parseQry(*in); if (&chkAuth($in{'passwd'})) { &dispMsg($myMsgPassword); &setBusy(0); return; } &putRep if ($in{'body'}); &dispRep; &setBusy(0); return; } # $PAD_REPLY の位置に内容を書く. sub putRep { local($fileName, $num, $line); if (&isInPad($in{'num'})) { $fileName = $padFile; } else { $fileName = $logFile[&getLogNum($in{'num'})]; } open(FILE, "$myIn <$fileName |") || &exitPadCgi('error: putRep().'); open(TMP, "|$myOut >$tmpFile") || &exitPadCgi('error: putRep().'); while () { $line = $_; if (/^/) { $num = $1; } if ($num == $in{'num'}) { if ($line =~ /^$PAD_REPLY/io) { print TMP "
"; print TMP "
\n"; print TMP $PAD_TEXT_REPLY, "
\n";
        print TMP $in{'body'}, "\n";
        print TMP $PAD_TEXT_REPLY_END, '
', "\n"; print TMP "
-- "; print TMP &getDate(0), ' --
', "\n"; print TMP '
', "\n"; } else { print TMP $line; } } else { print TMP $line; } } close TMP; close FILE; $s = "mv $tmpFile $fileName"; system($s); chmod $myChmod, $fileName; } # reply用のフォームを表示. sub dispRep { local($fileName, $num, $line); local($i, $s); if (!$in{'log'}) { $in{'log'} = 'pad'; $fileName = $padFile; } elsif ($in{'log'} eq 'pad') { $fileName = $padFile; } else { if ($in{'log'} eq 'z') { $fileName = $logFile[0]; } else { $fileName = $logFile[$in{'log'}]; } unless (-f $fileName) { foreach $i (0 .. $#logFile) { unless (-f $logFile[$i]) { $s = "cp $orgFile $logFile[$i]"; system($s); chmod $myChmod, $logFile[$i]; } } } } open(FILE, "$myIn <$fileName |") || &exitPadCgi('error: dispRep().'); print <<"EndOfFile"; Content-type: text/html\n $myHead $myTitle $myBody $myMsgBack
EndOfFile if ($myPadLimit == 100) { print <<"EndOfFile"; EndOfFile } else { print <<"EndOfFile"; EndOfFile } print <<"EndOfFile";

$fileName

EndOfFile if ($in{'num'}) { print "さっきの場所へ\n"; print '
', "\n"; } else { print '
', "\n"; } while () { last if (/^$PAD_TOP/io); } while () { $line = $_; if (/^/) { $num = $1; } if ($line =~ /^$PAD_REPLY/io) { print <<"EndOfFile";

EndOfFile } else { print $line; } } close FILE; }