トップページ | 利用規定
  簡易BBS3

(株)友林堂
(株)友林堂



設置条件1

  • 1世代のレスポンス機能があります。

  • UNIXサーバであること。

    それ以外のOSでの動作は未確認&非対応であり、設置するにはそれ相応の移植が必要でしょう。 当サイトでは対応できませんので、ご了承ください。

  • SJISで設置すること。

    検索処理などでSJISを前提に処理させていますので、 その他の日本語コードでの動作はトラブルのもとですし、未確認&非対応となります。

  • 標準入力が使えること。

    Method=POST専用です。GETしか使えないサーバは極少数だと思いますが。

  • 暗号はDESおよびMD5に対応。

    ほとんどのUNIXサーバはこのどちらかを利用していると思いますので問題はないでしょう。 もし対応していない場合は、パスワードを使った削除や修正処理ができなくなります。


設置条件2

v1.00は設置できる環境があまりにも狭いことが分かりました。 主な有名プロバイダのサーバに設置できませんでした。 そこで、何とか広く設置できないかと考え、いくつかのサーバでいろいろ実験を重ねました。 どうしても理由も分からず結果OKで設計している部分もありますが、 次のことを、理解できないとしても、とりあえず読んでおいてください。

v1.10からは、下記の2点は推奨としました。 なお、GDBM_Fileモジュールが設置するサーバに存在しているかどうかを意識することなく、 設置すれば自動的に使えるモジュールを、GDBM_File→SDBM_File→ODBM_Fileの順番で探します。 perl5でこれらに該当すれば、DBMの取り扱いにtie()が使われ、 この3つに該当しない場合とperl4で動作させている場合は、dbmopen()が使われます。

「管理者パスワードの設定/変更」の画面の最下部に、自動的に検知採用されたモジュール名が表示されます。 dbmopen()の場合(NDBM_Fileか?)は、扱えるデータ量が、それ以外のモジュールに比べて少ないか、 制限があるのか、いずれにしても経験上、そのようなことがあることをお知らせしておきます。 詳しい資料が無いために、それぞれのモジュールで扱えるデータ量はどの位なのか、 制限はあるのか無いのか、はっきり分かりませんので、承知した上でご利用ください。

  • Perl version 5 上で動作させること。

    ご利用サーバのperlのバージョンが何なのか分からない方は、 サーバ管理者に問い合わせてください。

  • GDBM_Fileモジュールを使う。

    これは自動判別しますので、あるかないかを探す必要はありません。 この簡易BBSではDBMを利用します。 いままでの簡易BBSのデータはテキストデータであり、カセットテープに例えることができます。 この場合途中のデータにアクセスするために、そこまで早送りや巻き戻しをしなければなりません。 一方DBMはコンパクトディスクに例えられます。アドレスさえ指定すれば、即そのデータにアクセスが可能です。 DBMにはいろいろな種類がありますが、いずれのDBMを利用するにしても、 そのモジュールがサーバに存在していなければなりません。 GDBM_Fileはロック機能がそれ自体に装備されています。 v1.10からは外部ロック処理を入れましたので、GDBM_Fileでなくても一応ロックはかかりますが、 GDBM_Fileであれば2重にロックされることになるので、それだけファイルが破損する可能性が低くなります。 使えるかどうか分からない方は、サーバ管理者に問い合わせるか、 確認用のプログラムをperl5上で実行させることにより分かる場合もあります。 (実行結果の例) 「GDBM_File」が一覧内に表示されていれば使えるでしょう。



サンプルとダウンロード

- サンプル
- このシステムはフリーソフトですが、利用規定に従ってご利用ください。

バージョン ファイル名 転送モード パーミッション 備考
2.05 minibbs.cgi アスキー(TEXT) 755
2.05a minibbs.cgi アスキー(TEXT) 755 設定件数分の記事を
保存するタイプ
password.cgi アスキー(TEXT) 666 空のファイルを用意
jcode.pl アスキー(TEXT) 644 日本語コード変換ライブラリ
cgi-lib217.pl (名前変更) アスキー(TEXT) 644 CGIライブラリ


設置構成

CGIプログラムのみで構成されていますので、CGIが設置できる場所に、 この構成で設置してください。

 < >は設定が必要なパーミッション値

 |--/data/ <777>
 |     |
 |     |- index3 (DBM)(*1)
 |     |- minibbs3.txt (バックアップファイル)(*3)
 |
 |- cgi-lib217.pl <644>
 |- jcode.pl <644>
 |- minibbs.cgi (このプログラム) <755>
 |- password.cgi (パスワードファイル)(*2) <666>

 (*1)..拡張子は設置されたサーバ環境によって異なる. 拡張子がない場合もある.
       自動的に作成されるので用意する必要はなく、直接いじることはできない.
 (*2)..この拡張子は単にCGIとして認識させてウェブ上から見えなくするためのもの.
       運用初回の場合、空のファイルを用意する.
 (*3)..用意しなくても自動作成される. 手を加えずそのまま保存するものとする.
       技術の無い方のこのファイルの編集を勧めないし、サポートはしない.
       あくまでもバックアップのためのファイルである.


運用管理

minibbs.cgiを実行します。バックアップもリストアも簡易BBS内から実行します。

「管理者パスワードの設定/変更」の画面の最下部に、自動的に検知採用されたモジュール名が表示されます。 運用後に環境を変えないでください。引越しなどで環境が変わる場合は、 下記で説明する、テキスト形式にバックアップしたファイルを移転先の同じ構成の同じ場所に転送し、 添付のリストアプログラムを実行します。

password.cgi(管理者用パスワードファイル)が空、すなわち、設定されていない場合は、 設定モードになります。もし途中で管理者パスワードを亡失した場合は、 このファイルを空にしてすぐ簡易BBSを実行すれば、新たに設定することができます。 この管理者パスワードは、すべてのパスワード欄に入力でき、 個別のパスワード(削除キー)の代わりに使うことができるスーパーキーです。 このパスワードで削除や訂正を、管理者の権限で行うことができます。 安全に管理してください。

レスポンス(返信)機能は、本文(新規記事)に対してのみ実行できます。 本文の1世代のみであり、レスポンスのレスポンスはできません。 なお、レスポンス記事は、本文が削除されると同時にすべて削除されます。

一部の機能(カーソルフォーカス)に、JavaScriptが使われています。

記事番号は本文、レスポンスに関係なく連続番号になります。 番号が大きい程新しいデータとなります。

レスポンス機能がついたことにより、過去の記事へのレスポンスがあっても容易にわかりませんので、 既読位置記憶機能を用意しました。クッキーを利用しています。 アクセスした際に、最新記事番号がブラウザに保存され、 次回のアクセス(更新)時に、その番号以降の記事が追加されていれば、新着案内として冒頭に表示します。 これで、相当過去の記事にレスポンスがついたとしても分かることができます。

記事の修正は、最初に投稿した時の削除用パスワードの入力が必要です。 記事の修正後は掲載時刻も更新されますが、ホスト名は書き換わりません。 従って、管理者が管理者権限で修正を加えても、投稿者のホストデータは保存されます。

投稿内容にタグを使うことはできませんが、必要性の高いURLについては、 「URLをリンクする」をチェックすれば、その部分をリンクします。

投稿時にはその内容文の表示方法を指定できます。 HTML文書として表示されますので、HTMLの仕様が適用されます。 HTMLでは、連続したスペースと改行は無視されます。 「改行無効」モードでは、入力したデータを加工せずそのまま表示、すなわち、 連続したスペースと改行は無視され、詰めて表示されます。 「改行有効」モードでは改行のみを<BR>に変換します。 「図/表モード」では、等角フォント<TT>指定で<PRE>を使って表示されます。 すなわち、連続したスペースや改行も入力した通りそのまんま表示されます。

投稿時には、ボタンの2回押し等による同じ内容の連続投稿を防止する簡単な機能がついていますので、 不用意な連続投稿はできなくなっています。

管理者パスワードと記事本文以外のすべてのデータはDBM化(インデックスデータ)されています。 このファイルはテキストエディタで分かる形で見られるデータではありません。 DBMファイルをバックアップするには、DBM自体をそのままバイナリモードで取り出してそのまま保存しておく方法が簡単です。 また、DBMをテキスト形式に変換してファイルに保存するバックアップ用のCGIプログラムを用意してあります。 この場合のバックアップファイル(minibbs3.txt)は通常のテキストデータですが、 CR(\r)コードが含まれており、Windowsでは認識できないとか、MacではMac自体の改行コードと混同してしまうとか、 十分な技術がない方がエディタ等で編集してしまうと壊れてしまう可能性がありますので、十分ご注意ください。 あくまでも「バックアップ」が目的ですので、それ以外の作業については、ご自身の判断で行っていただくことになります。

このバックアップは、インデックスデータ(記事本文以外)のみ扱うものです。 本文は、データフォルダ内に、「記事番号.txt」というファイルに記録されます。 バックアップ時にはこの個別の記事が存在していないと、その記事のインデックスはバックアップされません。 バックアップしたら、本文のすべて取り出し、セットにして保存してください。

FTP上で直接「記事番号.txt」を削除してしまっても、インデックス(DBM)にはその記事のデータが残っています。 画面上には内容が表示できないことを示す表示が出ますので、そこで削除してもいいでしょう。 ただ、過去データをまとまって削除した場合は、バックアップ→リストアすれば、 存在している記事だけのインデックスが再生されます。

テキスト形式にバックアップされたファイルは、リストア機能でDBM化できます。 この場合、旧DBMファイルは一旦削除した上で、バックアップデータを元に新たにDBMが作成されることになります。 DBMはその要素(連想配列)を開放(DELETE)したとしても、その領域が削減されませんので、 新規作成させるようにしています。これによって、大量に記事が削除されていれば、 その分のブロックが減ることになり、そのブロック分サイズが小さくなることになります。 DBMは一定の領域を、そのデータ量に応じて確保していきますので、 例え記事が数件しかなくても、ある程度の量のDBMファイルが生成されます。

この簡易BBS-3は、開発初期の実験性の高い掲示板です。 バグを発見された方は直接メールいただければ幸いです。


Powered by CGI RESCUE(R)