#!/usr/bin/perl
#┌─────────────────────────────────
#│ YY-BOARD v4.54 (2001/09/06)
#│ Copyright(C) Kent Web 1997-2001
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
$ver = 'YYBBS v4.54';
#┌─────────────────────────────────
#│ [注意事項]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
#│ いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 設置に関する質問はサポート掲示板にお願いいたします。
#│ 直接メールによる質問は一切お受けいたしておりません。
#│ 3. 添付の home.gif は L.O.V.E の mayuRin さんによる画像です。
#└─────────────────────────────────
#
# 【ファイル構成例】
#
# public_html (ホームディレクトリ)
# |
# +-- yybbs / yybbs.cgi [755]
# | yybbs.log [666]
# | count.dat [666]
# | jcode.pl [644]
# | pastno.dat [666]
# |
# +-- img / home.gif, bear.gif, ...
# |
# +-- lock [777] /
# |
# +-- past [777] / 1.dat [666] ...
#============#
# 設定項目 #
#============#
# 文字コードライブラリ取込
require './jcode.pl';
# タイトル名を指定
$title = "ダウト掲示板";
# タイトルの色
$t_color = "#008080";
# タイトルの大きさ(ポイント数:スタイルシートで有効)
$t_size = '18pt';
# タイトル文字のフォントタイプ
$t_face = "MS Pゴシック";
# 本文の文字大きさ(ポイント数:スタイルシートで有効)
$b_size = '10pt';
# 壁紙を指定する場合(http://から指定)
$backgif = "";
# 背景色を指定
$bgcolor = "#E1F0F0";
# 文字色を指定
$text = "#000000";
# リンク色を指定
$link = "#0000FF"; # 未訪問
$vlink = "#800080"; # 訪問済
$alink = "#FF0000"; # 訪問中
# 戻り先のURL (index.htmlなど)
$homepage = "../index.html";
# 最大記事数
$max = 1000;
# 管理者用マスタパスワード (英数字で8文字以内)
$pass = '1031';
# アイコン画像のある「ディレクトリ」
# → フルパスなら http:// から記述する
# → 最後は必ず / で閉じる
$imgurl = "./img/";
# アイコンを定義(上下は必ずペアで)
@icon1 = ('bear.gif','cat.gif','cow.gif','dog.gif','fox.gif','hituji.gif',
'monkey.gif','zou.gif','mouse.gif','panda.gif','pig.gif','usagi.gif');
@icon2 = ('くま','ねこ','うし','いぬ','きつね','ひつじ',
'さる','ぞう','ねずみ','パンダ','ぶた','うさぎ');
# 管理者専用アイコン機能 (0=no 1=yes)
# → 【使い方】記事投稿時に「管理者アイコン」を選択し、パスワードに
# 「管理用パスワード」を入力して下さい。
$my_icon = 0;
# 管理者専用アイコンの「ファイル名」を指定
$my_gif = 'admin.gif';
# アイコンモード (0=no 1=yes)
$icon_mode = 0;
# 返信がつくと親記事をトップへ移動 (0=no 1=yes)
$topsort = 1;
# ホスト名取得モード
# → 0 : $ENV{'REMOTE_HOST'}変数で取得できる場合
# → 1 : gethostbyaddr関数で取得できる場合
$get_remotehost = 0;
# タイトルにGIF画像を使用する時 (http://から記述)
$title_gif = "";
$tg_w = '150'; # GIF画像の幅 (ピクセル)
$tg_h = '50'; # 〃 高さ (ピクセル)
# ファイルロック形式
# → 0=no 1=symlink関数 2=mkdir関数
$lockkey = 0;
# ロックファイル名
$lockfile = './lock/yybbs.lock';
# ミニカウンタの設置
# → 0=no 1=テキスト 2=GIF画像
$counter = 1;
# ミニカウンタの桁数
$mini_fig = 6;
# テキストのとき:ミニカウンタの色
$cnt_color = "#DD0000";
# GIFのとき:画像までのディレクトリ
# → 最後は必ず / で閉じる
$gif_path = "./img/";
$mini_w = 8; # 画像の横サイズ
$mini_h = 12; # 画像の縦サイズ
# カウンタファイル
$cntfile = './count.dat';
# タグの許可 (0=no 1=yes)
$tagkey = 0;
# スクリプトのファイル名
# → フルパスで指定する場合は http:// から記述
$script = './yybbs.cgi';
# ログファイルを指定
# → フルパスで指定する場合は / から記述
$logfile = './yybbs_new.log';
# メールアドレスの入力必須 (0=no 1=yes)
$in_email = 0;
# 記事 [タイトル] 部の長さ (全角文字換算)
$sub_len = '12';
# 記事の [タイトル] 部の色
$sub_color = "#006400";
# 記事表示部の下地の色
$tbl_color = "#FFFFFF";
# 家アイコンの使用 (0=no 1=yes)
$home_icon = 1;
$home_gif = "home.gif"; # 家アイコンのファイル名
$home_wid = 16; # 画像の横サイズ
$home_hei = 20; # 〃 縦サイズ
# イメージ参照画面の表示形態
# 1 : JavaScript
# 2 : HTML (JavaScriptが不安定なブラザが多い場合はこちら)
$ImageView = 1;
# イメージ参照画面のサイズ (JavaScriptの場合)
$img_w = '550'; # 横幅
$img_h = '450'; # 高さ
# methodの形式 (POST/GET)
$method = 'POST';
# 記事の更新は method=POST 限定 (0=no 1=yes)
# → セキュリティ対策
$MethPost = 1;
# 同一IPアドレスからの連続投稿時間(秒数)
# → 連続投稿などの荒らし対策
# → 値を 0 にするとこの機能は無効になります
$wait = 1200;
# 1ページ当たりの記事表示数 (親記事)
$p_log = 5;
# 投稿があるとメール通知する (sendmail必須)
# 0 : 通知しない
# 1 : 通知するが、自分の投稿記事はメールしない。
# 2 : 通知する。自分の投稿記事も通知する。
$mailing = 1;
# メールアドレス(メール通知する時)
$mailto = 'tsuno@jaga.jpn.org';
# sendmailパス(メール通知する時)
$sendmail = '/usr/lib/sendmail';
# 他サイトから投稿排除時に指定 (http://から書く)
$base_url = "";
# 文字色の設定。
@COLORS = ('#800000','#DF0000','#008040','#0000FF','#C100C1','#FF80C0','#FF8040','#000080');
# 投稿フォーム改行形式 (soft=手動 hard=強制)
$wrap = 'soft';
# URLの自動リンク (0=no 1=yes)
# --> タグ許可の場合は no とすること。
$autolink = 1;
# タグ広告挿入オプション (FreeWebなど)
# → の代わりに「広告タグ」を挿入する。
# → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能です。
$banner1 = ''; # 掲示板上部に挿入
$banner2 = ''; # 掲示板下部に挿入
# アクセス制限(ホスト名、IPアドレスを記述)
@deny = (
"anonymizer.com",
"cache*.*.interlog.com",
"211.154.120.*",
"",
"",
"",
"",
"",
""
);
#---(以下は「過去ログ」機能を使用する場合の設定です)---#
#
# 過去ログ生成 (0=no 1=yes)
$pastkey = 0;
# 過去ログ用NOファイル
$nofile = './pastno.dat';
# 過去ログのディレクトリ
# → フルパスなら / から記述(http://からではない)
# → 最後は必ず / で閉じる
$pastdir = './past/';
# 過去ログ1ファイルの行数
# → この行数を超えると次ページを自動生成します
$log_line = '600';
#============#
# 設定完了 #
#============#
# メイン処理
&decode;
&axs_check;
if ($mode eq "howto") { &howto; }
elsif ($mode eq "find") { &find; }
elsif ($mode eq "usr_del") { &usr_del; }
elsif ($mode eq "usr_edt") { &usr_edt; }
elsif ($mode eq "regist") { ®ist; }
elsif ($mode eq "res") { &res_form; }
elsif ($mode eq "admin") { &admin; }
elsif ($mode eq "image") { ℑ }
elsif ($mode eq "past") { &past; }
elsif ($mode eq "check") { ✓ }
&html_log;
#----------------#
# アクセス制限 #
#----------------#
sub axs_check {
# ホスト名を取得
&get_host;
local($flag)=0;
foreach (@deny) {
if (!$_) { next; }
$_ =~ s/\*/\.\*/g;
if ($host =~ /$_/i) { $flag=1; last; }
}
if ($flag) { &error("アクセスを許可されていません"); }
}
#--------------#
# 記事表示部 #
#--------------#
sub html_log {
local($no,$reno,$date,$name,$mail,
$sub,$comment,$url,$host,$pw,$color,$icon,$p_flag);
# クッキーを取得
&get_cookie;
# フォーム長を調整
&get_agent;
# ヘッダを出力
if ($ImageView == 1) { &header('ImageUp'); }
else { &header; }
# カウンタ処理
if ($counter) { &counter; }
# タイトル部
print "
\n";
if ($banner1 ne "") { print "$banner1\n"; }
if ($title_gif eq '') {
print "$title\n";
} else {
print "\n";
}
print "
\n";
print "[トップに戻る]\n";
print "[使い方]\n";
print "[ワード検索]\n";
# 過去ログのリンク部を表示
if ($pastkey) { print "[過去ログ]\n"; }
print <<"EOM";
[管理用]
\n";
print "
\n";
# ページ区切り処理
$start = $page + 1;
$end = $page + $p_log;
# 記事を展開
open(IN,"$logfile") || &error("Open Error : $logfile");
$top = ;
$i=0;
$flag=0;
while () {
($no,$reno,$date,$name,$mail,$sub,
$comment,$url,$host,$pw,$color,$icon) = split(/<>/);
if ($reno eq "") { $i++; }
if ($i < $start) { next; }
if ($i > $end) { next; }
# 題名の長さ
if (length($sub) > $sub_len*2) {
$sub = substr($sub,0,$sub_len*2);
$sub .= "...";
}
if ($mail) { $name = "$name"; }
if ($home_icon && $url) { $url = ""; }
elsif (!$home_icon && $url) { $url = "<HOME>"; }
if (!$icon_mode) { $comment = "$comment
"; }
if (!$reno && $flag) {
print "
\n";
$flag=1;
}
if (!$reno) {
print "\n";
$flag=1;
}
if ($reno) { print " \n"; }
print "\n";
if ($reno) { print "
| \n"; }
# アイコンモード
if ($icon_mode) { print " | "; }
print "$comment | \n";
}
close(IN);
print " |
\n";
$next_page = $page + $p_log;
$back_page = $page - $p_log;
$p_flag=0;
print "\n\n