#!/usr/bin/perl #┌───────────────────────────────── #│ Aska BBS v3.5 (2006/08/15) #│ Copyright (c) KentWeb #│ webmaster@kent-web.com #│ http://www.kent-web.com/ #└───────────────────────────────── $ver = 'ASKA BBS v3.5'; #┌───────────────────────────────── #│ [注意事項] #│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した #│ いかなる損害に対して作者は一切の責任を負いません。 #│ 2. 設置に関する質問はサポート掲示板にお願いいたします。 #│ 直接メールによる質問は一切お受けいたしておりません。 #└───────────────────────────────── # # 【ファイル構成例】 # # public_html (ホームディレクトリ) # | # +-- aska / aska.cgi [705] # askalog.cgi [606] # jcode.pl [604] #------------------------------------------------- # ■基本設定 #------------------------------------------------- # ライブラリ取り込み require './jcode.pl'; # タイトル名 $title = "質問・感想BBS"; # タイトル文字の色 $tCol = "#666666"; # タイトル文字サイズ $tSize = '30px'; # 本文文字サイズ $bSize = '13px'; # 本文文字スタイル $bFace = '"MS UI Gothic", "MS Pゴシック", Osaka'; # 記事題名の色 $subCol = "#000096"; # スクリプトURL $script = './aska.cgi'; # ログファイル $logfile = './askalog.cgi'; # 管理用パスワード $pass = '35741598'; # 最大記事数(これを超える記事は古い順に削除) $max = 50; # 戻り先URL $home = "../top.html"; # タイトル画像を使う場合 (http://から画像を指定) $ImgT = ""; $ImgW = 300; # 横幅サイズ $ImgH = 70; # 縦幅サイズ # bodyタグ $body = '
'; # URLの自動リンク (0=no 1=yes) $autolink = 1; # 引用部色変更 # 1 : 色指定を行うと「引用部」を色変更します # 2 : この機能を使用しない場合は何も記述しないで下さい ($refCol="";) $refCol = "#804000"; # 1ページあたりの記事表示件数 $pageLog = 10; # メール通知機能 # 0 : 通知しない # 1 : 通知する → 自分の投稿記事も通知する # 2 : 通知する → 自分の投稿記事は通知しない $mailing = 0; # sendmailのパス(メール通知する場合) $sendmail = '/usr/lib/sendmail'; # メール通知先アドレス(メール通知する場合) $mailto = 'xxx@xxx.xxx'; # タグ広告挿入オプション # → の代わりに「広告タグ」を挿入。 # → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。 $banner1 = ''; # 表示部上部に挿入 $banner2 = ''; # 表示部下部に挿入 # 記事の更新は method=post に限定する場合(セキュリティ対策) # → 0=no 1=yes $postonly = 1; # 他サイトから投稿排除時に指定する場合(セキュリティ対策) # → 掲示板のURLをhttp://から書く $baseUrl = ''; # 投稿制限(セキュリティ対策) # 0 : しない # 1 : 同一IPアドレスからの投稿間隔を制限する # 2 : 全ての投稿間隔を制限する $regCtl = 1; # 制限投稿間隔(秒数) # → $regCtl での投稿間隔 $wait = 60; # 禁止ワード # → 投稿時禁止するワードをコンマで区切る $no_wd = ''; # 日本語チェック(投稿時日本語が含まれていなければ拒否する) # 0=No 1=Yes $jp_wd = 1; # URL個数チェック # → 投稿コメント中に含まれるURL個数の最大値 $urlnum = 3; # 投稿後の処理 # → 掲示板自身のURLを記述しておくと、投稿後リロードします # → ブラウザを再読み込みしても二重投稿されない措置。 # → Locationヘッダの使用可能なサーバのみ $location = ''; # ホスト取得方法 # 0 : gethostbyaddr関数を使わない # 1 : gethostbyaddr関数を使う $gethostbyaddr = 0; # アクセス制限(半角スペースで区切る、アスタリスク可) # → 拒否ホスト名を記述(後方一致)【例】*.anonymizer.com $deny_host = ''; # → 拒否IPアドレスを記述(前方一致)【例】210.12.345.* $deny_addr = ''; # 1回当りの最大投稿サイズ (bytes) $maxData = 51200; #------------------------------------------------- # ■設定完了 #------------------------------------------------- &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); } # IPチェック local($flg); foreach ( split(/\s+/, $deny_addr) ) { s/\./\\\./g; s/\*/\.\*/g; if ($addr =~ /^$_/i) { $flg = 1; last; } } if ($flg) { &error("アクセスを許可されていません"); # ホストチェック } elsif ($host) { foreach ( split(/\s+/, $deny_host) ) { s/\./\\\./g; s/\*/\.\*/g; if ($host =~ /$_$/i) { $flg = 1; last; } } if ($flg) { &error("アクセスを許可されていません"); } } if ($host eq "") { $host = $addr; } } #------------------------------------------------- # 記事表示 #------------------------------------------------- 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); open(IN,"$logfile"); while (\n" if ($banner1 ne "");
# タイトル
if ($ImgT) {
print "\n";
} else {
print "$title\n";
}
print <
$url" if ($url);
print "
\n";
}
close(IN);
print <
- ASKA BBS -