#!/usr/local/bin/perl
$ver = 'BBS';
#
# 【ファイル構成例】
#
# public_html (ホームディレクトリ)
# |
# +-- fantasy / fantasy.cgi [705]
# | fantasy.log [606]
# | jcode.pl [604]
# |
# +-- img / *.gif
# |
# +-- lock [707] /
#
#
# [ チェックモードの仕方 ] : mode=check という引数を付けて呼出す
#
# 例 http://〜〜/fantasy.cgi?mode=check
#-------------------------------------------------
# 基本設定
#-------------------------------------------------
# コード変換ライブラリ取込
require './jcode.pl';
# タイトル名
$title = "HOTEL ROSE 掲示板";
# キャラクタを指定(上下の配列はペアで)
@icon1 = (
'cat_1.gif','cat_2.gif','cat_3.gif','dog_1.gif','dog_2.gif',
'dog_3.gif','dog_4.gif','dog_5.gif','kuma_1.gif','koara.gif',
'chu_1a.gif','chu_1b.gif','chu_1c.gif','poppo_1a.gif','poppo_1b.gif',
'poppo_1c.gif','usa_1a.gif','usa_1b.gif','usa_1c.gif','usa_1d.gif');
@icon2 = (
'猫1','猫2','猫3','犬1','犬2',
'犬3','犬4','犬5','クマ','コアラ',
'ねずみ1','ねずみ2','ねずみ3','ひよこ1','ひよこ2',
'ひよこ3','うさぎ1','うさぎ2','うさぎ3','うさぎ4');
# タイトル文字の色
$t_color = "#400000";
# タイトル文字のタイプ
$t_face = "MS Pゴシック";
# タイトル文字サイズ
$t_point = '25px';
# 本文文字サイズ
$b_point = '13px';
# スクリプト名
$script = './bbs.cgi';
# ログファイル名
$logfile = './fantasylog.cgi';
# 管理用パスワード
$pass = 'rs12';
# 最大記事数(これを超える記事は古い順に削除されます)
$max = 100;
# 戻り先
$home = "../index.html";
# 画像格納ディレクトリ(絶対パスなら http://から記述)
# → 最後は / を閉じない
$imgurl = './img';
# 背景色、文字色
$bgrnd = ""; # 壁紙
$bgcol = "#dfcaba"; # 背景色
$text = "#000000"; # 文字色
$link = "#0000FF"; # リンク色:未訪問
$vlink = "#800080"; # リンク色:既訪問
$alink = "#DD0000"; # リンク色:訪問中
# ワンポイントカラー
$onepnt = "#008000";
# URLの自動リンク (0=no 1=yes)
$autolink = 1;
# 1ページあたりの記事表示件数
$p_log = 7;
# ロックファイル機構 (0=no 1=symlink関数 2=mkdir関数)
$lockkey = 2;
# ロックファイル名
$lockfile = './lock/fantasy.lock';
# メール通知機能
# 0=no
# 1=yes:自分の投稿記事もメール通知する
# 2=yes:自分の投稿記事はメール通知しない
$mailing = 0;
# sendmailのパス(メール通知する場合)
$sendmail = '/usr/lib/sendmail';
# メール通知先アドレス(メール通知する場合)
$mailto = 'xxx@xxx.xxx';
# 居住地
@areas = ('大阪','兵庫','京都','奈良','滋賀','その他');
# 管理者名
$master = "HOTEL ROSE";
# 返信メッセージの文字色
$masCol = "#C100C1";
# 管理者用アイコン
$masIco = "kanri.gif";
# タグ広告挿入オプション
# → の代わりに「広告タグ」を挿入する。
# → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能です。
$banner1 = ''; # 掲示板上部に挿入
$banner2 = ''; # 掲示板下部に挿入
# アクセス制限(半角スペースで区切る)
# → 拒否するホスト名又はIPアドレスを記述(アスタリスク可)
# → 記述例 $deny = '*.anonymizer.com *.denyhost.xx.jp 211.154.120.*';
$deny = '';
# タイトル画像を使う場合
# → 画像URLを http:// から記述
$ImgT = "http://www.hotel-rose.jp/img/bbs/rose_header.gif";
$ImgW = 700; # 画像横幅
$ImgH = 155; # 画像縦幅
# 投稿後の処理
# → 掲示板自身のURLを記述しておくと、投稿後リロードします
# → ブラウザを再読み込みしても二重投稿されない措置。
# → Locationヘッダの使用可能なサーバのみ
$location = 'http://www.hotel-rose.jp/bbs/bbs.cgi';
# 他サイトから投稿排除時に指定 (http://から書く)
$baseUrl = "";
# フォーム内文字色
$formCol1 = "black";
# フォーム下地色
$formCol2 = "whitesmoke";
# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$gethostbyaddr = 0;
# 記事の吹出色
# → 順に、「幅」「下地色」「画像ファイル名」
$oyaWid = 500;
$oyaCol = "#FFFFFF";
@oyaCol = ("wh1.gif","wh2.gif","wh3.gif","wh4.gif","wh5.gif","wh6.gif");
#-------------------------------------------------
# 設定完了
#-------------------------------------------------
&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 'image') { ℑ }
elsif ($mode eq 'res') { &res_msg; }
elsif ($mode eq 'check') { ✓ }
&html;
#-------------------------------------------------
# アクセス制限
#-------------------------------------------------
sub axscheck {
# ホスト名取得
$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;
if ($host =~ /$_/i || $addr =~ /$_/i) { $flag=1; last; }
}
if ($flag) { &error("アクセスを許可されていません"); }
}
#-------------------------------------------------
# 記事表示
#-------------------------------------------------
sub html {
# クッキー情報を取得
local($cnam,$ceml,$curl,$cpwd,$care,$cico) = &get_cookie;
&header;
print "
\n";
if ($banner1 ne "") { print "$banner1\n"; }
# タイトル部
if ($ImgT) {
print "
\n";
} else {
print "$title\n";
}
print <
[留意事項]
[ワード検索]
[管理用]
EOM
local($no,$date,$name,$mail,$area,$icon,$icon2,$com,$res,$url,$i,$next,$back,$pix);
@oyaCol = ("", @oyaCol);
$pix=18;
$i=0;
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
$i++;
if ($i < $page + 1) { next; }
if ($i > $page + $p_log) { last; }
($no,$date,$name,$mail,$area,$icon,$icon2,$com,$res,$url) = split(/<>/);
if ($mail) { $name = "$name"; }
if ($url) { $url = "
"; }
# 記事を表示
print "\n";
# 反転対象部分1
if (!$flag) {
print " | \n";
print "\n";
print "
| \n";
} else {
print "\n";
}
print " | \n";
print "
| \n";
print " | \n";
# 反転対象部分2
if ($flag == 0) {
print " | \n";
} else {
print "
| \n";
}
print "
| \n";
print "\n";
print "[$no] $name [$area] ";
print "$date $url \n";
print "$com \n";
# 管理者レス
if ($res) {
print " \n";
print "
| ";
print " | \n";
print "$res \n";
print "[ From $master ] | \n";
print " \n";
}
print " |
| \n";
if ($flag == 1) {
print " | \n";
}
print " \n";
# 反転対象部分3
if ($flag == 0) { print "
| \n"; }
print " | \n";
print "
| \n";
print " | \n";
if ($flag == 1) { print "
| \n"; }
print " \n";
if ($flag == 1) {
print " | \n";
}
print " | \n";
print "
\n";
if ($flag == 0) { $flag = 1;}
else { $flag = 0; }
}
close(IN);
$next = $page + $p_log;
$back = $page - $p_log;
print "
|