#!/usr/local/bin/perl #┌───────────────────────────────── #│ Aska BBS v3.2 (2004/08/28) #│ Copyright (c) KentWeb #│ webmaster@kent-web.com #│ http://www.kent-web.com/ #└───────────────────────────────── $ver = 'ASKA BBS v3.2'; #┌───────────────────────────────── #│ [注意事項] #│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した #│ いかなる損害に対して作者は一切の責任を負いません。 #│ 2. 設置に関する質問はサポート掲示板にお願いいたします。 #│ 直接メールによる質問は一切お受けいたしておりません。 #└───────────────────────────────── # # 【ファイル構成例】 # # public_html (ホームディレクトリ) # | # +-- aska / aska.cgi [705] # | askalog.cgi [606] # | jcode.pl [604] # | # +-- lock [707] / # #------------------------------------------------- # 基本設定 #------------------------------------------------- # ライブラリ取り込み require './jcode.pl'; # タイトル名 $title = "伝言板"; # タイトル文字の色 $tCol = "#666666"; # タイトル文字サイズ $tSize = '24px'; # 本文文字サイズ $bSize = '13px'; # 本文文字スタイル $bFace = '"MS UI Gothic", "MS Pゴシック", Osaka'; # 記事題名の色 $subCol = "#DD0000"; # スクリプトURL $script = './ikasa-bbs.cgi'; # ログファイル $logfile = './bbslog.cgi'; # 管理用パスワード $pass = 'kimu3307'; # 最大記事数(これを超える記事は古い順に削除) $max = 50; # 戻り先URL $home = "../index.htm"; # タイトル画像を使う場合 (http://から画像を指定) $ImgT = ""; $ImgW = 300; # 横幅サイズ $ImgH = 70; # 縦幅サイズ # bodyタグ $body = '
'; # URLの自動リンク (0=no 1=yes) $autolink = 1; # 引用部色変更 # 1 : 色指定を行うと「引用部」を色変更します # 2 : この機能を使用しない場合は何も記述しないで下さい ($refCol="";) $refCol = "#804000"; # 1ページあたりの記事表示件数 $pageLog = 10; # ファイルロック形式 # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 0; # ロックファイル名 $lockfile = './lock/aska.lock'; # メール通知機能 # 0 : 通知しない # 1 : 通知する → 自分の投稿記事も通知する # 2 : 通知する → 自分の投稿記事は通知しない $mailing = 1; # メールソフトのパス(メール通知する場合) # → sendmailの例: /usr/lib/sendmail # → blatjの例: c:\www\mail\blatj.exe $mailprog = '/usr/sbin/sendmail'; # メール通知先アドレス(メール通知する場合) $mailto = 'info@ikasa.or.jp takahashi-h@ikasa.or.jp ibara@ikasa.or.jp sin-o@okasci.or.jp'; # タグ広告挿入オプション # → の代わりに「広告タグ」を挿入。 # → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。 $banner1 = ''; # 表示部上部に挿入 $banner2 = ''; # 表示部下部に挿入 # 記事の更新は method=POST 限定する場合(セキュリティ対策) # → 0=no 1=yes $postonly = 1; # 他サイトから投稿排除時に指定する場合(セキュリティ対策) # → 掲示板のURLをhttp://から書く $baseUrl = ''; # 投稿制限(セキュリティ対策) # 0 : しない # 1 : 同一IPアドレスからの投稿間隔を制限する # 2 : 全ての投稿間隔を制限する $regCtl = 0; # 制限投稿間隔(秒数) # → $regCtl での投稿間隔 $wait = 60; # 投稿後の処理 # → 掲示板自身のURLを記述しておくと、投稿後リロードします # → ブラウザを再読み込みしても二重投稿されない措置。 # → Locationヘッダの使用可能なサーバのみ $location = ''; # ホスト取得方法 # 0 : gethostbyaddr関数を使わない # 1 : gethostbyaddr関数を使う $gethostbyaddr = 0; # アクセス制限(半角スペースで区切る) # → 拒否するホスト名又はIPアドレスを記述(アスタリスク可) # → 記述例 $deny = '*.anonymizer.com 211.154.120.*'; $deny = ''; #------------------------------------------------- # 設定完了 #------------------------------------------------- &decode; &axscheck; if ($mode eq 'regist') { ®ist; } elsif ($mode eq 'find') { &find; } elsif ($mode eq 'howto') { &howto; } elsif ($mode eq 'admin') { &admin; } elsif ($mode eq 'usrdel') { &usrdel; } elsif ($mode eq 'check') { ✓ } &html; #------------------------------------------------- # アクセス制限 #------------------------------------------------- sub axscheck { # IP&ホスト取得 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($gethostbyaddr && ($host eq "" || $host eq $addr)) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } if ($host eq "") { $host = $addr; } # アクセスチェック local($flag)=0; foreach ( split(/\s+/, $deny) ) { s/\./\\\./g; s/\*/\.\*/g; s/\?/\.\?/g; if ($host =~ /$_/i || $addr =~ /$_/i) { $flag=1; last; } } if ($flag) { &error("アクセスを許可されていません"); } } #------------------------------------------------- # 記事表示 #------------------------------------------------- sub html { local($r_sub,$r_com); # クッキー取得 local($cnam,$ceml,$curl,$cpwd) = &get_cookie; if (!$curl) { $curl = 'http://'; } # レス処理 $in{'res'} =~ s/\D//g; if ($in{'res'}) { local($flag,$no,$dat,$nam,$eml,$sub,$com); $flag=0; open(IN,"$logfile") || &error("Open Error: $logfile"); while (\n" if ($banner1 ne "");
# タイトル
if ($ImgT) {
print "";
} else {
print "";
}
print <
EOM
local($i,$no,$dat,$nam,$eml,$sub,$com,$url,$next,$back);
$i=0;
open(IN,"$logfile") || &error("Open Error: $logfile");
while (
\n";
# ページ繰り越し
$next = $page + $pageLog;
$back = $page - $pageLog;
print "
[$no] $sub\n";
print "送信者:$nam 送信日:$dat\n";
print "[返信]
$com";
print "
$url" if ($url);
print "
\n";
}
close(IN);
print "\n";
if ($back >= 0) {
print " \n";
}
if ($next < $i) {
print " \n";
}
# 著作権表示(削除禁止)
print <