#!/usr/local/bin/perl ;# 簡易BBS type3 version 2.05 フリーソフト ;# ;#《設置条件等》 ;# ;# ・UNIXサーバであること(それ以外のOSでの動作は未確認&非対応) ;# ・SJISで設置すること(それ以外の文字コードでの動作は未確認&非対応) ;# ・標準入力(Method=POST)が使えること ;# ・暗号はDESおよびMD5に対応 ;# ・(推奨)Perl version 5 上で動作させること ;# ・(推奨)GDBM_Fileが使えること ;# ;# This is FreeSoft. ;# Script written by (c) Kazutomo Yanaka ;# Created on: 02/May/96 (Type1) ;# Created on: 28/May/98 (Type2) ;# Created on: 29/Mar/99 (Type3) ;# I can be reached at: rescue@rescue.ne.jp ;# Scripts Found at: http://www.rescue.ne.jp/ #-------------------------------------------------------------------------------------- # < >は設定が必要なパーミッション値 # # |--/data/ <777> # | | # | |- index3 (DBM)(*1) # | |- minibbs3.txt (バックアップファイル)(*3) # | # |- cgi-lib217.pl <644> # |- jcode.pl <644> # |- minibbs.cgi (このプログラム) <755> # |- password.cgi (パスワードファイル)(*2) <666> # # (*1)..拡張子は設置されたサーバ環境によって異なる. 拡張子がない場合もある. # 自動的に作成されるので用意する必要はなく、直接いじることはできない. # (*2)..この拡張子は単にCGIとして認識させてウェブ上から見えなくするためのもの. # 運用初回の場合、空のファイルを用意する. # (*3)..用意しなくても自動作成される. 手を加えずそのまま保存するものとする. # 技術の無い方のこのファイルの編集を勧めないし、サポートはしない. # あくまでもバックアップのためのファイルである. #-------------------------------------------------------------------------------------- # [履歴] # # v1.00 29/Mar/99 初版 # v1.10 29/Mar/99 perl4およびGDBM_File以外のモジュール対応(自動判定) # v1.11 30/Mar/99 タイトルバーが表示されないバグの修正 # v1.12 30/Mar/99 NN3でJavaScriptエラーになる不具合を修正 # ----- (ここを境にデータ互換はありません) # v2.00 31/Mar/99 本文とインデックスを分離管理 # v2.01 03/Apr/99 別フレーム表示の不具合の修正 # v2.02 08/Apr/99 バックアップ処理のバグの修正 # v2.03 13/Sep/00 検索処理のバグの修正($string関係) # v2.04 14/Sep/00 検索処理のバグの修正の修正 # v2.05 11/Nov/03 暗号化処理の修正 #----------------# # 初期設定 # #----------------# #--- あなたの環境に合わせて必ず書き替える項目 --------------------------------------------# #◆このスクリプトをURLで設定 $reload = 'http://設置したURL/minibbs.cgi'; #◆画面の「終了」リンク先をURLで設定 $modoru = 'http://ホームページなどのURL/'; #--- 必要に応じて設定する項目 ------------------------------------------------------------# #◆掲示板の名称(タグ有効) # ''内に記述しますが、'を入れたい場合は '' を "" に替えて(文字化けに注意)ください. $title = '
[新規投稿] [更新] [終了] |
\n"; if ($COOKIE{'RC'} ne '' && $COOKIE{'RC'} < $NUMBER && $in{'search'} eq '') { print <<"EOF";
\n"; } if ($in{'search'} ne '') { print <<"EOF";
EOF } if (!@PICKUP) { if ($in{'search'} ne '') { print "抽出されたデータはありません.
\n"; } else { print "
このページにデータはありません.
\n"; } } else { ($review,$pwd,$date,$name,$email,$host,$subject,$how,$link,$base,$res) = split(/\t/,$PICKUP[0]); if ($def > $#PICKUP + 1) { $def = $#PICKUP + 1; } print "
番号による一覧 | 番付近から 件 |
↓新規投稿
$msg_btm
投稿者 | |||
---|---|---|---|
Eメール | |||
題名 | |||
内容 |
改行無効
改行有効
図/表\モード URLをリンクする | ||
この記事の削除用パスワード (6文字以上の文字列) | 投稿者とメールとパスワードを保存 |
投稿者 | |||
---|---|---|---|
Eメール | |||
内容 |
改行無効
改行有効
図/表\モード URLをリンクする | ||
この記事の削除用パスワード (6文字以上の文字列) | 投稿者とメールとパスワードを保存 |
投稿者 | |||
---|---|---|---|
Eメール | |||
題名 | |||
内容 |
改行無効
改行有効
図/表\モード URLをリンクする | ||
削除用パスワード | 投稿者とメールとパスワードを保存 |
※最初に投稿した時の削除用パスワードの入力が必要です.
\n";
print "\n";
if ($how == 1) { print " \n"; }
elsif ($how == 2) { $value =~ s/\r/ \n"; }
else { print "$value \n"; }
print "$value
\r/g; print "$value
\n"; foreach $r (split(/\,/,$res)) { ($pwd,$date,$name,$email,$host,$subject,$how,$link,$base,$res) = split(/\t/,$DAT{$r}); if (open(IN,"$data_dir$r\.txt")) { @lines =\n"; } print &HtmlBot; if (-e $lockfile) { unlink $lockfile; } if ($pl == 4) { dbmclose(%DAT); } else { eval 'untie %DAT;'; } exit; } sub decode_cookie { #---------------------------------------------------------------- # 関数 クッキーデータの抽出/出力フォーマット # 引数 クッキー名 # 戻値 なし (%COOKIE) #---------------------------------------------------------------- local($name) = @_; local($cookies); ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 30*24*60*60); $y0="Sunday"; $y1="Monday"; $y2="Tuesday"; $y3="Wednesday"; $y4="Thursday"; $y5="Friday"; $y6="Saturday"; @youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6); $m0="Jan"; $m1="Feb"; $m2="Mar"; $m3="Apr"; $m4="May"; $m5="Jun"; $m6="Jul"; $m7="Aug"; $m8="Sep"; $m9="Oct"; $m10="Nov"; $m11="Dec"; @monthg = ($m0,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11); $date_gmt = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wdayg],$mdayg,$monthg[$mong],$yearg +1900,$hourg,$ming,$secg); $cookies = $ENV{'HTTP_COOKIE'}; @pairs = split(/;/,$cookies); foreach $pair (@pairs) { ($key,$val) = split(/=/,$pair,2); $key =~ s/ //g; if ($key eq $name) { @pairs = split(/,/,$val); foreach $pair (@pairs) { ($key,$val) = split(/:/,$pair,2); $COOKIE{$key} = $val; } last; } } } sub setpwd_form { print &PrintHeader; print <<"EOF";; close(IN); $value = join ('',@lines); } else { $value = '《データ(本文)が見つからないか読み出せません》'; } $value =~ s/"/\"/g; $value =~ s/&/\&/g; if ($link == 1) { $value =~ s/(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/$1\:$2<\/a>/ig; } print "
\n"; if ($view_host && $host ne '') { $host = "[$host]"; } else { $host = ""; } if ($email ne '') { print "No.$r by $name $host"; } else { print "No.$r by $name $host"; } print " at $date\n"; if ($how == 1) { print "
$value\n"; } elsif ($how == 2) { $value =~ s/\r/
\r/g; print "$value\n"; } else { print "$value
\n"; } } print "
[戻る]
[インデックスデータのバックアップ]
[バックアップデータのリストア]
動作中のDBMの種類:$dbm_type
EOF
print &HtmlBot;
if (-e $lockfile) { unlink $lockfile; }
exit;
}
sub setpwd {
if (!-z $pwd_file) {
if (!open(READ,$pwd_file)) { &error('エラー','管理者用パスワードファイルが読み出せません.'); }
$master =
EOF
print <<"EOF";
EOF
printf "ACCESSTIME: %.3f seconds. \n", $end - $start;
print "[戻る]\n";
print "\n";
}
sub restoref {
if (-e $lockfile) { unlink $lockfile; }
print "Content-type: text/html\n\n";
print <<"EOF";
もう一度実行してみてください.'); }
sleep(2);
}
}
sub lock2 {
$c = 0;
while(-f "$lockfile") {
$c++;
if ($c >= 3) { &error('リトライエラー','ただいま混雑しております.
もう一度実行してみてください.'); }
sleep(2);
}
open(LOCK,">$lockfile");
close(LOCK);
}
sub check_version {
local($a,$b);
if ($] > 5) {
$a = 'use GDBM_File;';
$dbm_type = "GDBM_File";
eval $a;
if ($@ ne '') {
$a = 'use SDBM_File;';
$dbm_type = "SDBM_File";
eval $a;
if ($@ ne '') {
$a = 'use ODBM_File;';
$dbm_type = "ODBM_File";
eval $a;
if ($@ ne '') { $dbm_type = 'DBM for perl4'; $pl = 4; }
}
}
$b = 'use Fcntl;';
eval $b;
if ($@ ne '') { $dbm_type = 'DBM for perl4'; $pl = 4; }
}
else { $dbm_type = 'DBM for perl4'; $pl = 4; }
}
sub backupf {
if (-e $lockfile) { unlink $lockfile; }
print "Content-type: text/html\n\n";
print <<"EOF";
バックアップ(兼 更新)
バックアップ終了
\n", $tend - $tstart;
printf "CPUTIME: %.3f CPU seconds.リストア