========================================== C h i l d T r e e v8.94R5 (ツリー式BBS) RSS/SPAM 対応版 (MARiN edition) ========================================== このソフトは、りゅういち氏作の「Child Tree v8.94」を元に私MARiNが機能追加と 幾つか修正を加えたバージョンです。 りゅういち氏オリジナル版については、同梱の"Readme.txt"を参照してください。 設置方法等もオリジナル版と同じなので、同梱の"cbbs.htm"等を参照してください。 また再配布条件もオリジナル版に準じます。 *オリジナル版からの移行用にログファイル変換CGI"logconv.cgi"を用意してみました。 ※携帯オプション「Child K-tai」を適用したい方は、同梱の"携帯オプション.txt"  を参照してください。 このソフトについての追加情報については以下に説明します。 #設定ファイルのパラメータにも変更があるので、良く確かめてください。 ---------------------------------------------------------------------------- ■オリジナル版からの変更内容 ・文字コードをEUCに変更(*1) ・RSSフィード機能の追加 ・記事の投稿日時やurl表記行からタグを削除 ・タイトル入力を必須にできるようにした ・コメント投稿時に親記事の有無をチェック ・コメント中に含められるリンク数を制限する機能を追加 ・リンクのみの記事を制限する機能を追加 ・日本語以外の記事を制限する機能を追加(簡易) ・投稿は必ずプレビュー画面を通す仕組みを追加 ・メール送信の仕方を変更(*2) *1 ファイルの編集時には、文字コードをEUC-JPで扱うよう注意してください。 CBBSオリジナル版から移行の方は、お手数ですがログファイの文字コードを EUC-JPへ変換してください。 ** 関連ログファイルのコード変換用CGIを用意したので、これを利用するのが 簡単です。 ===> "logconv.cgi" 使い方や注意点等簡単な説明がコメントで書いてあります。 このツールを利用しない場合の例) いったんログファイルを秀丸で読込み「名前を付けて保存」で文字コードを EUC-JP指定して保存し直す。 *2 オリジナル版v8.94でのメール送信機能に関連する脆弱性への対処をより確実に するため、sendmailの"-t"オプションを必ず付加し、宛先が複数の場合は各宛先 毎に個別送信するような処理に変更。 またメールアドレスの入力には特別な制限が無いため、例えば管理者のアドレス を入力されてしまったた場合意味が無くなる等、あまり実用的では無いと思われる 「自分の投稿も通知?」のオプションは無効化しました。 このオプションのせいで同じメールが重複して届く場合があるという現象もあった のですが、それも直ったかと思います。 ■SPAM対策機能について  SPAM対策を目的として、幾つか機能を追加しました。  ・タイトル未記入への制限  ・記事中のリンク数制限  ・リンクのみ記事への制限  ・日本語以外の記事への制限  ・投稿は必ずプレビュー画面を通す仕組み   (ファイルアップ時と記事編集時は除く)  上4つについては、後述の設定追加パラメータについてを参照してください。  最後の機能について若干説明しておきます。  (仕組みに興味が無い方は下の*部分だけ読んでください ^^;)  この機能は、スクリプト等を利用して自動的に大量のSPAM投稿を実行する、いわゆる  SPAMボットに対処する目的で組み込みました。  大抵のSPAMボットは、入力フォーム画面を介さずに直接投稿データを送信する手法を  取るようです。  なので、入力フォームから手動で投稿されたデータのみ受け付けるような仕組みを  取り入れました。  入力フォーム画面にある送信ボタンは外し、必ずいったんプレビュー画面を介して  投稿してもらうという方法です。  これだけでもそれなりに自動投稿に対しての制限は掛けられると思いますが、さらに  確実性を増すために、入力データを元にその都度生成されるキーコードをプレビュー  画面に埋め込んで、それを投稿時にセットで送信します。  記事登録処理では、このキーコードの入力データに対する妥当性をチェックします。  (携帯オプションからの投稿に対してはキーコードの生成/チェックは行われません)  *この機能が有効な環境では、記事入力フォームの上部(注意書き部分との間)に   「(プレビュー画面チェック機能中)」と表示されます。  *この機能では、Perl5の標準ライブラリである「Digest::SHA1」か「Digest::MD5」   または「MD5に対応したcrypt関数」を利用します。   (CGIの方でSHA1→MD5→cryptの順に利用できるものから自動選択します)   古いPerl環境でなければこの3つの内どれかは利用できると思いますが、もし   利用できない場合は、入力データに対するキーコード生成ができません。   ただその場合もデータの妥当性チェックが省略されるだけで、登録処理自体は   正常に行われます。  ※もしこの機能のせいで記事の投稿が上手く行かない状況が頻発するようであれば   この機能を無効化することもできるので、状況によって対応してください。   無効化は設定ファイルで"$NoMatch"の値を1にします。 ■【追加で必要となるファイル】"salt.dat"  上記SPAM対策で追加した機能用に構成ファイルが1個追加になります。  "salt.dat"というファイルを、"cbbs.cgi"と同じディレクトリへアップロードして  置きます。  このファイルの中身は、事前に自分の好きな文字列に変更しておいてください。  (英数字のみでも日本語混じりでも構いません。文字数制限も特にありません)  またcrypt関数が使用される場合のため、2行目にsalt文字列を書いておきます。  (salt文字列が何なのかはWeb等でcrypt関数について調べてみてください)  これが書かれていなくともデフォルトの文字列が使用されますが、自分で指定して  おいた方が安心です。  自分の環境で標準ライブラリを利用できることが分かっている場合は、1行目のみ  の内容でも構いません。  パーミッションは[600]に設定しておきます。 ■[記事投稿に関する設定]の追加パラメータ  SPAM対策機能に関する以下の項目を追加しました。 $not_F = 1; # タイトル無しを許可する?(1=YES 0=NO) $Link_max = -1; # リンク使用制限数(-1=無制限) $Link_only = 0; # リンクのみの記事を許可する?(1=YES 0=NO) $Only_JP = 0; # 日本語以外の記事を制限する?(1=YES 0=NO) # (日本語以外=ひらがな、カタカナを含まない) $NoMatch = 0; # プレビュー画面からの投稿かチェックする機能を無効化する?(1=YES 0=NO) ・記事投稿時にタイトル必須としたい時は$not_Fを0にしてください。 ・コメント中に含められるリンク数を制限したい時は$Link_maxに0以上の値を指定  してください。このリンク数までは許可します。  つまりリンクを許可したくない場合は0を指定します。 ・リンクのみの記事を防ぎたい時は$Link_onlyを0にしてください。 (*v8.94R3までの「1にしてください」は誤記です) ・日本語以外の記事を防ぎたい時は$Only_JPを1にしてください。  ただし日本語以外かどうかの判定は、記事中にひらがなカタカナを含むかどうか  だけで行っているため、あまり正確ではありません。  (実用上はこんなもんで十分かと) ・プレビュー画面からの投稿チェック機能を無効化したい時は$NoMatchを1にしてください。 ■RSS配信機能について  一般的にはニュース配信サイトやいわゆるBlogサイトで利用されているRSSフィード  機能を実装してみました。(RSS2.0準拠)  BBSに投稿があると、RSS配信ファイルが更新されます。  つまりRSSリーダー等でBBSの更新状況を随時チェックできるようになります。 *RSSファイルの文字エンコーディングは「UTF-8」か「EUC-JP」のどちらかを選べます。  (後述の設定についてを参照)  ただし「UTF-8」の場合は、コード変換のためPerl5の標準ライブラリであるEncode.pm  モジュールが必要です。 ■RSS配信機能関連の設定  この機能を利用する場合、オリジナル版の設定ファイルに追加した、以下の項目を  設定してください。 -----(設定ファイル(set.cgi)の最下段付近)----- #--- [RSSフィード用設定] ---# $rss_F = 1; # RSSフィード機能を使う? (0=NO 1=YES) $rss_utf8 = 1; # RSSファイルのエンコード (0=EUC-JP 1=UTF-8) $rss_limit = 80; # RSS description 制限文字数(バイト) $rss_items = 10; # 出力件数上限 $rss_path = "./cbbsrss.xml"; # RSSファイルを置くサーバ上でのファイルパス $rss_url = "./cbbsrss.xml"; # RSSファイル参照用URL $rss_desc = "Child Tree BBS 更新情報"; # RSS 概要(タイトル) #--------------------------- # RSSフィードリンク表示 # アイコン表示の場合(同梱の画像使用例) $rss_icon = 'RSS 2.0'; #$rss_icon = "(RSS 2.0)"; # テキスト表示の場合 ------------------------------------------------ ・$rss_Fを1にすればRSSフィード機能が利用できます。 ・$rss_utf8を1にすると、RSSファイルをUTF-8でエンコードして出力します。  EUC-JPで出力したい場合は、この値を0に設定してください。  (通常はUTF-8をお勧めします)  ただしEncode.pmモジュールの使用できない環境では、この値に関係なく自動的に  EUC-JPで出力されます。 ・$rss_limitは、RSSフィードの概要としてコメントの内容を何文字まで使用するか  を設定します。(漢字かな文字だと1文字=2バイト相当)  ただし最大でも500バイト未満にしておいてください。 ・$rss_pathは、実際にRSSファイルを出力するサーバ上のファイルパス(相対も可)で  CGIからのファイル出力先として許されている場所を設定する必要があります。  また合わせて下の$rss_urlでWebから参照することができる必要もあります。 ・$rss_urlは、Webから参照する時のRSSファイルへのリンクURLです。 ・$rss_iconは、($rss_Fを1にした時)掲示板のヘッダに表示される、RSSフィード  へのリンク表示部分です。  実際には $rss_icon  のように使用されます。 *標準添付のRSS用アイコンは「RSSアイコン標準化プロジェクト feedicons.com」配布  の物を使わせてもらっています。 ■サポート情報  このソフトは改造版であり、オリジナル版のりゅういち氏のサイトでは一切サポート されませんのでご注意ください。  この改造版に対する質問や意見等は、迷惑になるのでオリジナル版の作者である りゅういち氏へは絶対に送らないよう、くれぐれもお願いします。  なお、サーバごとに異なる設置方法や問題等について、要はcbbs.htmに記載されて いるような内容以上の事には対応しきれない事を、あらかじめご了承ください。 作 者:MARiN Home Page URL:http://ma2ten.catsyawn.net E-Mail:ma2ten@104.net ■変更履歴 2007/12/30 ---・プレビュー画面からの投稿チェック機能を無効化できるオプションを (8.94R5) 設定ファイルに追加した。 ・メールアドレスリンクにスパム対策文字列が付加されていない部分が あったので追加。 ・長い記事タイトルの省略時に、最後の文字が化けないように修正。 ・タイトルの省略記号を".."から"..."に変更。 ・HTMLタグ属性値の省略されていたクォーテーションを追加。 ・オリジナル版からの移行用CGI追加。 2007/12/03 ---・検索関連の一部機能が使えなくなっていたのを修正 (8.94R4a) (srch.cgiの修正) 2007/08/23 ---・RSSファイルのエンコードにEUC-JPを使えるようにした (8.94R4) ・SPAM対策でフォームからの入力か確認する機能をプレビュー画面 からの投稿か確認する機能に変更 ・SPAM対策機能の暗号化処理に利用できるライブラリの種類を追加 (Digest::SHA1/Digest::MD5/crypt(MD5)から自動選択) ・メール送信の仕方を少し変更 ・記事中のリンクURL抽出パターンを調整 (Encode.pmやDigestライブラリが無くても一応動作するようにした) 2007/05/20 ---・RSSフィードの出力処理を調整 (8.94R3) ・日本語以外の記事を制限する旨の注意書きが表示されなかったのを 修正 2007/03/14 ---・記事編集後に投稿がエラーになってしまうのを修正 (8.94R2) ・添付set.cgiのRSS用アイコン画像のファイル名拡張子がgifになって いたのでpngに修正 2007/03/09 ---・オリジナル版v8.94での更新点を反映(メール機能の脆弱性への対応) (8.94R1) ・HELPページにソースの一部が表示されてしまっていたので修正 2007/02/28 ---・投稿がフォームからか確認する機能をより確実な手法に変更。 (8.93R10) 2007/02/13 ---・srch.cgiに自分用に追加した余計な部分が残っていたので削除 (8.93R9) ・一応携帯オプションにも対応するよう手を加えて見た ・RSS用アイコン画像を「feedicons.com」の物に差し替え 2006/09/23 ---・リンクのみの記事を制限する機能を追加 ・日本語以外の記事を制限する機能を追加(暫定) ・投稿フォーム以外からの投稿を防ぐ機能を追加(暫定) ・親記事の無いコメントの投稿が可能だったので修正 ・RSSフィード中の改行コードの扱いを少し調整 2006/02/01 ---・図表モードで投稿した時にRSSフィードにpreタグが混じってしまう ので削除するよう変更。 ・RSSフィードの順番がツリー単位でソートされてしまっていたので、 記事単位でソートするように修正。 2006/01/21 ---・RSSフィードのリンク先が記事を指さなくなっていたので修正。 ・投稿時タイトル必須に設定できるよう変更。 ・コメント中に含められるリンク数に制限を加えられるよう変更。 2006/01/19 ---・コメント中に&が含まれていると、そこで内容が切れてしまって いたので修正。 ・URLの自動リンク時にAタグ中のURLがクォーテーションで括られて いなかったので修正。 2006/01/13 ---・RSS機能をオフにすると投稿時等エラーになったので修正。 2006/01/12 ---・srch.cgiの方でjcode使用部分があってエラーになったので修正。 ・RSSアイコンファイルの初期置き場所をiconからfileに変更。 2006/01/11 ---・メール通知時に内容が化けてしまったのを修正した。 (文字コードをEUCのまま送ってしまっていた) ・jcode.plをコメントアウト(前から使ってなかった) 2005/12/15 --- 初版公開