Royal Road BBS

利用規約

  1. このスクリプトはフリーで提供されています。個人・法人・商用サイト問わず誰でも自由に利用出来ます。
  2. このスクリプトを有償でレンタルしたり、直接利益を得る目的での利用は固く禁止させて頂きます。
  3. このスクリプトの著作権表示部を削除・改竄することは出来ません。
  4. このスクリプトの再配布は禁止させて頂きます。
  5. このスクリプトは自由に改造して利用することが出来ます。ただし、改造した場合でも著作権表示部の削除・改竄は絶対に禁止です。当方の著作権表示に、改造者の著作権表示を追加する形にして下さい。
  6. 改造とは、このスクリプトを基盤にして何かの機能を追加することだけではなく、HTML 部分のソースの書き換え、ルーチンの書き換え等を含みます。「改造」なのに「一から自分で作った」かのように見せかけたりしないで下さい
  7. このスクリプトは必ずしも全ての環境で動作することを保障しません。
  8. このスクリプトを利用した結果いかなる損害・被害等が発生したとしても作者は一切の責任を負いません。
  9. 当方に著しく不利益があると判断した場合、スクリプトの使用を一方的に中止させて頂くことがあります。
  10. この「利用規約」は、事前予告なく加筆・改変されることがあります。

ファイルをダウンロードした時点で、これらの利用規約に同意したものと見なします。

サンプル

動作確認をしたフリーサーバー

情報求ム。

特徴

ソースは XHTML 1.0 + CSS 2 の仕様に沿うように書いてますが、どこかおかしい部分があったら是非教えて下さい。全てのデザインはスタイルシートによって行っているので、デザインを変えるためには CSS の知識が必要です。

欠点

既知の問題点

例えば初期設定ファイルのログ保存最大数が 50 件、過去ログ 1 ファイル辺りのログ保存最大数が 20 件で、現行ログには 40 件記録されているとする。この状態で管理者が初期設定ファイルのログ保存最大数を 10 などに一気に減らして設定を更新し投稿を行った場合、過去ログのログ保存最大数が 20 件を超過し、この場合は 30 件 + 最新書き込み 1 件の計 31 件分が 1 つの過去ログファイル内に記録されてしまう(本来ならば 20 件ずつ過去ログに記録する設定なのに、31 件分記録されてしまうということ)。

ダウンロード

お好きな形式のファイルを選択してダウンロードして下さい。

rrbbs.zip rrbbs.lzh

v1.08 及び v1.09 からのアップデートは「rrbbs.cgi」「rrbbsinit.cgi」「rrbbs.js」の 3 ファイルです。これら 3 ファイルだけをまとめた圧縮ファイル(ZIP形式)をご用意しましたので、v1.08 及び v1.09 からのアップグレードの方はこちらを落として下さい。今回は、初期設定とJSファイルの初期設定をアップデート後に各自で設定し直す必要があるので注意して下さい(これが面倒臭いところですが、仕方ありません)。また、本体に何か手を加えていた場合も各自で同じように修正する必要があります。バージョンアップ後は必ず管理画面から「HTML 書き出し」を一度実行し、rrbbs.html を最新の状態に更新するのを忘れないで下さい。

設置して頂いているサイト

「Royal Road BBS」を実際にご利用なさっている方々のサイトです。

利用方法

「rrbbsinit.cgi」をメモ帳などのテキストエディタで開いて編集して下さい。Perl のパスはお使いのサーバに合わせて下さい。デフォルトでは #!/usr/local/bin/perl になってます。

設置

パーミッション。基本的には「705」「606」等の指定になりますが、サーバーによっては「700」「600」の場合もあります。サーバ側で指定がある場合はそちらに従って下さい。

# / rrbbs [701] / -- rrbbs.cgi          [705 or 700] - (メインスクリプト)
#                 -- rrbbslog.cgi       [606 or 600] - (ログファイル)
#                 -- rrbbspastconf.cgi  [606 or 600] - (過去ログコンフィグファイル)
#                 -- rrbbs.html         [606 or 604] - (掲示板の最初のページ)
#                 -- rrbbsinit.cgi      [604 or 600] - (初期設定用)
#                 -- Idea256.pm         [604 or 600] - (Idea[256] 専用モジュール)
#                 -- jcode.pl           [604 or 600] - (日本語変換ライブラリ)
#                 -- rrbbs.css          [604]        - (スタイルシート)
#                 -- rrbbs.js           [604]        - (JavaScript ファイル)
#                 -- rrbbspast/         [703 or 700] - (過去ログ保存用ディレクトリ)
#                 -- rrbbsicon/         [701]        - (アイコン画像用ディレクトリ)

Jcode.pm がサーバー側に導入されている場合はjcode.plは不要なので削除して構いません。また、アイコンを使用しない場合は rrbbsicon/ ディレクトリは不要です。過去ログを保存しない場合は rrbbspast/ ディレクトリと rrbbspastconf.cgi も不要です。

利用上の注意(CGI版)

設置が完了したら...

全てのファイルをアップしてパーミッションの設定も行い初期設定も完了したら、rrbbs.htmlにアクセスして管理画面に入り、「HTML 書き出し」を一度実行します。すると掲示板に移動すると思いますので、そこから投稿やレスを試してみて、正常に動作すれば設置はOKです。

ちょっと改造 & FAQ

タグの属性値を無視って?

例えば

<em style="font-size: 500pt">テキスト

というEM要素があったとします。この場合の属性値は

style="font-size: 500pt"

の部分になります。これを全て無視するので、上記のEM要素をメッセージに書いて投稿した場合は、

<em>

になります。

具体的な理由は書きませんが、主にセキュリティ対策でこのような仕様になっています。 Aタグなどを許可しても意味がありませんので、許可しないことを推奨致します。 また、開始タグと終了タグの順番が逆だったりしたらタグとして扱いませんので安全に使用可能です。 ちなみに、開始タグと終了タグのペアで正当性を判断している関係上、以下のような終了タグを持たないタグを許可しても正常に動作しませんので悪しからず。

meta br col link base img area param hr input frame

まあ、普通は特に許可する必要のないタグだとは思いますが。

アイコンを定義するには?

設定するファイルが2つあるので注意して下さい。アイコン画像用ディレクトリに画像をアップしたら、 「メモ帳」でrrbbsinit.cgiを開きます。「アイコンの設定」にある「アイコン画像の定義」は初期状態では以下のようになっています。


# アイコン画像の定義
$self->{icons} = {
        'cabin.gif'             =>        'キャビン 1',
        'cabin_m.gif'           =>        'キャビン 2',
        'hope.gif'              =>        'ホープ',
        'kent.gif'              =>        'ケント',
        'lark.gif'              =>        'ラーク',
        'wakaba.gif'            =>        'わかば',
        'sevenstars.gif'        =>        'セブンスター',
        'peace.gif'             =>        'ピース',
        'mild_seven.gif'        =>        'マイルドセブン 1',
        'mild_seven2.gif'       =>        'マイルドセブン 2',
        'marlboro.gif'          =>        'マルボロ',
        'lucky-strike.gif'      =>        'ラッキーストライク',
};

「=>」の左側の部分がアイコン画像のファイル名です。ここにはアイコン画像のディレクトリは含みません。例えば「'cat.gif'」や「'dog.gif'」のようになります。 次に、「=>」の右側の部分がアイコンの名前で、ここでの指定がアイコン選択時のメニューや画像の ALT 属性で表示されます。例えば「'ネコ'」や「'イヌ'」のように自由に指定することが出来ます。 CGI 側の設定はこれで完了ですが、もう1ファイル設定します。「rrbbs.js」を右クリックの編集で開きます。


// アイコン画像の定義
var icons = {
        'cabin.gif'             :        'キャビン 1',
        'cabin_m.gif'           :        'キャビン 2',
        'hope.gif'              :        'ホープ',
        'kent.gif'              :        'ケント',
        'lark.gif'              :        'ラーク',
        'wakaba.gif'            :        'わかば',
        'sevenstars.gif'        :        'セブンスター',
        'peace.gif'             :        'ピース',
        'mild_seven.gif'        :        'マイルドセブン 1',
        'mild_seven2.gif'       :        'マイルドセブン 2',
        'marlboro.gif'          :        'マルボロ',
        'lucky-strike.gif'      :        'ラッキーストライク'        // ←最後は「,」が不要。
};

rrbbsinit.cgi とほぼ同一です。違うのは、「=>」ではなく「:」なこと、一番最後に「,」を付けてはならないことです。 rrbbsinit.cgi と rrbbs.js の設定は必ず同じになるようにします。設定を変更後は必ず管理画面から「HTML 書き出し」を一度実行し、rrbbs.html に設定を反映させて下さい。

文字色を追加するには?

「メモ帳」でrrbbsinit.cgiを開きます。「文字色の設定」で色の定義が可能です。デフォルトでコメントされている(行頭に ( # ) が付いている)のは、デフォルトの背景色「白」に対して、読めない、読み難い、やや読み難いと思われる文字色です。


$self->{textcolor} = {
        black       =>        'ブラック',
        gray        =>        'グレイ',
#       silver      =>        'シルバー',
#       white       =>        'ホワイト',
        red         =>        'レッド',
#       yellow      =>        'イエロー',
#       lime        =>        'ライム',
#       aqua        =>        'アクア',
        blue        =>        'ブルー',
        fuchsia     =>        'フクシア',
        maroon      =>        'マルーン',
        olive       =>        'オリーブ',
        green       =>        'グリーン',
        teal        =>        'ティール',
        navy        =>        'ネイビー',
        purple      =>        'パープル',
#       orange      =>        'オレンジ',
        tomato      =>        'トマト',
        chocolate   =>        'チョコレート',
};

「gold」を追加してみましょう。

$self->{textcolor} = {
        black       =>        'ブラック',
        gray        =>        'グレイ',
#       silver      =>        'シルバー',
#       white       =>        'ホワイト',
        red         =>        'レッド',
#       yellow      =>        'イエロー',
#       lime        =>        'ライム',
#       aqua        =>        'アクア',
        blue        =>        'ブルー',
        fuchsia     =>        'フクシア',
        maroon      =>        'マルーン',
        olive       =>        'オリーブ',
        green       =>        'グリーン',
        teal        =>        'ティール',
        navy        =>        'ネイビー',
        purple      =>        'パープル',
#       orange      =>        'オレンジ',
        tomato      =>        'トマト',
        chocolate   =>        'チョコレート',
        gold        =>        'ゴールド',
};

少し複雑なので良く読んで下さい。「=>」の左側の部分がスタイルシートのクラス名と <option> タグの value 属性を兼ねています。必ず 1 文字目が半角アルファベットから始まる名前にして下さい。2 文字目以降は半角英数字と「_」を使えます。 「=>」の右側の部分は <option> タグのテキスト部になります。こちらはお好みで自由に設定して下さい。例えば「'イエロー'」を「'黄色'」などにしても良いです。 使わない色は行頭に「#」を付けるか、行ごと消してしまえば良いです。 設定を変更後は必ず管理画面から「HTML 書き出し」を一度実行し、rrbbs.html に設定を反映させて下さい。 これだけで追加出来ればラクチンなのですが、もう一つ手順が必要になります。「rrbbs.css」を開いて一番下(分かればどこでも良いです)に以下のように追加します。

.gold { color: #ffd700 }

これで完了。最初はちょっと面倒に感じるかもしれませんが、この要領で文字色は自由に追加・変更・削除出来ます。

クッキーの設定を変えるには?

rrbbs.jsを右クリックの「編集」で開き、「クッキーの名前」と「クッキーの有効期限」をご自由に変更して下さい。

何故最初の 1 ページが HTML なのですか?

閲覧時の負荷を無くす為です。掲示板というのは、通常はアクセスした人が必ず書き込むということはなく、ただ閲覧するだけである場合が多いものです。しかしながら、このような閲覧のみの場合でもCGIにリクエストするわけなので、プロセスが起動されることになります。

ブックマークやリンク等から掲示板にアクセスする場合、普通は掲示板の最初の1ページ(最新の情報があるページ)にアクセスすると思うので、このページが最も閲覧頻度が高いと推測されます。ここで、このページをHTML文章にすることで、余計なプロセスが起動されることを可能な限り抑えることが出来ると期待します。

ここからは作者の勝手な推論ですが、仮に普通の掲示板CGIにアクセスするのに「パワー1」を使用し、ログの書き込みをするのに「パワー2」が必要だとします。100回アクセスがあり、うち10回書き込みが行われたとすると、「パワー120」を使用することになります。これに対して、最初の1ページがHTMLである掲示板CGIでは、普通にアクセスする場合は「パワー0」ですが、書き込みでは通常のログとHTMLの両方を更新するので、ややコストが掛かり「パワー4」が必要だとします。100回アクセスがあり、うち10回書き込みが行われたとすると、「パワー40」を使用することになります。

あくまでもこれらのデータは作者の勝手な推論(=勘)なので、必ずしもこの通りの結果が得られるとは限りませんが、書き込みよりも閲覧の方が明らかに多い性質を持つ掲示板では、最初の 1 ページを HTML にした方が良いと思いました。

ログ形式はどうなってるの?

「rrbbslog.cgi」がログになっています。形式は以下のとおり。

1 行目
今までに立てられた総スレッド数<>今までに付けられた総レス数<>現行ログ内の総スレッド数<>現行ログ内の総レス数<>直前に正常投稿された時間<>直前の投稿のメッセージ<>直前の投稿元の IP アドレス<>同一 IP アドレスからの連続投稿の回数
2 行目以降
スレッドナンバー(_レスナンバー):総投稿ナンバー<>投稿者名<>メールアドレス<>ホームページアドレス<>タイトル<>メッセージ<>文字色<>アイコン<>投稿時刻(:修正時刻)<>暗号化された削除・修正用キー<>投稿元 IP アドレス<>投稿元ホスト

だいたい、こんな感じです。

謝辞

jcode.pl の著作権は歌代 和正さん(http://www.srekcah.org/jcode/)にあります。素晴らしいライブラリの提供に感謝します。

デフォルトで添付されている「タバコアイコン」及び背景画像は「桃たれちゃう」のこはるさんに著作権があります。これらのアイコン又は背景画像を利用する場合、「桃たれちゃう」へのリンクは著作権の明示として必ず表示しなければなりません。(アイコンと背景画像を共に使わない場合にはリンクを外すことが出来ます。)

履歴

2006-09-22 v1.10
2005-04-20 v1.09
2004-10-31 v1.08
2004-10-30 v1.07
2004-10-22 v1.07
2004-10-17 v1.06
2004-10-16 v1.05
2004-10-07 v1.04
2004-10-05 v1.03
2004-10-04 v1.02
2004-10-03 v1.01
2004-09-29 v1.00
2004-09-21 試供品 1 号
2004-09-15 開発開始

▲ページ先頭に戻る