KP-Leghornの説明書らしきもの

 この文章は 2006/03/02 ぐらいに書きました。
 この文章を書いている時の KP-Leghorn のバージョンは V2.00 です。

目次


KP-Leghornって何?

 KP-Leghorn(けーぴー・れぐほーん、旧名KP-BBS)とは、私こと猫下鶏太郎恒幸が趣味で作った、Perlによる掲示板スクリプトです。

 KP-Leghorn の名は卵用鶏の一種から取りました(レグホン種)。


KP-Leghornの特徴

“特長”ではないのがミソです。


設置環境条件

 KP-Leghorn は一応 Perl5 で書いているつもりです。特にモジュールも使用していませんし、Perl5が稼働する環境ならどこでも動くと思われます。
# 引っかかる可能性があるとすれば flock関数。まあ eval関数で囲ってありますが。

jcode.pl と Jcode.pm に関して

 KP-Leghorn は RSS出力の際に歌代和正さんの jcode.pl を使用していましたが、コードを改良した(正確に言うとまともじゃないコードを多少まともにした)結果、いらなくなってしまいました。

 そのため、Version2.00 は jcode.pl を同梱していません。


作者の動作確認環境

 一応下記の条件で確認しています。

ブラウザ

PC系

携帯系(一応)

 一番真面目に確認をとっているのは Firefox系です。

サーバ

 TurboLinux と書いてましたが VineLinux でした。素でボケてました。
# そういえば Windows系サーバでチェックしてないな……。


設置方法

 最低限の手順としては以下の通りです。

設定ファイル _config.cgi の設定を修正

 先に動作テストだけを済ませたい場合は特に修正しなくてもたいていは動きます。ただサーバによっては基本ディレクトリの修正が必要です(参照:設置方法(基本ディレクトリを分ける場合))。

 本稼働する場合は最低でも以下は修正しましょう。

 特に管理モード用パスワードは必ず修正して下さい

kpleg.cgi、admin.cgi、rss.cgiの先頭行を修正

 この3つのファイルは実行ファイルで、ブラウザで直接開くCGIスクリプトです。この3つのファイルの先頭行には Perl のアドレスを記述してあります。このアドレスはサーバによって異なるため、適時修正して下さい。

例)kpleg.cgiの先頭

#!/usr/local/bin/perl ←ここを変える

#-------------------------------------------------
# KP-Leghorn
# 2006 'KP' T.K.Nekoshita
# mail: basily@mx1.freemail.ne.jp
# url:  http://homepage2.nifty.com/cockatrice/
#-------------------------------------------------

ファイルのアップロードとパーミッションの設定

 基本的にはそのままFTPソフトでアップロードすればOKです。ただしサーバによっては基本ディレクトリを分けなければなりません(参照:設置方法(基本ディレクトリを分ける場合))。

以下は標準的なファイル構成です。

標準的なファイル構成の例

  +-- kpleg [755] /
        |           kpleg.cgi   [755]  掲示板スクリプト本体
        |           admin.cgi   [755]  管理モード用スクリプト
        |           rss.cgi     [755]  RSS出力用スクリプト
        |           kpleg.css   [644]  スタイルシート
        |           _config.cgi [644]  設定ファイル
        +-- lib [755] /  ライブラリ用ディレクトリ
             |          au_xhtml.pl   [644]
             |          ban.pl        [644]
             |          html401.pl    [644]
             |          htmlbase.pl   [644]
             |          ihtml.pl      [644]
             |          kplegbs.pl    [644]
             |          kpcgilib.pl   [644]
             |          misc.pl       [644]
             |          mobile.pl     [644]
             |          other_mb.pl   [644]
             |          other_pc.pl   [644]
             |          oldlog.pl     [644]
             |          oldlog_mb.pl  [644]
             |          oldlog_pc.pl  [644]
             |          pc.pl         [644]
             |          rss.pl        [644]
             |          voda_xhtml.pl [644]
             |          write.pl      [644]
             |          xhtml.pl      [644]
        +-- data [777] /  データ用ディレクトリ
             |          lock          [777]  ロック用ファイル
             |          log.cgi       [777]  ログファイル
             |          logcnt.cgi    [777]  ログ管理ファイル
             |          ban_text.cgi  [777]  NGワードデータ
             |          ban_addr.cgi  [777]  拒否アドレス
             |          ban_agent.cgi [777]  拒否ブラウザ
             |          updinfo.cgi   [777]  更新情報データ

 [???]内の数字は標準的なパーミッション設定です。サーバによって適切な設定が微妙に異なりますので、サーバの設定を確かめて下さい。

※複数掲示板モードを使用する場合はdataディレクトリ以下の構成がかなり変わります。

ブラウザから kpleg.cgi にアクセスしてみる

 ここまで設定すれば動くはずです。ブラウザで kpleg.cgi のアドレス(http://(中略)/kpleg/kpleg.cgi 等)を開いてみましょう。うまく KP-Leghorn が表示されましたか? もし表示されたならテスト書き込みをしてみて下さい。
 うまくいかなかった場合はもう一度最初からきちんと見直してみる事をお奨めします。たいていはわかると物凄く馬鹿馬鹿しいような単純な事が理由です。
# 経験的なものです。(^^;)

設置方法(基本ディレクトリを分ける場合)

 サーバの設定によっては、CGIファイルとスタイルシートファイル等のファイルを別のディレクトリに入れないといけない事があります。この場合、ディレクトリを分けた上で _config.cgi の $BASEDIR_DOC(ドキュメントディレクトリ)と $BASEDIR_DAT(書込ファイルディレクトリ)を適切に設定しなければなりません。
# $BASEDIR_CGI(実行ファイルディレクトリ)は便宜上用意してありますが、これの変更が必要なサーバってあるんでしょうか?

 以下に@niftyにおける設置例を示します。

 仮に http://hpcgi2.nifty.com/cockatrice/kpleg/ に設置するとします。  @niftyでは CGI実行可能ディレクトリに HTMLファイルやスタイルシートファイルを置いてもブラウザで閲覧できません。なので、閲覧可能なディレクトリにスタイルシートファイルを置きます(アドレスは http://homepage2.nifty.com/cockatrice/kpleg )。

_config.cgi 設定例 (@nifty)

$BASEDIR_CGI = "."; # そのまま
$BASEDIR_DOC = "http://homepage2.nifty.com/cockatrice/kpleg"; # ここを変える
$BASEDIR_DAT = "."; # そのまま

ディレクトリ構成例 (@nifty)

  +-- homepage / kpleg [755] /
                   |     kpleg.css [644]

  +-- cgi-bin / kpleg [755] /
                  |     kpleg.cgi   [755]
                  |     admin.cgi   [755]
                  |     rss.cgi     [755]
                  |     _config.cgi [644]
                  +-- lib [755] /  
                       |          au_xhtml.pl   [644]
                       |          ban.pl        [644]
                       |          html401.pl    [644]
                       |          htmlbase.pl   [644]
                       |          ihtml.pl      [644]
                       |          kplegbs.pl    [644]
                       |          kpcgilib.pl   [644]
                       |          misc.pl       [644]
                       |          mobile.pl     [644]
                       |          other_mb.pl   [644]
                       |          other_pc.pl   [644]
                       |          oldlog.pl     [644]
                       |          oldlog_mb.pl  [644]
                       |          oldlog_pc.pl  [644]
                       |          pc.pl         [644]
                       |          rss.pl        [644]
                       |          voda_xhtml.pl [644]
                       |          write.pl      [644]
                       |          xhtml.pl      [644]
                  +-- data [777]
                       |          lock          [777]
                       |          log.cgi       [777]
                       |          logcnt.cgi    [777]
                       |          ban_text.cgi  [777]
                       |          ban_addr.cgi  [777]
                       |          ban_agent.cgi [777]
                       |          updinfo.cgi   [777]

Version1.00〜1.10からのバージョンアップ

 libディレクトリの中身が豪快に変わっています。

 ただ dataディレクトリに関しては変更がありませんので、(_config.cgiを除けば)dataディレクトリ以外をそのまま上書きアップロードすればバージョンアップできるはずです。


ログデータのバックアップをとる場合

 kpleg/dataディレクトリの中身をそのまま丸ごとバックアップするだけです。
 下記のファイル説明も参考にして下さい。

dataディレクトリ内のファイル説明

lock

 ファイルロックの際に内部で使用するファイルです。中身はありません

ban_text.cgi

 NGワードを入れたファイルです。1行につきNGワード1語句を書いてあるだけの、ごく普通のテキストファイルです。文字コードセットはShift_JIS を想定しています。
 admin.cgi から編集ができますが、あらかじめメモ帳などで中身を用意しておいても構いません。

ban_addr.cgi

 書き込み等を拒否するIPアドレスまたはホスト名を入れたテキストファイルです(参照:ban_text.cgi)。

ban_agent.cgi

 書き込み等を拒否するブラウザ名(User-Agent)を入れたテキストファイルです(参照:ban_text.cgi)。

log.cgi

 ログファイルです。書きこまれた記事データが入っています。

logcnt.cgi

 番号管理ファイルです。
 過去ログの番号と、新規書き込みのIDを管理するファイルです。 log.cgiと連動しています。

 Version1.10 からはアクセスカウンタデータもこのファイルに収納しています。

log0001.cgi (log0002.cgi、log0003.cgi、...)

 過去ログファイルです。KP-Leghornが自動的に生成するファイルで、設置する際に用意する必要はありません。
 過去ログが増えてくると、過去ログファイルも増えて行きます。ファイル名の数字の部分は過去ログのIDです。

updinfo.cgi

 更新情報ファイルです。RSSの生成のために必要です。逆に言うとRSSを使わないならいりません


複数掲示板モード

 KP-Leghornは1つのスクリプトで複数の掲示板のように動かす事ができます。記事・過去ログがそれぞれ保存されるのはもちろん、見栄え等もそれぞれ変更ができます。

複数掲示板モード設置上の注意

 複数掲示板モードは通常モードに比べやや設置が難しくなります。CGIスクリプト設定経験のない方は先に通常モードなどの設置で練習した方がよいでしょう。

 また、私の書いた複数掲示板モードの設置方法のテキストは相当わかりにくい文章だと思うので(おい)、これを読んでわからなかったら一応私に聞いてみて下さい(参照:サポートについて)。
# おいおい文章を直していきます。A^^;)

複数掲示板モードの設置方法

 まず複数ある掲示板のそれぞれを区別するため、掲示板IDを決めて下さい。
 半角の英数字からなる名前であればなんでも構いません。bbs1 とかでも keitaroh とかでもよいのです。大文字でも大丈夫だと思いますが基本は小文字です。
# 空白や記号は使わないで下さい。また全角文字も使わないで下さい。

 掲示板IDを決めたら、_config.cgi の [複数掲示板モード設定] にある @BBS_ID にそのIDを登録して下さい。
 例えば掲示板IDを bbs1、bbs2、bbs3 の3つに決めた場合、以下のように書きます。

_config.cgi の設定例

[複数掲示板モード設定]
@BBS_ID = ('bbs1', 'bbs2', 'bbs3');

 次に、kpleg/data/ 以下に掲示板IDと同じ名前のディレクトリを作成して下さい。
 例えば掲示板IDを bbs1、bbs2、bbs3 の3つに決めた場合、以下のように作ります。

ディレクトリ構成の例

  +-- kpleg /
        +-- data [777] /
             +-- bbs1 [777] / 掲示板1
             +-- bbs2 [777] / 掲示板2
             +-- bbs3 [777] / 掲示板3

 kpleg/data/掲示板ID/ の中には log.cgi、logcnt.cgi、updinfo.cgi を入れておきます。そして各掲示板個別の設定を行うためのファイル _config_bbs.cgi も一緒に入れておきます。
 拒否用ファイル(ban_text.cgi、ban_addr.cgi、ban_agent.cgi)とファイルロック用ファイル(lock)は全ての掲示板で共通のため、kpleg/data/ の中に入れておいて下さい。

ファイル構成の例

  +-- kpleg [755] /
        |     kpleg.css [644]
        +-- data [777] /
             |          lock           [777]
             |          ban_text.cgi   [777]
             |          ban_addr.cgi   [777]
             |          ban_agent.cgi  [777]
             +-- bbs1 [777] /
                  |          _config_bbs.cgi [644]
                  |          log.cgi         [777]
                  |          logcnt.cgi      [777]
                  |          updinfo.cgi     [777]
             +-- bbs2 [777] /
                  |          _config_bbs.cgi [644]
                  |          log.cgi         [777]
                  |          logcnt.cgi      [777]
                  |          updinfo.cgi     [777]
             +-- bbs3 [777] /
                  |          _config_bbs.cgi [644]
                  |          log.cgi         [777]
                  |          logcnt.cgi      [777]
                  |          updinfo.cgi     [777]

 _config_bbs.cgi は各掲示板個別の設定を行うためのファイルです。設定できる項目は基本的に _config.cgi と同じです。
 _config_bbs.cgi に記述されていない設定値を変更したい場合は、適時 _config.cgi からコピーしてくると良いでしょう。

_config_bbs.cgi の設定例

#--------------------------------------------------
# 設定ファイル(個別設定)
#--------------------------------------------------

# [あなたのホームページのアドレスと名前]
$URL_HOMEPAGE = 'http://homepage2.nifty.com/cockatrice/'; ←ここを変える
$TITLE_HOMEPAGE = "夜明け前の鶏小屋"; ←ここを変える

# [掲示板の名前等]
$NAME_BBS = 'KP-Leghorn'; # 掲示板の名前 ←ここを変える

# [掲示板の簡単な説明]
$DESC_BBS = '掲示板です。気軽に書き込んで下さいね。'; ←ここを変える

 それぞれの掲示板の見栄えを変えるにはスタイルシートファイルを個別に用意して、そのアドレスを _config_bbs.cgi で設定して下さい。

_config_bbs.cgi の設定例2

# [掲示板のスタイルシートファイル]
$FILE_CSS   = "$BASEDIR_DOC/kpleg.css"; ←ここを変える

 これで複数掲示板モードで動作するはずです。


携帯電話モード

 Version 2.00 から携帯電話にも一応対応しました。ただし、あくまで「一応なんとか使える」という程度のものです。
 携帯でそのまま KP-Leghorn にアクセスすれば自動認識して携帯電話モードになります。特にアドレスを変える必要はありません。

最適化に絡む制限

 携帯電話用の最適化が甘い(というか、ろくにやってない)ので、以下のような制限があります。

未対応機能

 以下の機能は携帯モードには対応していません。

端末認識

 kpleg.cgi はアクセスした端末の種別を自動認識しますが、引数 mlmode を与えてやる事で強制的に望む端末用のモードとして動作させる事ができます。
 例えば、アクセスするURLを http://(中略)/kpleg/kpleg.cgi?mlmode=ihtml としてやると i-mode 用の表示モードになります。

表:mlmode 一覧
mlmode の値 表示モード
ihtml i-mode系端末用
hdml EZweb HDML系端末用
au au WAP2.0系端末用
voda Vodafone C型/P型端末用
vodax Vodafone W端末/3GC端末(WAP2.0系)用
xhtml XHTML1.1 DTD
(その他) HTML4.01 Transitional DTD

 ただし、hdmlモードと vodaモードは ihtmlと同じになっています。また auモードと vodaxモードの違いはほとんどありません。
# 大ざっぱにしか対応できてないから。(^^;)

アクセスキー

 アクセスキーは記事の閲覧時のみ使用できます。その他のモードではまだ使えません。

表:記事閲覧時のアクセスキー
accesskey 機能
2 画面最上部へ移動
4 前のページへ移動
5 リロード
6 次のページへ移動
7 新規書き込み
8 画面最下部へ移動
9 過去ログ閲覧

その他携帯電話モード特有の仕様


設定項目解説

 _config.cgi に設定できる設定項目の解説です。

$URL_HOMEPAGE

 KP-Leghorn からあなたのサイト(ホームページ)への戻り先アドレスを記述します。KP-Leghorn の上部に [〜に戻る] としてリンクが張られます。
 また、head要素内の link要素にも記述されます。

$TITLE_HOMEPAGE

 あなたのサイト(ホームページ)の名前を記述します。KP-Leghorn の上部に [〜に戻る] としてリンクが張られる際の名前となります。
 また、head要素内の link要素にも記述されます。

$NAME_BBS

 掲示板の名前を記述します。KP-Leghorn の最上部に h1タグでマークアップされて表示されます。また head要素内の title要素としても記述されます。

$URL_BBS

 KP-Leghorn を設置したアドレスを記述します。http://から始まり KP-Leghorn のディレクトリで終わるアドレスを記述して下さい。最後のスラッシュ(/)は書いてはいけません。

 例えば、KP-Leghorn の kpleg.cgi のアドレスが http://hpcgi2.nifty.com/cockatrice/kpbbss1/kpbbs.cgi であれば、$URL_BBS = "http://hpcgi2.nifty.com/cockatrice/kpbbss1"; と書いて下さい。

 $URL_BBS は RSS出力の際にのみ用いるので、RSSを使用しない時には書かなくても問題ありません。

$DESC_BBS

 掲示板上部に書かれる簡単な説明文を記述します。また RSS の description要素にも記述されます。

$ENABLE_THREAD

 スレッド式掲示板モードのスイッチです。0 の場合普通の掲示板モード、1 にするとスレッド式掲示板モードになります。

$MAX_THREADCHILD

 スレッド式掲示板モードを使用したさいに、一つの親記事に返信できる記事の最大数です。$MAX_THREADCHILD 個以上の返信記事を書き込むと、最後の返信記事のすぐ下に《返信数が××件になりました。この記事にはこれ以上返信できません》と表示され、返信ができなくなります。
 一つのスレッドが大きくなりすぎるのを防ぐ機能ですが、必要がないなら非常に大きな値を入れておくとよいでしょう。

@BBS_ID

 複数掲示板モード使用時の各掲示板IDを記述します。ここを空にしておくと通常モードとして動作します。

 掲示板IDを記述する場合は半角のアポストロフィ(')で掲示板IDをくくり、掲示板ID同士は半角のカンマ(,)で区切って下さい。
 例えば bbs1、bbs2、bbs3 の3つの掲示板を設置したいと思った場合、@BBS_ID = ('bbs1', 'bbs2', 'bbs3'); と記述します。

 複数掲示板モードを使わないなら @BBS_ID = (); と書いておきましょう。

$PW_ADMIN

 管理画面から記事の削除やIPアドレスの拒否などを行うために必要な、管理モード用のパスワードです。初期値は空になっています。
 $PW_ADMIN は必ず設定して下さい。設定しないと管理モードが使用できません。また、パスワードはなるべくわかりにくいものを選ぶようにしましょう。

$ENABLED_COLOR

 1にすると文字色と背景色を投稿者が入力する事ができるようになります。

 この設定値は Version 1.10 で新設されました。

@COLOR_FONT

 選択できる文字色の配列です。色名('black' や 'white' など)か、#nnnnnn('#000000' や '#FFFFFF' など)のどちらかで記述して下さい。

 この設定値は Version 1.10 で新設されました。

@COLOR_BG

 選択できる背景色の配列です。色名('black' や 'white' など)か、#nnnnnn('#000000' や '#FFFFFF' など)のどちらかで記述して下さい。

 この設定値は Version 1.10 で新設されました。

$ENABLED_ACCESSCNT

 アクセスカウンタを表示するかどうかのスイッチです。1に設定するとアクセスカウンタを表示するようになります。

 この設定値は Version 1.10 で新設されました。

$FORMAT_ACCESSCNT

 アクセスカウンタをどう表示するかを設定します。
 %TOTAL%は来客数合計へ、%TODAY%は今日の来客数へ、%YESTERDAY%は昨日の来客数へと自動的に変換されて表示されます。
 HTMLタグを記述できます。

 この設定値は Version 1.10 で新設されました。

$TEXT_HOWTO

 注意事項画面に表示する注意書きを記述します。HTMLタグが使用できます。使用する文字によっては文字化けする事がありますので、その時には(\)で文字化けを防ぐようにして下さい。
 例えば「予告」という漢字は「予\告」と書かないと文字化けしてしまいます。

$ENABLE_RSS

 RSS出力機能のスイッチです。0の場合RSS出力機能を使用しませんが、1にするとRSS出力機能が動作し、KP-Leghorn の上部に [RSS] というリンクが表示されるようになります。

$MAX_UPDINFO

 RSSを出力するための更新情報ファイルに最大何件まで更新情報を保持させるかを記述します。現行仕様ではこの数値がそのままRSS出力時の件数となります。

$ENABLE_STRSS

 静的RSSファイル出力機能のスイッチです。
 通常 RSSは rss.cgi を呼び出す事によって生成されますが、$ENABLE_STRSS を 1 に設定すると rss.xml のような静的ファイルに RSS を書き出すようになります。これによりRSS を読み出す際に CGIスクリプトを動作させる事がなくなるため負荷が下がります。
 また広告が自動挿入されるようなレンタルサービスでは rss.cgi の出力にも広告が挿入されるため RSS が壊れてしまいますが、静的RSSファイルに出力させると正常に読める事があります。

$DEFAULT_RSS

 RSSを簡略して出力するか、詳細に出力するかの切り替えスイッチです。'mini' に設定すると簡略出力、'full'に設定すると詳細出力になります。
 具体的に言うと content:encoded要素を出力するかどうかの違いです。'mini' に設定すると content:encoded要素を出力しなくなり、RSSがその分小さくなります。その代わり RSS だけでは記事の全文が読めなくなります。

 こんな機能に意味があるのかどうかは作った本人にもわかりません。

$VIEW_DELETED

 削除した記事を表示するかどうかのスイッチです。標準では削除した記事は「投稿者削除」「管理人削除」として、削除された事を明示するようになっています。
 0を設定すると削除した記事は表示されなくなります。

$ROW_PAGE

 1ページ辺りに表示する記事の数です。

$WAIT_SUBMIT

 連続投稿の制限時間です。同じホストからはこの時間内には連続して書き込みができません。ただし他の人が書き込むと、制限時間内であっても連続書き込みができます。
 単位は秒です。

$MAX_ROWS

 記事の最大保持件数です。この数を超えて記事が書き込まれると、古い記事は過去ログへ移動されます。

$ROW_OLDLOG

 古い記事が過去ログに移動される件数です。$MAX_ROWS を超えて記事が書き込まれると $ROW_OLDLOG の数だけ古い記事が削除され、過去ログに書き込まれます。

 スレッド式掲示板モードを使用している時は、スレッド単位で移動するため $ROW_OLDLOG の数を超えた件数の記事が移動される事があります。

$DEFAULT_MLMODE

 端末識別時に自動認識できなかった場合の表示モードを指定します。通常変更の必要はありません。

 この設定値は Version 2.00 で新設されました。

$BASEDIR_CGI

 実行ファイルディレクトリですが、通常変更の必要はありません。便宜上置いているだけです。

$BASEDIR_DAT

 書き込み用ディレクトリへの相対パスを記述します。標準設定では dataディレクトリがこのディレクトリの直下に置かれます。
 通常変更の必要はありませんが、dataディレクトリをブラウザのアクセスできない場所(public_htmlの外など)に置きたい場合などに設定して下さい。

 サーバの設定によっては実行用ファイルディレクトリにも閲覧用ファイルディレクトリにも書き込みを許さないようになっている事があるそうです。そういうサーバでは書き込み用ディレクトリが用意されているので、この設定値を使わないと動作しないでしょう。

$BASEDIR_DOC

 ドキュメントディレクトリを記述します。http://から始まる絶対アドレスを記述して下さい。
 @niftyなどに設置する際に必要です。

$BASEDIR_DOC_W

 ドキュメントディレクトリを記述します。$BASEDIR_DOCとの違いは相対アドレスで記述するという点です。
 静的RSSファイル出力機能を使用する時に必要になります。

 この設定値は Version 1.01 で新設されました。

$METHOD_FORM

 form要素の method属性値を指定します。
 'post' と 'get' の二種類の値を設定できますが、'post' を設定して下さい。

 通常変更の必要はないのですが、ごく希に 'post' では受け付けてくれないサーバがあるそうです。'get' による送信は推奨されないのですが、そういうサーバで KP-Leghorn を動作させたい場合には 'get' を設定するしかありません。

$ENABLED_GLOCK

 ファイルロックの方式を設定します。
 1 を設定すると flock関数を使ってファイルロックをかけます。0 を設定するとファイルロックをかけません。

 サーバによっては flock関数を受け付けない事があるようです(最近は余り見かけませんが)。その場合には 0 を設定してファイルロックをかけないようにしましょう。
 ただし、ファイルロックをかけない場合ログ破壊の可能性が高まります。

$DIR_LIB

 ライブラリディレクトリへのパスを記述します。変更する必要性はほとんどありません。

$DIR_DAT

 データディレクトリへのパスを記述します。セキュリティ面を高めるのであれば変更した方が良いでしょう。
 そこまでセキュリティを気にしないのであれば変更の必要はありません。

$FILE_BBS

 KP-Leghorn の実行ファイル名です。

$FILEAB_BBS

 KP-Leghorn の実行ファイル名です。$FILE_BBS と違い、絶対パスで記述します。
 RSSを使用する際に必要です。RSSを使わないのであれば設定しなくても構いません。

$FILE_ADMIN

 KP-Leghorn 管理モードの実行ファイル名です。

$FILE_RSS

 RSS出力の実行ファイル名です。

$FILEAB_RSS

 RSS出力の実行ファイル名です。$FILE_RSS と違い、絶対パスで記述します。

$FILE_CSS

 KP-Leghorn 用スタイルシートのファイル名です。

$FILE_LOG

 ログ(記事)ファイルのファイル名です。パスを記述してはいけません。ファイル名のみを記述して下さい。

$FILE_OLDLOG

 過去ログファイルのファイル名です。パスを記述してはいけません。ファイル名のみを記述して下さい。
 ファイル名を変更する場合、必ず 'nnnn' を含むような名前にしなければいけません。

$FILE_LOGCNT

 番号管理ファイルのファイル名です。

 番号管理ファイルは新規記事の番号と過去ログの番号、そしてアクセスカウンタ関連のデータを記録したファイルです。

$FILE_UPDINFO

 更新情報ファイルのファイル名です。RSS出力に必要です。

$FILE_STRSS

 静的RSSファイルのファイル名です。http://から始まる絶対パスで記述して下さい。

$FILE_STRSS_W

 静的RSSファイルのファイル名です。相対パスで記述して下さい。

$FILE_BANADDR

 拒否アドレスファイルのファイル名です。

$FILE_NGWORD

 NGワードファイルのファイル名です。

$FILE_BANAGENT

 拒否ブラウザ(User-Agent)ファイルのファイル名です。

$FILE_JCODE

 jcode.pl のファイル名です。Version2.00から使わなくなりました。

$FILE_LOCK

 ファイルロック用ファイルのファイル名です。

$LIMIT_DESC

 RSS の Description要素のバイト制限値です。Description要素を出力する際、出力するデータがここで指定したバイト数を超えていた場合自動的に指定したバイト数以内に納まるよう切り捨てられます。

$FILE_GZIP

 アーカイバ gzip のファイル名です。gzip による圧縮転送を使用する場合に記述して下さい。ファイル名を空にすると gzip 転送を行わなくなります。

%QUERY_DT_STR

 NaN/Inf対策ルーチンのための設定値です。
 自分で KP-Leghorn を改造する場合ぐらいにしか変更をする必要はありません。

$TIMEOUT_COOKIE

 クッキーの有効期間を設定します。単位は秒です。
 ここで設定した時間がすぎると、ブラウザは保存していたクッキーデータを自動的に削除します。

$DEBUG_DPROF

 デバッグ用の設定値です。変更しないで下さい。下手に変更すると不要なファイルを勝手に作ってしまいます。


注意事項

 このスクリプトはフリーウェアです。無料でご利用になれます。
 ご利用は自己責任にてお願いします。このスクリプトにより起きたいかなる損害にも、作者は責任を負わないものとします。
 責任取るって書いてる人いるんだろうか? (^^;)

 仕様面における注意事項のうち、ここまでに書いていない分については種々雑多な話でだらだらと書いていますので、そちらをご覧下さい。


サポートについて

 電子メールか、掲示板にて受け付けます。
# ただし、約束はできません。(^^;)

メールアドレス:basily@mx1.freemail.ne.jp
掲示板(鶏小屋別舎気分板:コンピュータ板)
http://basilisk.kiy.jp/cgi/maruchan/maruchan.cgi?bbschoice=2


更新履歴

Version 2.00 (2006/03/02)

Version 1.10 (2006/02/24)

Version 1.01 (2006/02/23)

Version 1.00 (2006/02/22)

Version 1.00 Beta 8 (2006/02/21)

Version 1.00 Beta 7 (2006/02/20)

Version 1.00 Beta 6 (2006/02/20)

Version 1.00 Beta 5 以前

 よく覚えていません(バカ)。
 作り始めたのは 2006/02/10 ぐらいみたいです。


謝辞

 このスクリプトを開発するに辺り、KENT-WEBさんの LIGHT BOARD等のスクリプトを参考にさせて頂きました。素晴らしいスクリプトをありがとうございます。

 また、Version1.10 まで同梱していた jcode.pl は(もう説明の必要もないほど有名ですが)歌代和正さんが開発されたものです。素晴らしいスクリプトをありがとうございます。


種々雑多な話

 KP-Leghorn での記事削除機能はデータを削除するわけではなく、表示させないようにするだけです。どうしてもログファイルから抹殺させたい場合は log.cgi(または過去ログファイル)を直接編集して下さい。

 KP-Leghorn は _config.cgi を読み込んだ後、_config_local.cgi というファイルを探し、見つけるとそのファイルを読み込みます。
 なので、_config.cgi は編集せずに必要な設定だけを _config_local.cgi へ追加する形で設定を行えば、バージョンアップ時にいちいち _config.cgi の再設定をせずにすみます(たぶん)。

 KP-Leghorn はファイルロック方式として flock関数を使用していますが、実はこの他に隠しモードとして rename関数を使用するモードがあります。_config.cgi の $ENABLED_GLOCK を 2 に設定すると rename関数方式になります。
 ただ rename関数方式は以前テストした時にたびたびロックを外し損ねてくれたため実装を諦めたという経緯があり、_config.cgi には書いていません。なので、どうしてもと言う場合以外は使わない方が無難でしょう。
 長年(?)の疑問氷解。テストの仕方が間違ってた模様。しくしく。
# ちなみにロックを外し損ねた時の自動復旧コードが入っていないので、ロックを外し損ねると書き込みができなくなります。

 KP-Leghorn の吐く Cookie は LightBoard(KENT-WEBさん)などとは違い複数の Cookie に分けてあります。そのため環境によっては Cookie の許可ボタンを何回も押さないといけないかもしれません。

 KP-Leghorn は jcode.pl/Jcode.pm を使用していないので、ブラウザが Shift_JIS 以外の文字コードセットで書き込みに来ると確実に文字化けします。

 KP-Leghorn の吐くRSSは Shift_JIS なので、RSSリーダによってはうまく読めない可能性があります。UTF-8 で吐くようにすればほぼ大丈夫だろうとは思うのですがめんどくさかったのでやってません。
 補記:この文章を書いた後 Jcode.pm に対応してしまったので、UTF-8 での出力は検討します。

 $ENABLE_STRSS には隠し設定値があります。
 2以上を設定すると静的RSSが生成されますが、[RSS]のリンク先には rss.cgi が表示されます。
 -1以下を設定すると静的RSSが生成されますが、[RSS]のリンクは表示されなくなります。

 rss.cgiは引数 mode の値として 'full' と 'mini' を受け付けます。この違いは content:encode 要素を付加するかしないかの違いです。
 content:encode 要素を付加した場合投稿記事を丸ごとRSSに吐き出すのでRSSだけで記事が読めますが、その分RSSファイルのサイズが大きくなります。
 私はRSSの運用に置ける実態を全然把握していない事もあってどっちがベターなのか判断が付かなかったため、念のため mode で切り替えられるようにしてあります。ほとんど意味ないような気もしますが。

 フォームに tabindex 属性と accesskey 属性が設定されていないのはどう割り当てたらいいのかピンと来なかったからです。特に accesskey 属性はどう当てるのが良いのやらさっぱり。

 KP-Leghorn が携帯対応に対してあまり熱心ではない理由は、私が携帯電話を持っていないからです(それだけか)。

 $MAX_ROWS はスレッド式モードでは親記事の表示件数として扱われます。なので、スレッド式モードで携帯モードを使用するとファイルサイズ制限に引っかかったりログが長すぎて見づらくなったりすると思います。
 子記事も含めてページ制御できれば良いのですが面倒なのでやってません。

 HDML出力機能がない理由は、HDMLの文書構造がHTML系とは根本的に異なるためです。なので、当面実装する予定はありません。
 要するに HTML系のような中途半端実装ができなかったのです。

 フルブラウザのない H"系端末への対応は全く考えていません
 作者が唯一実機で持っているんですけどね。(^^;)

 $ENABLE_ から始まる名前を持つ設定値がいくつかあります。$ENABLED_〜 にするつもりで間違えたのです。今さら変更するのも問題が多いので、このままで行く事にします(とほほ)。

 Version1.10 は致命的なバグの嵐でした(苦笑)。まだ Version1.0x の方が安定しています。

 頭に 'OR_' の付く関数(例:OR_OutHTMLHeaderDocType)は、オーバーライド(Override)的な動きをする関数群です。端末による違いを吸収するための仕組みで、端末によって呼び出される関数が変わります。
 OR_系関数群の読み込みは LoadUALibrary関数で行っています。

「KP-Leghorn が改造に向いていないと言う理由はソースの直観性が悪いから」と以前説明書に書きましたが、この OR_系関数群のおかげで更に直観性が悪くなりました。それでも改造したいという方は頑張ってソースを読んで下さい。
 ただし(当たり前ですが)改造版のサポートは出来かねます。
# 無改造版のサポートすら怪しいけど。

 Version2.00 から link要素の rel="Prev" と rel="Next" をこっそり変更しました。V1.10 までは画面上部のサイトナビ(注意事項や過去ログなど)と同じ動きにしてありましたが、V2.00 からはログのページナビと同じ動きにしました。こっちの方が便利かな、とか。


猫下鶏太郎恒幸 Tsuneyuki Keitaroh Nekoshita
basily@mx1.freemail.ne.jp
夜明け前の鶏小屋