#!/usr/local/bin/perl
#┌─────────────────────────────────
#│ Sun Board v3.6 (2004/02/04)
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
$ver = 'Sun Board v3.6';
#┌─────────────────────────────────
#│ [注意事項]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
#│ いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 設置に関する質問はサポート掲示板にお願いいたします。
#│ 直接メールによる質問は一切お受けいたしておりません。
#└─────────────────────────────────
#
# [ 設置例 ]
#
# public_html / index.htm (トップページ)
# |
# +-- sunbbs / sunbbs.pl [705]
# | sunbbslog.pl [606]
# | index.htm [606]
# | index2.htm [606]
# | jcode.pl [604]
# | pastno.dat [606] ... 過去ログ時
# |
# +-- lock [707] /
# |
# +-- past [707] / 0001.dat [606] ... 過去ログ時
#-------------------------------------------------
# ▼設定項目
#-------------------------------------------------
###############Proxy Checker始め###############戻した
$host = $ENV{'REMOTE_HOST'};
$host_n = gethostbyaddr(pack("C4",split(/\./,$ENV{'REMOTE_ADDR'})),2);
@prox = ("HTTP_CACHE_INFO"," HTTP_CLIENT_IP","HTTP_FORWARDED","HTTP_PRAGMA","HTTP_PROXY","HTTP_PROXY_CONNECTION","HTTP_PROXY_USER","HTTP_PROXY_PASS","HTTP_SP_HOST","HTTP_VIA","HTTP_XONNECTION","HTTP_X_FORWARDED_FOR"," HTTP_X_LOCKING","HTTP_XROXY_CONNECTION");
@envi=sort(keys (%ENV));
$flag_prox = 0;
foreach $envi (@envi) {
foreach $prox (@prox) {
if ($envi eq $prox){
# $flag_prox = 1;
goto PROXEND ;
}
}
}
PROXEND:
#if ($host =~ /prox/ ) {$flag_prox = 1; }
#if ($host_n =~ /prox/ ) {$flag_prox = 1; }
#if ($flag_prox){
# sleep(30);
# print "Content-type: text/html\n\n";
# print "";
# print "";
# print "
Proxy Checker" ;
# print "PROXY等での発言は禁止
";
# print "" ;
# exit;
#}
###############Proxy Checker終わり###############
###############Referer Checker始め###############
#$referer = $ENV{'HTTP_REFERER'};
#$flag_referer = 0;
#if ($flag_referer =~ /oriharu.net/ ) {$flag_referer = 1; }
#if ($flag_referer =~ /192.168.11.3/ ) {$flag_referer = 1; }
#if (!$flag_referer){
# print "Content-type: text/html\n\n";
# print "";
# print "";
# print "Proxy Checker" ;
# print "PROXY等での発言は禁止
";
# print "" ;
# exit;
#}
###############Referer Checker終り###############
# コード変換ライブラリ取込
require './jcode.pl';
#use Jcode;
# タイトル名
$title = "セキュリティー100%の発言承認制掲示板";
# タイトルの色
$t_color = "#000000";
# タイトルのサイズ
$t_size = '24px';
# 本文の文字サイズ
$b_size = '18px';
# 壁紙 (http://から指定)
$bg = "";
# 背景色
$bc = "#00FF93";
# 文字色
$tx = "#000000";
# リンク色
$lk = "#0000FF"; # 未訪問
$vl = "#000099"; # 訪問済
$al = "#0000FF"; # 訪問中
# 管理用パスワード(英数字)
#####################################
$pas_f = "../packw/paff.paff";
open(PAS,"$pas_f") || &error("Open Error: $pas_f");
$pass = ;
close(PAS);
#####################################
# 戻り先 (index.htmなど)
$home = "../index.htm";
# 記事の最大保持数
$max = 359;
# 表示ファイル第1ページの記事数
$pagelog = 50;
# 自動リンク (0=no 1=yes)
$autolink = 1;
# CGIスクリプト自身をURLで指定
$script = 'sunbbs.pl';
# 表示ファイル(index.htm)のあるディレクトリをURLで指定
# → 最後は / で閉じる
$htm_url = './';
# 表示ファイル(index.htm)のあるディレクトリをサーバパスで指定
# → 最後は / で閉じる
# → フルパスなら / から始まるパス(http://からではない)
$htm_dir = './';
# 新着情報ボードモード (0=no 1=yes)
# → 書き込みは管理者限定となります
$whatsnew = 0;
# 題名部の色
$obi_color = "#33CC66";
# 題名部ポインタ
$point = '■';
# 戻り先部ポインタ
$point2 = '▲';
# ポインタの色
$p_color = "#FFFF33";
# 題名の色
$s_color = "#000000";
# タイトルGIF画像 (http://から記述)
$t_gif = "";
# タイトル画像の大きさ
$tg_w = 250; # 横幅
$tg_h = 54; # 高さ
# ログファイル名
# → フルパスなら / から記述(http://からではない)
$logfile = './sunbbslog.pl';
# 表示ファイルHTML (第1ページ)
# → ファイル名のみを記述
$htmfile = "index.htm";
# 表示ファイルHTML (第2ページ)
# → ファイル名のみを記述
$nexthtm = "index2.htm";
# ロックファイル処理
# 0 : なし
# 1 : あり(symlink関数)
# 2 : あり(mkdir関数)
$lockkey = 0;
# ロックファイル名
$lockfile = './lock/sunbbs.lock';
# ブラウザのキャッシュ取込を拒否 (0=no 1=yes)
$nocashe = 1;
# 投稿後に内容確認画面を表示 (0=no 1=yes)
$msg_check = 1;
# 投稿があるとメール通知する (0=no 1=yes)
$mailing = 1;
# メールアドレス(メール通知する時)
$mailto = 'oringharu@t.vodafone.ne.jp';
# sendmailパス(メール通知する時)
$sendmail = '/WINDOWS/System32/sendmail';
## --- 管理者コメント(タイトル下部にちょっとしたコメントを表示できます)
$message = <<"END_OF_MSG";
お気軽にメッセージをお書きください。
END_OF_MSG
# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$gethostbyaddr = 1;
#---(以下は「過去ログ」機能を使用する場合の設定です)---#
#
# 過去ログ生成 (0=no 1=yes)
$pastkey = 0;
# 過去ログ用NOファイル
$nofile = './pastno.dat';
# 過去ログのディレクトリ
# → フルパスなら / から記述(http://からではない)
# → 最後は必ず / で閉じる
$pastdir = './past/';
# 過去ログ1ファイルの行数
# → この行数を超えると次ページを自動生成します
$log_line = 1000;
#-------------------------------------------------
# ▲設定完了
#-------------------------------------------------
&decode;
if ($mode eq 'asgias') { ®ist; }
elsif ($mode eq 'asgias_mail') { ®ist_mail; }
elsif ($mode eq 'say') { ®ist; }
elsif ($mode eq 'form') { &form; }
elsif ($mode eq 'mail') { &form; }
elsif ($mode eq 'find') { &find; }
elsif ($mode eq 'admin') { &admin; }
elsif ($mode eq 'mente') { &mente; }
elsif ($mode eq 'edit') { &edit; }
elsif ($mode eq 'userdel') { &userdel; }
elsif ($mode eq "past" && $pastkey) { &past; }
elsif ($mode eq "check") { ✓ }
&location;
#-------------------------------------------------
# 投稿フォーム
#-------------------------------------------------
sub form {
local($res_sub,$res_com,$date,$next,$back,$last,$i,$cnam,$ceml,$curl,$cpwd);
print &header;
print "[戻る<\/a>]
\n";
# print "\n";
print "\n";
}
if ($mode ne 'mail') {
if ($in{'page'} == 2) {
$next = $pagelog+1;
$last = $max;
} else {
$next = 0;
$last = $pagelog;
}
$i=0;
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
$i++;
if ($i < $next) { next; }
if ($i > $last) { last; }
print &log_view($_, $in{'page'});
}
close(IN);
}
print "