#!/usr/bin/perl ############ # 基本設定 # ############ #require 'jcode.pl'; #$ccode = "euc"; $boardurl = "http://あなたのウェブサイト/bbs.html"; #$basedir = "/掲示板のあるディレクトリ/"; $pswd = "password"; #$addrss = 'あなたの@メール.アドレス'; $smpath = "/usr/sbin/sendmail"; $wait = 0; $max = 512; $dname = "ゲスト"; $dttle = "こんにちは"; $arch = "A-"; $daug = "D-"; $admin = "admin"; $init = "init"; $dlck = 10; $erro0 = "いくつかのエラーが重なっています。"; $erro1 = "データファイルまたは臨時ファイルの取り扱いに失敗しました。"; $erro2 = "現在ほかの方が記帳中です。"; $erro3 = "いつまでもこの状態が続く場合は管理人に連絡して下さい。"; $erro4 = "ロックが解除できませんが、それ以外は問題ないようです。"; $erro5 = "ディレクトリの取り扱いに失敗しました。"; $erro6 = "データがカラです。何も送信されていません。"; $erro7 = "パスワードが違います。"; $erro8 = "ファイルかディレクトリに異常があります。"; $erro9 = "以下のファイルが削除できませんでした:"; $erro10 = "以下の掲示板関係ファイルがすでに存在します。"; $erro11 = "連番での削除の最終No.が違うようです。"; $erro12 = "連番での削除の開始No.が違うようです。"; $erro13 = "連番でのアーカイブ化の開始No.が違うようです。"; $erro14 = "連番でのアーカイブ化の開始No.が違うようです。"; ### 固定変数 ### $tmp = "tmp.dat"; $lock = "lock.dat"; $unlock = "unlock.dat"; if ($ENV{'SERVER_NAME'}) { $bbs_cgi = "http://".$ENV{'SERVER_NAME'}.$ENV{'SCRIPT_NAME'}; } else { $bbs_cgi = $ENV{'SCRIPT_NAME'}; } ($bfile = $boardurl) =~ s/.*\///; ### 掲示板型紙 ### $head = <<"BOARD_HEAD";
$data{'title'}
$data{'comments'}
NEW_DATA
$msg =~ tr/\n/ /s;
print TEMPF "\n\t".$msg."\n";
while (
$data{'comments'}
HTML_DAUG
close NDF;
$data{'comments'} = substr($data{'comments'}, 0, $max);
$data{'comments'} =~ s/]*)>?([^>]*)$//g;
$data{'comments'} =~ s/<([^>]*)$//g;
$cutoff = ($size - (length $data{'comments'}));
### 娘板へのリンク ###
$data{'comments'} .= " $cutoff more byte(s), click here!";
}
################
# ありがとう文 #
################
sub thnk
{
if (defined $wait) {print "REFRESH: $wait;URL=$boardurl\n"}
print <<"THANK_YOU";
Content-type: text/html
処理の優先順位:CGIはそれぞれの記事について、まずこの記事を削除するがチェックされているか、次ぎに連番での削除範囲に指定されているか、最後に古文書へ入れる範囲に含まれているかの順で判断して処理し、どれにも含まれない記事は掲示板に残されます。
HTML_FOOT
close(DATAF);
exit;
}
##################
# データ編集出力 #
##################
sub ediout
{
if ($data{'STDE'} or $data{'ENDE'}) {
if ($data{'STDE'} =~ m/^([^0-9]*)([0-9]+)([^0-9]*)$/) {
$data{'STDE'} = $2;
} else {
&error1($erro12,$!);
}
if ($data{'ENDE'} =~ m/^([^0-9]*)([0-9]+)([^0-9]*)$/) {
$data{'ENDE'} = $2;
} else {
&error1($erro11,$!);
}
if ($data{'STDE'} <= $data{'ENDE'}) {
$stde = $data{'STDE'}; $ende = $data{'ENDE'};
} else {
$stde = $data{'ENDE'}; $ende = $data{'STDE'};
}
}
if ($data{'STAR'} or $data{'ENAR'}) {
if ($data{'STAR'} =~ m/^([^0-9]*)([0-9]+)([^0-9]*)$/) {
$data{'STAR'} = $2;
} else {
&error1($erro14,$!);
}
if ($data{'ENAR'} =~ m/^([^0-9]*)([0-9]+)([^0-9]*)$/) {
$data{'ENAR'} = $2;
} else {
&error1($erro13,$!);
}
if ($data{'STAR'} <= $data{'ENAR'}) {
$star = $data{'STAR'}; $enar = $data{'ENAR'};
} else {
$star = $data{'ENAR'}; $enar = $data{'STAR'};
}
if ($dlck) {
&randu;
open (LKF, "+<$lock") or &error2("LINE-332",$erro1,$erro3,$!);
} else {&uflck;}
print TEMPF "\n";
$afno =
DoubleMessageBoard
DoubleMessageBoard
DoubleMessageBoard
御利用者さまへ
CGIはあなた様から命じられた作業を無事終了しました。再び掲示板へ御案内いたします。
THANK_YOU
exit;
}
##################
# データ編集入力 #
##################
sub ediin
{
open(DATAF, "<$bfile") or &error1("LINE-237",$erro8,$!);
print <<"HTML_HEAD";
Content-type: text/html
m(. .)m
ようこそ。これは管理作業用ページです
ウェブマスター以外の入室はお断りします
くれぐれもハッキングとかしないでね m(..)m
何もせず掲示板に戻る
DoubleMessageBoardアーカイブ
is visitware, pay me visit!
ARCH_FOOT
close(ARCH);
seek LKF, 0, 0;
print LKF ++$afno;
### アーカイブへリンク ###
print TEMPF "\t
もっと古い記事があります。ここをクリックして下さい。\n";
} else {
print TEMPF;
close ARCH;
unlink $arch;
}
last;
}
print TEMPF;
}
if ($dlck) {close(LKF);}
} else {
if ($dlck) {&randu;} else {&uflck;}
print TEMPF "\n";
while (
is visitware, pay me visit!
HTML_FOOT
close(DATAF);
close(TEMPF);
unless (-z $tmp) {
rename ($tmp, $bfile) or &error2("LINE-406",$erro1,$erro3,$!);
} else {
&error2("LINE-408",$erro1,$erro3,$!);
}
&unlck;
if ($msg) {
&error1($erro9,$msg);
} else {
&thnk;
}
}
##############
# 掲示板作成 #
##############
sub init
{
if (-e $bfile) {&error1("LINE-425",$erro10,$bfile);}
if (-e $unlock) {&error1("LINE-426",$erro10,$unlock);}
open(DATAF, ">$bfile") or &error1("LINE-427",$erro8,$!);
print DATAF $head;
print DATAF <<"HTML_MANDE";
\t
is visitware, pay me visit!