■簡易BBS -Type2- version 1.** 取扱説明書&技術資料 《特徴》 ・表示画面はシンプルに!をコンセプトに、削除モードや投稿モードを別画面にした。 ・表示はページ管理として、1画面に表示する記事数が設定できる。 ・管理者のみ投稿できるおしらせモードに設定可能。 ・削除モードもページ管理として、途中の画面で記事の削除後でもその画面のページ(そのページの先頭番号)を保持させた。 ・投稿モードではクッキー機能(名前等をブラウザに記憶する機能)で記憶させるか消去するかを選択可能にした。 ・投稿時には「記入した通りに表示する」かしないかを選択(チェック)し、選択した場合の内容は
タグを使って表示される。 ・既に投稿済みの記事の修正を可能にした。 ・投稿後にボタンでその記事の修正が可能で、修正後は削除モードになり、すぐ削除が可能。 ・削除や修正は、その記事を投稿したときに記入した削除キーで本人確認をする。 ・削除や修正は、マスターキーで全記事の実行が可能となる。 ・データが更新される場合(投稿/修正/削除/マスターキー変更)は、その実行前のデータがテンポラリーファイルにバックアップされる。 ・バックアップには外部処理(cpコマンド)が使われるために、perlの遅い処理速度をカバーさせた。 ・ファイルロック機構(同時重複起動によるファイル破損防止機構)が組み込まれた。 ・更新機能(最新の画面にする機能)が付いた。 ・最大記録件数を設定可能(総データ量の制限ではない)。 ・参照チェック(任意の場所からの悪戯投稿を確認する機能)あり。 ・記録はされるが、表示時にリモートホスト名やエージェント(ブラウザ)名の表示の可否を設定可能。 ・HTML式(半角スペースが意味を持たなくなってしまう)ではなく、記録されたまま表示される(表示利用)。 ・表示はインターネットエスクプローラではフォントが小さくなってしまうので、それを補正する機能あり。 ・記事間に挿入するタグを自由設定可能(デフォルトでは罫線
だが、何でも可能)。 ・1記事に投稿されるデータ量(総受信データ量)をバイト単位で制限可能。 ・ファイルの配列読込処理を全くしていないので、大きな配列が生まれず、サーバのメモリを食う等の負担が少ない。 ・データ形式は完全にUNIXファイルとなるので、他OS(Windows,Mac)でデータの編集が可能。 ・表示や投稿(修正)画面の上部にHTML形式の内容を初期設定で指定可能。 ・セキュリティ強化のために、タグとしての記入はできないようにした。 ・その代わりに、リンクと画像のURL(http手順に限る)記入欄を設け、表示できるようにした。 ・マスターキーによって(管理者処理)記事に修正を加えると、その記事の削除キーを管理者が変更でき、その記事の修正(削除)ができないようにできる。 ・標準入力(METHOD=POST)専用としたために、GETで生じる様々なセキュリティホールがカバーされた。 ※このタイプ2では、安全対策を強化したために、その分設置環境や機能の一部の自由が制限されます。 自由と制限は相反するもので、セキュリティ対策を強化するには自由を犠牲にせざるを得ません。 《設置可能なサーバであるかを確認する資料》 ・UNIX仕様なので、NTやMACサーバでの動作はサポートしない。(できるかもしれないし・・・) ・CGIによって外部シェルコマンドの実行が可能であること。 ※ perlにおいて、system("$cp $file $temp"); のようなコピーコマンドの実行が可能であること。 ・CGIWRAP等の特殊な環境での動作は確認していない。 ・ファイルロック機構を利用する場合は、CGI(nobody)でファイルの新規作成処理に規制がないこと。 《基本設置構成と動作確認》 ダウンロードした直後の初期設定は下記の構成で設置して、まず動作確認をするための 最低限のデフォルト値になっています。なお、Windowsを利用している方を対象にして説明しますので、 その他のOSの方は同様の手続きになるように作業してください。 CGIの実行できる任意のディレクトリ ( )内はパーミッション値 | |-- jcode.pl (644) |-- minibbs.cgi (755) |-- dat.cgi (666) |-- tmp.cgi (666) 0.ファイルの編集にはメモ帳(\windows\notepad.exeまたは[スタート]→[プログラム]→[アクセサリ])を使います。 1.minibbs.cgiの1行目の #!/usr/local/bin/perl をあなたのサーバ環境に合わせて書き換えます。 これについては契約しているプロバイダにお問い合わせください。 なお、この行の「#!」よりも左にスペースがあっても、上に行があってもいけません。 2.minibbs.cgiの初期設定の #◆このCGIスクリプトを設置するURL $reload = 'http://ドメイン名/IDまたは設置したパス名/minibbs.cgi'; を、設置する場所のURLを設定します。この $reload で設定したURLがアクセスURLとなります。 完了したら保存します。 ※ メモ帳で保存すれば、SJIS&WINDOWSファイルとして記録されます。 ※ このURLをリンク等に記述します。例:簡易BBSへ ※ このURLが間違っていれば、アクセスした時に Not Found になってしまいます。 3.dat.cgi および tmp.cgi という名前の、中身のない(サイズ0バイト)ファイルを用意します。 4.jcode.pl はダウンロードしたまま編集せずそのまま使います。 5.FTPソフトを利用し、ホームページ作成でHTMLファイルを転送する要領で、用意した4つの ファイルを転送します。その時必ず「アスキーモード」(AボタンやASCIIモード)を選択した上で転送します。 6.各ファイルのパーミッションを設定します。 7.以上で動作試験用に設置完了です。 ブラウザの Location: 欄に $reload で設定したURLを記入しアクセスしてください。 マスターキー設定画面が出て、正常に設定できればとりあえず設置成功です。 さて、このままでは終了先URL設定などの各種設定をしていません。minibbs.cgi の初期設定に 従ってカスタマイズしてください。 《初期設定およびカスタマイズの解説》 #◆このCGIスクリプトを設置するURL $reload = 'http://ドメイン名/IDまたは設置したパス名/minibbs.cgi'; #◆画面の「終了」リンク先のURL $modoru = 'http://トップページのURL等/'; ※ 終了リンクをクリックして簡易BBSを抜ける場合のリンク先です。 ※ フレーム内で簡易BBSを利用している場合はフレーム解除されます。 #◆タイトルバーに表示する名称 $title = '簡易BBS2'; ※ ブラウザの上部に表示されるもので、タグは使えません。 #◆画面ボディー設定 $body = ''; ※ 画面の色や背景、リンク色などを設定します。''の中に記入します。 #◆閲覧画面の上部挿入HTML $head_1 = <<'EOF';簡易BBS2
EOF ※ $head_1 = <<'EOF'; の次の行から EOF の前の行までの間がそのまま画面に挿入されます。 ※ ここでは見やすくするために左にタブコードが記録されて段落がありますが、無くても結構です。 #◆投稿/修正画面の上部挿入HTML $head_2 = <<'EOF';
EOF ※ 同様に、投稿&修正画面の上部にそのまま挿入されます。 #◆日本語コード変換ライブラリ require './jcode.pl'; ※ 既にプロバイダで用意されているとか、他のCGIスクリプト用に設置してある場合は、 その位置を正確にここで設定すれば、改めて設置する必要はありません。 #◆内容が書き込まれる記録ファイルのパスを設定 $file = './dat.cgi'; ※ このファイルに実際の投稿が、簡易BBS2専用のフォーマットで記録されていきます。 #◆作業用ファイルのパスを設定 $temp = './tmp.cgi'; ※ 作業用ファイルには、データファイル($fileで設定したファイル)が更新される場合に、 処理前の状態が保存されます。万が一の場合にご利用ください。 ※ このファイルはいつでも空にしてしまっても問題ありません。 #◆参照チェックする 1:yes 0:no (投稿元が$reloadの値を含まない場合に投稿を許可しない) $ref_check = 1; ※ 知らない場所からあなたのこの掲示板に投稿してしまうことも可能です。 それを防止するために、発信元が $reload でない場合には受け付けないようにする機能です。 ※ 設置するサーバがこの情報を与えてくれないところでは、その機能は役目を果たしません。 #◆インターネットエスクプローラ(IE)利用時に表示フォントを大きくする 1:yes 0:no $IEfont = 1; ※ 記事閲覧時に利用しているブラウザ名を判断し、IEを利用している方の内容の文字フォントを 1サイズ大きくします。 #◆投稿者のリモートホスト名を表示する 1:yes 0:no $view_host = 1; ※ 投稿者のリモートホスト名を記録&表示する機能で、どこから送信しているかを記録するために、 いたずらをしないようにするための抑止力の一つです。必ずしも特定できるものでもありません。 ※ 表示しなくてもデータには記録されます。 #◆投稿者のブラウザ名を表示する 1:yes 0:no $view_agent = 1; ※ 投稿者の利用しているブラウザ名を記録&表示する機能です。ブラウザ名は改ざんが比較的容易なので、 参考程度にするといいでしょう。 ※ 表示しなくてもデータには記録されます。 #◆タイトル背景の設定 $title_back = '#ffaaaa'; ※ タイトル表示行は