***************************************
   ざ、げすとぶっくまねーじゃー gbm
 ***************************************
gbmてなにゃ

見ためはちみがさっき見てた通り。なに見てない? んじゃ わしんとことか。ランダムの御題がついてゲ ストはその御題に答えて、持ち主が返事を書くというスタイルのゲストブッ クさね。御題や返事は無しにもできるが。

で使う場合の話では、まず誰かが書き込みをすると書いた内容のメイ ルが来る。メイルをもらったらそれに返事を書けばゲストブック上の返事 になるという仕組みである。返事を書く方法にはいくつかあって

  1. 来たメイルを引用して返事を書いてやはりメイルとして返送する
  2. 実際に書き込みファイルを直接開いて返事の文章を追加する
  3. 手元で返事を書いてあとで一気に送信する(UNIX+Emacsの場合)

のどれかが使える。まあ大抵は(1)の方法が楽チンじゃな。自分のゲス トブック見なくても、速攻で返事が書けるというものじゃ。その他主な機 能を列挙してみた。

興味が出たら次を読もう。

いんすとーる
[さいしょに]

少なくとも CGI が使えるHTTPDじゃないとだめっす。ONにしてくだ さいな。デフォルトでSSI(Server Side Include)も使っているので、 SSIが使えないとちょっと面倒。「CGIよりSSIのほうが危ない」という 迷信を信じてSSIだけを禁止している脳の無いプロバイダが世の中多く て困る。おっと、話を戻そう。

もしそれらの使えるプロバイダでも、ユーザ側で明示的にSSIとCGI が使えるようにする必要があるかも。たいていapacheだとおもうが、 apache 1.3.5以降(かな?)の場合は .htaccess というファイルに

	Options ExecCGI Includes
	AddHandler server-parsed .shtml
	AddHandler cgi-script .cgi
	 

なんて書く必要があるかも。

[さて]

適当なディレクトリを掘ってそこに移動してgbmを展開する。ゲス トブックを books というディレクトリに保存するのでさらに掘る。

	  % mkdir books
	 

HTTPデーモンちゃんが書けるように chmod する。

	% chmod 1777 books
	

もしログファイルを書いて欲しかったら同じように

	% mkdir log
	% chmod 1777 log
	

して大体の準備は完了。

[自分専用に書き換え]

gbm ちうファイルの先頭に変数がわらわら書いてあるので、自分用 に書き換えておくれ。でもgbmを直接書き換えるとバージョンアップし たときにまた最初からやり直さないといけなくなるので、gbmの「ここ からENDまで」っていう範囲をこぴってgbconf.pl という新規ファイル を作ってそこにブチ込む。あ、gbconf.plの最後には必ず

	1;
	

という行を入れてな(元々入ってるけど)。すくなくとも、$owner は かきかえてちょ! これ書き換えないといつまで経っても書き込み通知メ イルが来ない。

あと messages というファイルにランダムに出て来るメッセージをいれ る。messages.sample というファイルがあるのでこいつをmessages というファイルにコピーして適当にかきかえてちょ。人と同じじゃつま んないもんね。少なくとも、HELLO, RAKU, FIELD, ANSWER タグのデー タは全部書き換えてちょ。んで、ANSWERのところを、

	ANS19990101     あけおめ
	                ことよろ
	

のように「ANS日付」というタグにしておけば、対応する日にそのタグ に書き込まれた返事を書くようになる。これもうまく利用するよろし。

ということで、

[HTML書こう]

gbmを呼び出すHTMLをかきませう。こんな感じ。gb.shtmlという 名前にしてね。

----------------------------------------------------------------------
        <html>
        <head><title>Join us!</title></head>
        
        <body>
        やー!
        <!--#exec cmd="./gbm -init"-->
        </body>
        </html>
----------------------------------------------------------------------
実験

早速ページを表示して書き込んでみやう。
どうなりましたか?

おしまい。

運用

書き込みがあると、あたかも書いてくれた人が送ったかのようなメイ ルが届くの。そのメイルに対してお返事メイルを送っても良いんじゃが、 通常は上で掘った books ディレクトリに `年月日-メイルアドレス' とい うファイルができていてるので _EOM_ 以降の行にお返事を追加してちょ。

お返事書き書き

楽にお返事を書きたい。そんなちみのために楽々お返事ツールが用意されているのでつこ てみてくれ。 腹野もなんかためになるもん書いてるみたいだから読んで見るよろし。

整理

書き込みが溜りすぎるとページが重くなって嫌われちゃう。ぜし月毎 にわけるべし。gbm-1.29から、gbmが月毎の仕分け作業をするようになっ たので

	% ./gbm -refile
      

とやると先月分の書き込みを "先月の年月/" というディレクトリに格 納してくれ、ついでにバックアップも取る。書き込みが多くてファイル サイズが気になるようなら、

	% ./gbm -refile -compress
	(./gbm -compressだけでもOK)
      

とすれば、圧縮してくれる。以上の操作で先月のディレクトリがうま く出来ているかを実際に自分のゲストブックを見て確かめて、うまくいっ たようなら

	% ./gbm -wipe
      

とすると、./books/ ディレクトリから(不要になった)先月分の書き込 みを消去してくれる。cronで ~/public_html/gb/gbm -refile を起動しう まく先月ディレクトリが出来ていることが分かったら

	% ~/public_html/gb/gbm -wipe
      

なんてするといいかも。

./gbm -refile で先月ディレクトリを作っておくと gbm が自動的にゲ ストブックページにリンクを作ってくれるのだ。なお、先月分でなくて、 特定の月のものを整理したいときは

	% ./gbm -month 199709 -refile
      

のように -month オプションで 年月 を指定するべし。さらに、長期 に渡ってgbmを使っていると、月毎にリンクを張っても一杯になってしま うので、年毎に分類してしまっても良い。そういう場合は 年/ のディレ クトリを掘ってそこに過去の月分類ディレクトリを入れてしまえば良い。 年/index.html を作ったら messages ファイルの REPLY 項目でリンクを 張ればよろし。

漢字コードについて

ファイルに保存するときはPerlやshが混乱しないようにEUCで書き、ブ ラウザに渡すときはブラウザが文字コード判定しやすいようにJISで表示 するようにしている。

「いっつにゅう」機能について

書き込みに「にゅう」が付くのは、来てくれた人が前回gbmページを開 いた時間以降に書かれたやつ。

こまった!

いろいろなトラブルの解決法である。

[SSIが使えないじょ!]

BIGLOBEとかはそうらしい。しゃーないので、gbmを呼び出すのを全部 CGIにする。まず gbm.cgi っていうシェルスクリプトを以下のようにす る。

----------------------------------------------------------------------
        #!/bin/sh
        echo Content-type: text/html
        echo ''
        echo "<html><head><title>Guest Book</title></head><body>"
        ./gbm -init
        echo "</body></html>"
----------------------------------------------------------------------

背景を変えたかったら↑の <body> のところを適当に変える べし。で、gbm自身の名前がある $html という変数があるのでこれを変 更する。具体的には、gbconf.pl に $html = "gbm.cgi"; という一行を 加える。

[ファイル名に@記号が使えない!]

どうもangelとかはそうらしい。gbmのブックファイル生成は出来る ものの、ftpでファイル転送しようと思うと@マークを弾かれてしまうら しい。そういうときは、gbconf.pl に次の行を足してみる。

$atmarkalt = ":";
すると書き込みファイル作成時に@マークを使わないようになる。

[とにかく動かん!]

ぢゃあチェックリスト。

  • gbmとcgi2args.plの先頭の /usr/local/bin/perl はあっとる?
    which perl などとして正しいパスに変えちくり。
  • nkfはある?
    which nkf などとして正しい nkf のパス名を入れちくり。
    もしくは gbconf.pl に
    	      $tojis="/opt/bin/nkf";
    	      $toeuc="/opt/bin/nkf -e";
    	      
    のように書くべし。また、rndmsg.pl にも nkf のPATH記述があ るのでそこを
    	      $nkf = "/opt/bin/nkf";
    	      
    と変更すべし。
    別にnkfでなくても漢字コード自動変換が出来るツールなら何でもえ え。
[通知メイルがこないじょ!]

変数 $sendmail に sendmail コマンドの位置をちゃんと指定しても 「書き込みがあったよ」通知メイルが送られない場合があるらしい。そ んなときは

  1. 変数 $viasmtp にメイルサーバのホスト名を入れてみる
  2. それでもだめなら変数 $telnetsmtp を1にしてみる
  3. それでもだめなら作者に泣きつく
  4. それでもだめならプロバイダを変える
  5. それができなきゃ変数 $doreport を0にしてあきらめる
なり。

すすんだ使い方

yuuji@gentei.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]