テストも兼ねているので不具合があった場合、掲示板あたりに報告してもらえるとありがたいです。
また、様々なブラウザでの動作報告も歓迎です。
RCS-BOARD Ver-3.0.0 より古いバージョンではかなり危険なセキュリティーホール(XSS脆弱性)が存在します。
古いバージョンを使っている場合、速やかにVer-3.0.0以上にバージョンアップするようにしてください。
ほんとすいません。
RCS-BOARD Ver-3.1.3 のダウンロード
このスクリプトによっていかなる事態が発生しても作者は一切の責任を負いません。
設置方法などはこちらの
オンラインマニュアルを参考にしてください。
Down Load
簡単な機能紹介
サーバへの負荷が少なくなるよう設計されたHTML埋め込み型のROチャット風の1行BBSとしてもチャットとしても使えるCGIです。
HTMLに埋め込めるためTOPページ等にさりげなく挿入できます。
DHTMLを随所に使用しているため、デスクトップにあるような柔軟なユーザーインターフェイスとなっています。
例えば、タイトルバーをD&D(ドラッグ&ドロップ)すると掲示板が移動したり、右下をD&Dでリサイズしたりします。
チャットとしての利用も考えて設計しています。
ゲーム内チャットやメッセのように、他人の発言をほぼリアルタイムに反映することができます。
また、現在の閲覧者名を表示&リアルタイムに反映する機能もあります。
入室&退室メッセージをログに残す事もできます。
短時間の連続投稿防止機能を設定できるため、チャットとして使わせない事や、連続投稿などの荒らし対策が可能です。
さらに、いくつかの手法によるスパムフィルタリング機能があり、これを組み合わせることで強力なスパムフィルターを構築できます。
また、最近多いアカウントハックウィルス対策として、自動リンクをするときに怪しいURLを自動的に判別して、
リンクを張らずに警告文を挿入し、閲覧者に注意を呼びかけます。
HTML表示部分はもちろん、殆どのテキスト部分はスキンファイルとして分離してあるために、プログラムを知らない方でもHTMLとCSSがわかれば簡単にデザインを変更できます。
ひとつのスクリプトで複数の掲示板を運用することが可能です。
さらに、ひとつのページに複数個の設置にも対応しています。
また、HTMLに埋め込まずに、CGI単独での運用も可能です。
Shift-JIS、EUC(EUC-JP)、JIS(ISO-2022-JP)、UTF-8(Unicode)はもちろん、その他多様な文字コードに対応。
様々な設置環境、様々なブラウザに柔軟に対応します。
簡単なとりセツみたいなもの
詳しい説明は掲示板のHelpから見れます。
タイトルバーをドラッグ&ドロップで移動可能
右下の角をドラッグ&ドロップでリサイズ可能
最小化ボタンクリックで最小化&最大化、クローズボタンクリックで掲示板を閉じます。
誰かの投稿があればほぼリアルタイムに記事が更新されます。
メッセっぽい感じかな?
ゲーム内のチャットのように他人の発言がリアルタイムに反映されます。
現在の閲覧者名がメニューのところに表示されます。
閲覧者リストの更新はページリロードすることなく動的に書き換わっていきます。
さらにこの閲覧者リストもほぼリアルタイムに更新されます。
ちなみにOperaからの閲覧者は諸事情あって名前がでません。
記事の投稿時間の表示や、記事の並び順は設定から変更可能。
ショートカットキーによっていくつかの操作を実行可能
デフォルト設定のショートカットキーは
Shift + Ctrl + C ・・・ 入力欄にフォーカス
Shift + Ctrl + M ・・・ 掲示板を最小化&最大化
Shift + Ctrl + O ・・・ 掲示板をクローズ&オープン
Shift + Ctrl + ← ・・・ 掲示板を左へ移動
Shift + Ctrl + ↑ ・・・ 掲示板を上へ移動
Shift + Ctrl + → ・・・ 掲示板を右へ移動
Shift + Ctrl + ↓ ・・・ 掲示板を下へ移動
Shift + Ctrl + B ・・・ 掲示板のサイズを大きくする
Shift + Ctrl + S ・・・ 掲示板のサイズを小さくする
Shift + Ctrl + A ・・・ 掲示板を最初の状態に戻す
Shift + Ctrl + N ・・・ 掲示板の記事をリロード
Shift + Ctrl + L ・・・ 掲示板の現在の閲覧者名をリロード
このショートカットキーの設定は訪問者が自由に変更できます。
変更はメニューの一番上のリンクから行えます。
また、設定にある Stealth Mode はチェックを入れる事で閲覧者リストに自分の名前を載せないようにします。
適用ボタンをクリックすることで、設定内容がただちに反映されます。
各ブラウザでのJavaScript動作確認状況
Firefox1.5(Gecko1.8)以上で最適化します。
?がついているものは動作確認してないけどおそらく。。というもの。
Safariや、各種Mac用ブラウザでの確認はしていません。
ですが、Konquerorでの動作確認済みのため、Safariでも動く可能性が高いです。
目標は全ブラウザでエラーの無い動作(`・ω・´)
◎は特に最適な動作、○は正常に動作、△は動作するけど不具合あり、×は全く動作しない(またはブラウザ側にその機能が無い)の意味です。
Lite Mode のみが○のブラウザでは、最初から Lite Mode(最低限の機能のみを提供するモード)が選択されます。
リアルタイムリロード | 閲覧者名表示関連 | 半透明化処理 | 掲示板移動、リサイズ等のその他の動作 | Lite Mode | |
---|---|---|---|---|---|
Firefox 2.0.0.14 Firefox 1.5.0.12 Firefox 3.0β5 (Gecko 1.8〜1.9.x) |
○ | ○ | ○ | ◎ | ○ |
IE 7.0 IE 6.0 IE 5.5 (Sleipnir 2.7.0) (Lunascape 4.6.5) |
○ | ○ | ○ | ○ | ○ |
IE 5.0 | ○ | ○ | × | ○ | ○ |
IE 4.0 | × | × | × | × | ×(対応予定) |
IE 4.0未満 | × | × | × | × | × |
Firefox 1.0.8 Mozilla 1.7.13 Netscape 8.1.3 (Gecko 1.7.x) |
○ | ○ | ○ | ◎ | ○ |
Netscape 7.1 Mozilla 1.2〜1.6 (Gecko 1.2〜1.6.x) |
○ | ○ | × | ○ | ○ |
Mozilla 1.1 (Gecko 1.1.x) |
○ | △ | × | ○ | ○ |
Mozilla 1.0.1 Mozilla 0.9.7 (Gecko 0.9.7〜1.0.x) |
○ | △ | × | △ | ○ |
Netscape 6.2 (Gecko 0.9〜0.9.6) |
× | × | × | △ | ○ |
Mozilla 0.6〜0.8(Gecko 〜0.8.x) | × | × | × | × | × |
Netscape 4.7 | × | × | × | × | ×(対応予定) |
Netscape 4未満 | × | × | × | × | × |
Opera 9.21 | ○ | △ | ○ | ○ | ○ |
Opera 9.10 Opera 9.02 |
○ | △ | △ | ○ | ○ |
Opera 8.54 Opera 8.01 |
○ | △ | × | ○ | ○ |
Opera 7.54 Opera 7.20 |
× | × | × | ○ | ○ |
Opera 7.02 | × | × | × | △ | ○ |
Opera 6.06 | × | × | × | × | △ |
Konqueror 3.5.6 Konqueror 3.4.0 |
○ | △ | × | ○ | ○ |
簡単なQ&A
リアルタイムに更新って負荷は大丈夫なの?
巷で話題のAjaxという手法を使って、ログファイルや閲覧者ファイルのタイムスタンプを確認し、
更新があったときだけリロードするようになっています。
このタイムスタンプの確認を短いスパンで行っているので、投稿などがあればほぼリアルタイムに反映されていきます。
また、このタイムスタンプの確認はCGIを介さず、JavaScriptが直接読みにいくのでサーバーに負荷をかけません。
転送量もタイムスタンプの確認だけなので、かなり小さく抑えられるしくみになっています。
ただし、ほぼ投稿毎にリロードすることでリロード回数が増えるので、その分の負荷は増えますが、
投稿がないのに無駄なリロードを繰り返すことがなくなるのでその分負荷は減ります。結局あまり変わらない気がします。
どうしても負荷が気になる人も、タイムスタンプ確認のスパンを設定で変更できるので、
そのスパンを長めに設定すればリロード回数はおのずと減ることになり、負荷軽減になります。
30秒毎とかのリロードでいいんだよぉぉぉ!という人も、タイムスタンプ確認のスパンを30秒に設定すれば、
30秒毎に投稿がある場合のみリロードされるので、ただ単に定期的にリロードするより低負荷です。
閲覧者名のデータもAjaxで読んでいるので負荷無く、ページ遷移なしで書き換わります。
ごちゃごちゃと書きましたが端的に言うと、負荷は普通のものとたいして変わりません。
無料レンタルサーバでも大丈夫です。多分。掲示板として使う分には全く問題ないはずです。
少人数でちょっとチャット的な使い方も多分大丈夫です、というか元々そういう使い方も考慮して設計しています。
が、当方は保証はしません。
大人数でヘビーな使い方はアウトです。
設置したらページの読み込みが遅くなったんだけど?
最初にJavaScriptと掲示板の外枠を全て読み込むのですが、合計すると45KBほどになるためです。
gzip圧縮転送を使えばこれが10KB程度になるので、読み込みがだいぶ早くなります。
gzip圧縮転送は設定ファイルから簡単に使えるようになっています。
それでも遅いならJavaScriptの動作モードを Lite Mode にするとさらに早くなります。
IE6、IE7 で、インラインフレーム内のページがロード時に白紙になるんだけど?
IEの文字コード自動判別が上手くいっていないのが原因です。
インラインフレーム内の文字コードをShift-JISにするか、設置ページと同じ文字コードを指定する事で大抵回避できます。
なんで最適化するのはIEじゃなくてFirefoxなの?
Firefoxの方が他のGeckoブラウザ、Safari、Konqueror等より多くのブラウザに対して互換性が高いためです。
記事毎に投稿された時間を表示させたいんだけど?
Ver-3.1.0より古いバージョンの物は記事上にマウスポインタを持ってくると投稿された時間が表示されます。
常に画面上に表示させたい場合は、スキンファイルの「記事(行)」というところを編集する事で表示できます。
$dd->{'date'} が投稿された時間になります。
Ver-3.1.0からは設定によって記事毎に時間を表示するかどうかを選択することができます。
HTMLに埋め込まないで使いたいんだけど?
Ver-3.1.0からは設定によってHTMLに埋め込まずに単独で運用するかどうか選択することができます。
'oneman_mode' という項目の設定値を '1' にすることで、単独運用モードとなります。(デフォルト値は '0')
この場合、掲示板にアクセスする際のアドレスは、
'〜〜/rcsbbs.cgi?oneman' のように、掲示板メインスクリプトのアドレスに、'?oneman'をつけるようにして下さい。
ひとつのスクリプトで複数の掲示板を運用したいんだけど?
Ver-3.1.0からはひとつのスクリプトで複数の掲示板を運用することが可能になりました。
まず、メモ帳などのテキストエディタに次のコードを記述して、ファイル名を'rcsbbs2.cgi'等として保存して下さい。
#!/usr/local/bin/perl
一行目は設置するサーバによって適切な値に変更してください。
$GLOBAL{'ini_file'} = './rcsini2.cgi';
require './rcsbbs.cgi';
二行目は設定ファイルの場所を記述します。
この場合、同じフォルダ内の'rcsini2.cgi'が設定ファイルになります。
'rcsini.cgi'の内容をコピー&ペーストして、その掲示板用に設定し、'rcsini2.cgi'等の名前で保存してください。
(特にログファイルの場所 'log_file' の設定を!ログファイルの名前を変えないと同じログを共有することになります。)
この設定の場合、'rcsbbs2.cgi'用の設定ファイル'rcsini2.cgi'が設置するディレクトリ内にあることになります。
三行目はメインプログラムファイルの場所を設定します。'rcsbbs2.cgi'からみた'rcsbbs.cgi'の場所です。
同じディレクトリ内に設置するのであればこの設定のままでOKです。
後は設置するHTMLファイルに、<script type="text/javascript" src="URL"></script>を記述してください。
Ver-3.1.2 → Ver-3.1.3 の変更点
リリースノート
一部サーバーで書き込み処理が正常に行えないバグを修正
設置ページ内のiframe上で、ドラッグ&ドロップが正常に行えないバグを修正
(rcsbbs.cgi、rcsjs.cgiの変更)
Ver-3.1.1 → Ver-3.1.2 の変更点
リリースノート
出力文字コードがUTF-16(BE、LE)、UTF-32(BE、LE)の場合、投稿コメントや名前が文字化けしていたバグを修正
JavaScriptを出力時に軽量化してロード時間が短縮されるよう修正
閲覧者がタイムアウトで自動退出した場合、退室メッセージの投稿時間を、退出したと思われる時間に近くなるよう修正
簡易デバッガの改良
(rcsbbs.cgi、rcsjs.cgiの変更)
Ver-3.1.0 → Ver-3.1.1 の変更点
リリースノート
掲示板挿入位置の設定を特にしていない場合にIEでスクリプトエラーが発生していたバグを修正
Konqueror 3.5.6 以上で閲覧者名に含まれる2バイト文字が表示されなかったバグを修正
(rcsbbs.cgi、rcsjs.cgiの変更)
Ver-3.0.7 → Ver-3.1.0 の変更点
リリースノート
(rcsbbs.cgi、rcsjs.cgi、rcsskin.cgi、rcsini.cgiの変更、exlib.plの廃止)
(追加設定項目(rcsini.cgi):'use_Encode'、'disp_time'、'disp_time_change_able'、'news_sort'、'news_sort_change_able'、
'css_position'、'css_top'、'css_left'、'css_bottom'、'css_right'、'admin_name'、'admin_color'、'system_mess_name'、'disp_inout'、
'color_in'、'color_out'、'deny_url'、'deny_a_tag'、'deny_only_ascii'、'deny_lwp'、'deny_bot_access'、'deny_no_name'、'deny_proxy'、
'referer_uri'、'auto_reload_sec'、'scr_name'、'module_dir'、'language'、'TZ'、'date_format'、'date_simple_format'、'month_name'、
'week_name'、'individually_cookie'、'individually_cookie_change_able'、'bbs_id'、'oneman_mode')
(削除設定項目(rcsini.cgi):'scr'、'text_width'、'visitor_name_format')
(追加設定項目(rcsskin.cgi):'visitor_name_format'、'minimize_element_list'、'x_resize_element_list'、
'y_resize_element_list'、'menu_link_list')
Ver-3.0.6 → Ver-3.0.7 の変更点
リリースノート
IE7、Konquerorに正式対応
IE7 において、掲示板の最小化/最大化、閉じる/開くをしたときにインラインフレーム内のページが必ず最上部にスクロールされてしまうバグを修正
Linux版Firefox、Konquerorにおいて、インラインフレーム内のページが最下部にスクロールされないバグを修正
掲示板外枠に表示される名前が、<>()"を含む場合に少しおかしくなるバグを修正
いろいろ調整してパフォーマンスを向上
(rcsbbs.cgi、rcsjs.cgiの変更)
Ver-3.0.5 → Ver-3.0.6 の変更点
URLの後にさらに文字を入れて投稿すると上の行へ改行されるバグを修正
(rcsbbs.cgiの変更)
Ver-3.0.4 → Ver-3.0.5 の変更点
閲覧者の退出処理が上手くいかなかった時に一定時間でタイムアウトする処理が一部の状況下では上手く働かなかったバグを修正
(rcsbbs.cgiの変更)
Ver-3.0.3 → Ver-3.0.4 の変更点
IE5に対する機能制限を解除
Netscape6だといろいろクラッシュするのでLite Modeで動くように修正
(rcsbbs.cgiの変更)
Ver-3.0.2 → Ver-3.0.3 の変更点
Firefox 1.5 にて、RCS-BOARDがあるページでタブ複製、文字エンコーディングの変更等をするとブラウザがクラッシュするバグを修正
設定フォームからJavaScriptの動作モードをLite Modeにしている訪問者も閲覧者リストに表示されていたバグを修正
KHTML系ブラウザ、Safari系ブラウザに対する機能制限を解除
(rcsbbs.cgi、rcsjs.cgiの変更)
Ver-3.0.1 → Ver-3.0.2 の変更点
アクセス制限された訪問者も閲覧者リストに表示されていたバグを修正
(rcsbbs.cgiのみの変更)
Ver-3.0.0 → Ver-3.0.1 の変更点
投稿があった時、リアルタイムリロード前に手動リロードしても直後にリアルタイムリロードが作動してしまうバグを修正
設定フォームからJavaScriptの動作モードを変更したときの挙動のバグを修正
パフォーマンスの低下は無いらしいので、常にデバッグモードが働くよう改良
(rcsbbs.cgi、rcsjs.cgiの変更)
Ver-3.0.0β2 → Ver-3.0.0 の変更点
悪意ある攻撃者が特殊な操作をした場合、掲示板閲覧者に任意のスクリプトを実行させることができる脆弱性を修正
危険だと思われるURL文字列を自動リンクしないで警告文を挿入する機能を追加
名前に"(半角ダブルクォーテーション)が入っているとスクリプトエラーが発生するバグを修正
名前に特定の文字をいれるとクッキーデータが破壊されるバグを修正
可能な限り文字コードの不整合による文字化けが発生しないように修正
設定項目を大幅に追加
Opera8以上で閲覧者リストの表示のみ行えるように改良
JavaScriptの動作モードに Lite Mode を追加。これにより古いブラウザからも最低限の機能で掲示板を利用できるように
ブラウザのリロードボタンでリロードすると、他の人の閲覧者リストから自分が消えることがあったバグを修正
他の閲覧者が全ていなくなった時にまだうまく閲覧者リストが更新されなかったバグを修正
スキンファイルをより柔軟なカスタマイズができるように調整
IE7 Beta2 において、掲示板の最小化/最大化ボタンと閉じるボタンが効いていなかったバグを修正
コードのクリーンアップ
(rcsbbs.cgi、rcsjs.cgi、rcsskin.cgi、rcsini.cgiの変更)
Ver-3.0.0β1 → Ver-3.0.0β2 の変更点
なめらかな感じに半透明化するように改良
リサイズ時にインラインフレーム内のスクロールを制御するように改良
閲覧者タイムアウトが実行されないように定期的に電文を飛ばす機能が上手く作動していなかったバグを修正
他の閲覧者が全ていなくなった時にうまく閲覧者リストが更新されなかったバグを修正
FirefoxがXMLHttpRequest周りで謎の警告を吐きHTTP非同期通信がまれに上手くいかなかったバグを修正
Operaでドラッグ&ドロップでの掲示板移動が軽快になるように修正
初めて設定を行うと様々な機能にバグが発生する現象を修正
まれに定期的な閲覧者リスト更新が実行されなかったバグを修正
(rcsbbs.cgi、rcsjs.cgi、rcsskin.cgiの変更です。)
Ver-2.1.2 → Ver-3.0.0β1 の変更点
閲覧者名を表示する機能を実装
リアルタイムリロード機能を実装
掲示板のタイトルバーをドラッグ&ドロップすることで掲示板を移動できる機能を実装
掲示板の右下角をドラッグ&ドロップすることで掲示板をリサイズできる機能を実装
ショートカットキーを実装
設定変更時にページリロードなしで設定内容が表示に反映されるように改良
最小化後に最大化した時の挙動を改良
JavaScriptファイル(rcsjs.cgi)を追加
掲示板のデザインを改良
広告の自動挿入防止のためのContent-type偽称方法を変更できるように改良
エラーメッセージ等のテキストを完全にスキンファイルに分離
インラインフレーム内の文字コードを指定できる機能を実装
デフォルトでインラインフレーム内の簡易広告隠しをするようにした。
ヘルプページの強化
コードのクリーンアップ
(rcsbbs.cgi、rcsskin.cgi、rcsini.cgiの変更、rcsjs.cgiの追加)
既知のバグ
xrea等一部のサーバーでEncode.pmを使おうとするとエラーがでる。
重要度:中
対応策:Jcode.pmを使用するようにしてください。
修正予定:Ver-3.1.x
閲覧者の退出処理がうまくいかないことがある。
重要度:低
対応策:対応策なし。
修正予定:無し(ブラウザのバグが原因?)