ホームへ

igowf_v2
碁盤掲示板の紹介と設置方法

棋譜を並べながら、質問・解説・検討を交わせる囲碁用の掲示板です。記事と碁盤を結び付け、文章だけでは伝えにくい局面や変化を共有できます。

igowf_v2は、KENT-WEBの「Web Forum 8.01」を基に囲碁用の機能を加えた改変版です。掲示板と碁盤の融合に関わったJuno氏・Qitailang氏に続いて、Ebaが生成AIを利用して改造しました。

1.機能的特徴

2.ダウンロードと収録ファイル

igowf_v2.zip をダウンロード

利用前にKENT-WEBの利用規定と同梱の権利表示をご確認ください。このプログラムは改変版であり、碁盤のMITライセンスが掲示板全体に適用されるものではありません。

本体フォルダ内のファイル一覧

以下は igowf_v2/ からの相対パスです。ファイル名と役割を、添付の配布用ZIPに合わせて列挙しています。

ファイル名説明
index.html入口ページ。パソコンでは左に碁盤、右に掲示板を表示し、狭い画面では切り替えます。
licenses.html掲示板全体の権利表示とソースの案内。
init.cgi掲示板名、管理パスワード、投稿制限、各種パスなどの設定ファイル。
admin.cgi管理パスワードで利用する管理画面。記事を管理・削除します。
captcha.cgi投稿キーの認証用画像を生成します。
post.cgi新規投稿・返信・記事の修正と削除、画像添付、棋譜保存を処理します。
wforum.cgi記事一覧・個別記事・検索・過去ログ・碁盤表示・SGF取得を処理する掲示板本体。
counter.cgiアクセスカウンターを画像として表示します。再表示も加算します。
check.cgi設置環境・設定・ファイルの状態を確認します。確認後は公開場所から削除します。
19.sgf新規表示用の19路の初期棋譜。投稿データではありません。
cmn/style.css掲示板のレイアウト・色・文字・フォームなどの共通スタイル。
cmn/igo-form.js投稿フォームへ碁盤や棋譜欄のSGFを取り込むための連携処理。
cmn/new.png新着記事用アイコン。
cmn/home.pngホーム用アイコン。
cmn/search.png検索用アイコン。
data/log.cgi現在の記事と記事番号を保存するログ。
data/access-counter.datアクセスカウンターの数値。配布時は0。
data/pastno.dat過去ログのファイル番号を管理します。
data/ses.cgi入室パスワード制限用のセッション記録。
data/.htaccess外部からの直接アクセスを制限するApache用設定。
data/index.htmlディレクトリの内容一覧が表示されるのを防ぐ空の入口ファイル。
data/past/0001.cgi過去ログの初期ファイル。配布時は空です。
data/past/index.htmlディレクトリの内容一覧が表示されるのを防ぐ空の入口ファイル。
go/style.css碁盤編集画面のスタイル。
go/app.js碁盤の表示、操作、編集、変化管理、自動再生、一時保存などの中心処理。
go/engine.js局面の管理、着手、石の取り上げ、自殺手・単純コウなどの検査。
go/export.js本譜の抽出、画像保存、GIFアニメーション生成などの出力処理。
go/forum-bridge.js碁盤と掲示板の投稿フォームを結ぶ連携処理。
go/import.jsSGF・NGF・UGF・UGI・GIB・MGTなどの棋譜読込み。
go/sgf.jsSGFの解析と書き出しに使う基本処理。
go/score.js地・石・コミなどに基づく勝敗計算。
go/index.html掲示板から独立して使う碁盤編集画面。
go/LICENSE.txt碁盤実装のMITライセンス。
go/README.html碁盤の使い方・対応形式・制限の説明。
go/SOURCE.txtソースコードと実装に関する説明。
go/licenses.html碁盤関連の著作権・ライセンス説明。
go/licenses/Sabaki-MIT.txtSabakiに関するMITライセンス表記。
go/sample.sgf碁盤の動作確認用の棋譜。
go/tests/core.test.cjs碁盤・SGFなどの基本処理の確認用テスト。
go/tests/import.test.cjs棋譜読込みの確認用テスト。
go/tests/score.test.cjs勝敗計算の確認用テスト。
go/最初にお読みください.txt碁盤の説明ページへの案内。
img/goban.gif碁盤関連の表示用画像。
img/title.gifタイトル関連の表示用画像。
lib/index.htmlディレクトリの内容一覧が表示されるのを防ぐ空の入口ファイル。
lib/jacode.pl文字コード変換用ライブラリ。
lib/pngren.plライブラリ版の画像認証で使うPNG処理。
lib/thumb.plサムネイル作成の補助処理。
lib/igo-runtime.pl実行時のエラー表示・投稿キー設定・投稿容量表示を補助します。
lib/igo-ui-config.pl投稿キーを使用するかどうかの補助設定。
lib/igo.pl棋譜の正規化・保存・読出し、画像添付、碁盤連携などの囲碁拡張処理。
lib/.htaccess外部からの直接アクセスを制限するApache用設定。
lib/CGI/Minimal.pmフォームとアップロードデータを受け取るCGIライブラリ。
lib/CGI/Minimal.podCGI::Minimalの説明文書。
lib/CGI/Minimal/Misc.pmCGI::Minimalの補助処理。
lib/CGI/Minimal/Multipart.pmmultipart形式のフォーム・添付データ処理。
lib/Crypt/RC4.pm画像認証などで使う暗号処理ライブラリ。
lib/GD/SecurityImage.pmモジュール版の認証画像生成ライブラリ。
lib/GD/SecurityImage/GD.pmGDを利用する画像生成処理。
lib/GD/SecurityImage/Magick.pmImage::Magickを利用する画像生成処理。
lib/GD/SecurityImage/Styles.pm認証画像の描画スタイル。
lib/bin/bq.png画像認証用の文字画像データ。
lib/bin/br2.png画像認証用の文字画像データ。
lib/bin/br3.png画像認証用の文字画像データ。
lib/bin/casual.png画像認証用の文字画像データ。
lib/bin/cut.png画像認証用の文字画像データ。
lib/bin/japan.png画像認証用の文字画像データ。
lib/bin/jump.png画像認証用の文字画像データ。
lib/bin/kt012.png画像認証用の文字画像データ。
lib/bin/lynz.png画像認証用の文字画像データ。
lib/bin/small.png画像認証用の文字画像データ。
lib/bin/stamp.png画像認証用の文字画像データ。
lib/bin/tempest.ttf画像認証用のフォントデータ。
lib/captcha.plライブラリ版の画像認証処理。
lib/captsec.plモジュール版の画像認証処理。
licenses/COMPONENTS.txt同梱部品と適用ライセンスの一覧。
licenses/Sabaki-MIT.txtSabakiに関するライセンス表記。
sgf/index.htmlディレクトリの内容一覧が表示されるのを防ぐ空の入口ファイル。
tmpl/.htaccess外部からの直接アクセスを制限するApache用設定。
tmpl/bbs.htmlツリー形式の記事一覧のテンプレート。
tmpl/board.html掲示板内の碁盤編集画面のテンプレート。
tmpl/dele.html記事の修正・削除へ進む認証画面のテンプレート。
tmpl/edit.html記事修正フォームのテンプレート。
tmpl/enter.html入室パスワード入力画面のテンプレート。
tmpl/error.htmlエラー表示のテンプレート。
tmpl/find.html記事検索画面のテンプレート。
tmpl/list.html記事一覧・スレッド表示のテンプレート。
tmpl/mesg.html処理結果メッセージのテンプレート。
tmpl/newpost.html新規投稿フォームのテンプレート。
tmpl/note.html留意事項のテンプレート。
tmpl/past.html過去ログ画面のテンプレート。
tmpl/read.html個別記事と返信フォームのテンプレート。
upl/index.htmlディレクトリの内容一覧が表示されるのを防ぐ空の入口ファイル。

3.ディレクトリ構成とパーミッション

次は public_html の下へ設置する例です。各項目の角括弧は [一般的な共有権限方式 | CGIを所有者権限で実行する方式(suEXEC等)] の設定例です。「/」は選択肢を表します。サーバー会社の指定を優先してください。

public_html/サーバー指定

権限設定の要点

設置の手順

  1. ZIPを展開し、次章の説明に従って init.cgi を編集します。
  2. 実行CGI6個の先頭行 #!/usr/bin/perl を、サーバー指定のPerlパスに合わせます。init.cgiの設定とは別の作業です。
  3. 本体の igowf_v2 フォルダを階層ごと転送します。テキストはUTF-8を維持し、CGIはLF改行で保存します。PNG・GIF・TTFはバイナリ転送します。
  4. 上記を参考にパーミッションを設定し、設置先/igowf_v2/check.cgi を開いて確認します。
  5. 設置先/igowf_v2/index.html を開き、新規投稿・返信・画像添付・棋譜・修正・削除を確認します。管理画面は admin.cgi です。
  6. 確認を終えたら、check.cgi を公開場所から削除します。

新規設置用の空ログを含みます。運用中の掲示板へ一式を上書きしないでください。更新前にはinit.cgi、data、upl、sgfと、独自に変更したテンプレート・CSSをバックアップしてください。

4.init.cgiの変更箇所

UTF-8対応のテキストエディターで開き、該当する設定値だけを変更します。$cf{…}、引用符、行末のセミコロンを消さないでください。後半の関数や著作権表示は通常変更しません。

まず変更する項目

# 管理パスワード:12文字以上の自分専用の値へ変更
$cf{password} = 'YourOwnPassword123';

# 掲示板名
$cf{bbs_title} = '碁盤掲示板 igowf_v2';

# 「ホーム」の戻り先(例:サイトのトップ)
$cf{homepage} = 'https://www.h-eba.jp/Lizzie/';

上のパスワードは説明用です。そのまま使わず、独自の値に置き換えてください。未設定または12文字未満では Set an administrator password in init.cgi before installation. と表示されます。

homepage の初期値は ./index.html なので、そのままでは「ホーム」からもigowf_v2の入口へ戻ります。サイト全体のホームへ戻したい場合は、そのURLを指定してください。

投稿容量:画像1枚と送信全体を区別する

# 画像・棋譜・本文・フォーム情報を含む、1回の投稿全体の上限
$cf{maxdata} = 1048576;  # 1MB

# 例:投稿全体を2MBまでにする場合
# $cf{maxdata} = 2097152;

画像は最大3枚で、1枚307,200バイトまでです。3枚が上限いっぱいの場合は921,600バイトとなり、初期値1,048,576バイトとの差126,976バイトを棋譜・本文・フォーム情報で共有します。

添付版の実装上の注意:init.cgi に $cf{max_image_bytes} = 307200; がありますが、実際の画像検査は lib/igo.pl 内の my $image_limit = 300 * 1024; を使っています。max_image_bytesだけを変えても1枚の上限は変わりません。また、投稿SGF単体にも1MiBの検査があり、maxdataを増やしてもこの上限は別に残ります。碁盤単体の読込み上限2MBとも区別してください。

画像認証(投稿キー)

この配布版は $cf{use_captcha} = 1;、lib/igo-ui-config.pl の post_key => 1 となっており、ライブラリ版の画像認証を使用します。無効にする場合はinit.cgiのuse_captchaを0にします。補助設定のpost_keyが無効だと、use_captchaを1にしても実行時に無効化されます。

use_captchaを2にする場合は、必要な画像処理モジュールを利用できる環境か確認してください。通常は同梱のライブラリ版を使えます。

基本設定・任意設定一覧

「初期値」は今回の配布用ZIPの値です。

設定名初期値変更の目安内容
$cf{password}''必須管理パスワード。半角英数字で12文字以上の固有の値を設定します。空欄・12文字未満では起動しません。
$cf{bbs_title}'碁盤掲示板 igowf_v2'推奨掲示板の名称。入口ページのブラウザータイトルを変える場合はindex.htmlのtitleも変更します。
$cf{homepage}"./index.html"推奨メニュー「ホーム」の戻り先。./index.htmlはこの掲示板の入口です。サイトのトップへ戻す場合はそのURLへ変更します。
$cf{maxdata}1048576用途に応じて1回の送信全体の上限(バイト)。画像3枚・SGF・本文・フォーム情報をすべて含みます。フォームと留意事項の容量表示も連動します。
$cf{image_upl}1任意1で画像添付を許可、0で許可しません。
$cf{max_img_w}320任意添付画像の最大表示幅(px)。ファイル容量の上限ではありません。
$cf{max_img_h}240任意添付画像の最大表示高さ(px)。縦横比を保って縮小表示します。
$cf{thumbnail}0任意1でサムネイル生成を使用。Image::Magickが必要です。
$cf{maxlog}300任意現行ログに保持する最大記事数。過去ログ設定と合わせて調整します。
$cf{p_tree}10任意一覧1ページ当たりのツリー数。
$cf{new_pgbtn}10任意新着表示の1ページ当たりの記事数。
$cf{new_time}48任意NEWマークを表示する時間数。
$cf{sub_length}36任意記事タイトルの最大文字数。
$cf{nam_length}15任意投稿者名の最大文字数。
$cf{top_sort}1任意1で返信の付いたツリーを先頭へ移動します。
$cf{bot_res}1任意1で返信を下から順に付けます。
$cf{autolink}1任意1で本文のURLを自動リンクにします。
$cf{enter_pwd}''任意空欄なら入室制限なし。設定すると入室パスワードが必要です。
$cf{sestime}60任意入室後に利用できる時間(分)。
$cf{regCtl}1任意0:投稿間隔の制限なし、1:同一IPからの連続投稿を制限、2:すべての投稿間隔を制限。
$cf{wait}60任意regCtlが1または2のときの最低投稿間隔(秒)。
$cf{deny_host}''任意拒否するホスト名。複数は半角空白で区切ります。
$cf{deny_addr}''任意拒否するIPアドレス。複数は半角空白で区切ります。
$cf{gethostbyaddr}0任意1でホスト名の逆引きを行います。
$cf{no_wd}''任意禁止語をコンマで区切って設定。
$cf{jp_wd}0任意1で日本語を含まない投稿を拒否。
$cf{urlnum}2任意本文に含められるURL数の上限。
$cf{pastkey}1任意1で過去ログ保存を使用。0では古い記事を過去ログへ保存しません。
$cf{max_line}650任意過去ログ1ファイルの最大行数。
$cf{use_captcha}1任意0:画像認証なし、1:同梱ライブラリ版、2:モジュール版。補助設定post_keyも確認してください。
$cf{captcha_key}'captwforum'変更推奨画像認証の暗号化キー。配布時の共通値から独自の文字列へ変更します。
$cf{cap_time}30任意投稿キーの有効時間(分)。
$cf{cap_len}6任意認証文字数。ライブラリ版4~8、モジュール版6~8。
$cf{si_png}"br3.png"任意ライブラリ版の文字画像。lib/bin内のファイル名を指定。
$cf{font_ttl}"tempest.ttf"任意モジュール版のフォント。lib/bin内のファイル名を指定。
$cf{mailing}0任意0:通知しない、1:投稿を管理者にメール通知。sendmailが必要。
$cf{mailto}'xxx@xxx.xx'通知時通知先メールアドレス。
$cf{sendmail}'/usr/lib/sendmail'通知時サーバー指定のsendmail実行パス。
$cf{sendm_f}0通知時サーバーが-fオプションを必要とする場合は1。
$cf{cookie_id}"web_forum"複数設置時投稿フォーム用Cookie名。別掲示板との混同を避ける場合は変更。
$cf{cookie_id3}"wf_passwd"複数設置時入室制限用Cookie名。複数設置時は固有名にします。
$cf{conv_code}0通常そのままフォーム入力の文字コード自動判別。UTF-8運用では初期値の0を基本にします。
$cf{treehead}"▼"任意ツリーの先頭記号。

ファイル・ディレクトリのパス

本体フォルダ名だけを変更し、内部の配置を保つ場合、次の相対パスは通常そのまま使用できます。URLパスはブラウザーからの場所、サーバーパスはCGIがファイルを読む場所です。

設定名初期値
$cf{bbs_cgi}'./wforum.cgi'
$cf{admin_cgi}'./admin.cgi'
$cf{post_cgi}'./post.cgi'
$cf{logfile}'./data/log.cgi'
$cf{sesfile}'./data/ses.cgi'
$cf{cmnurl}'./cmn'
$cf{upldir}'./upl'
$cf{uplurl}'./upl'
$cf{tmpldir}"./tmpl"
$cf{nofile}'./data/pastno.dat'
$cf{pastdir}'./data/past'
$cf{captcha_cgi}'./captcha.cgi'
$cf{captcha_pl}'./lib/captcha.pl'
$cf{captsec_pl}'./lib/captsec.pl'
$cf{pngren_pl}'./lib/pngren.pl'
$cf{bin_dir}'./lib/bin'
$cf{sgfdir}'./sgf'
$cf{player_url}'./go'

player_url は旧来の設定名として残っていますが、現在の碁盤は go/ にあります。碁盤テンプレート tmpl/board.html などには ./go/ が直接指定されているため、この値だけでgoフォルダを移動できるわけではありません。初めて設置するときは内部の名前と階層を変更しない方法をおすすめします。

設置時につまずいた場合