p i n o

info freako's Progressive InterNet bOard
  1. 概要
  2. 動作サンプル
  3. 利用規約
  4. ダウンロード
  5. 解凍
  6. アップ手順解説
  7. FAQ
  8. ファイル一覧
  9. ディレクトリ構成

【概要】
info freako's Progressive InterNet bOard p i n oは、WEB上で動作する高機能掲示板システムです。以下の様な特徴を備えています。

【動作サンプル】
こちらになります

【利用規約】
p i n oはフリーウェアです。ご利用にあたっては以下の条項を遵守して下さい。
  1. このスクリプトに関する全ての著作権は作者に属します。
  2. このスクリプトを使用した結果生じたいかなる損害についても作者は責任を負いません。また、不具合や仕様の不備があったとしても、作者はそれを修正する責任を負いません。
  3. 原則としてメール等による個別のユーザサポートは行っておりません。
  4. 有料・無料・改変の有無を問わず、作者へ許可なく再配布あるいはレンタルを行なうことは出来ません。
  5. スクリプトの改変は作者へ許可なく自由に行って頂いて構いません。ただし、フッタに記載されている著作表示及び「info freako」へのリンク表示を改竄あるいは削除することは禁止します。表現を変更することは(大きさや表示位置等)構いません。
  6. これらの条項は事前の通告なく変更・削除等される場合があります。

【ダウンロード】
EMAILアドレスを入力して、「download」ボタンを押して下さい。
EMAILアドレスは必須ではありませんが、なるべく入力するようにしてください。改訂やバグ報告等のアナウンスも届きます。
また、もし実際に設置されましたら、その旨を webmaster@infofreako.com の方までご一報頂ければ幸いです。
EMAIL:

【解凍】
pino.zipを解凍すると、ファイル一覧ディレクトリ構成に示すようにファイルが展開されます。 これらのディレクトリ名、含まれるファイル等は実際にサーバにアップロードした状態と同様になっていますので、展開された状態を参考にしながらアップして下さい。

【アップ手順解説】
! ! 重要 ! !

実際にファイルをアップする前に、必ず修正して頂かなければならない項目が2つあります。
  1. 「pino.cgi」「pinopost.cgi」「pinodelete.cgi」「pinosearch.cgi」の1行目の「#!/usr/local/bin/perl」を、サーバに合った設定に変更する
    この行は、Perlのシステムの場所を示しています。この様に/usr/local/bin/perlであるシステムが多いですが、必ずプロバイダがアナウンスしている情報と照らし合わせて、異なっているようなら正しい値に変更しておいて下さい

  2. 「init.cgi」の【Variables】の項にある「$__masterpassword」の値を変更する
    これは管理者用のパスワードです。この値を変更しないと、記事を勝手に削除されてしまう可能性がありますので、必ず任意の8文字以内の英数字の値に変更しておいて下さい。


以上の変更が終了しましたら、以下の手順に従ってサーバにファイルをアップして下さい。「ファイル一覧ディレクトリ構成だけ見れば分かる」という方は、無論お好きな方法でガシガシアップして頂いて構いません。
    【メインディレクトリの作成とスクリプトファイルの転送】

  1. サーバの中で、CGI実行可能なディレクトリ内(「cgi-bin」であることが多い)に任意の名前のディレクトリを作る。これが、システム全体を入れるディレクトリとなる(ここでは「pino」と名前を付けることにする)。
  2. 1.で作成したディレクトリのパーミッション(実行権)を、755(-rwxrwxr-x)に変更する。変更の仕方は使用するFTPソフトによって違うので、ソフトのヘルプを参照して下さい。
  3. 1.で作成したディレクトリに画像ファイルを除く全てのファイル(*.cgi、*.pl)をASCIIモードで転送する。
  4. 3.で転送したファイルの内、「pino.cgi」「pinopost.cgi」「pinodelete.cgi」「pinosearch.cgi」の4つのファイルのパーミッションを755に変更する。

    【画像ディレクトリの作成と画像ファイルの転送】

  5. 1.で作成したディレクトリの下に、「images」ディレクトリを作成する。
    このディレクトリの名前(位置も)は、init.cgi内で設定してあるので、もしinit.cgiを変更している場合は、それに合致する名前と場所にして下さい。
  6. 5.で作成したディレクトリに、画像ファイル全て(*.gif)をバイナリモードで転送する。パーミッションの変更はディレクトリ共々必要ありません。

    【データディレクトリの作成】

  7. 1.で作成したディレクトリの下に、「data」ディレクトリを作成する。5)と同様、このディレクトリの名前(位置も)もinit.cgi内で設定してあるので、もしinit.cgiを変更している場合はそれに合致する名前と場所にして下さい。
  8. 7.で作成したディレクトリのパーミッションを777(-rwxrwxrwx)に変更する。

ファイルをアップロードし終えたら、「pino.cgi」を呼び出してテストをしてみて下さい。うまく動かなかった場合は、FAQを読んで間違っているところがないかチェックしてみて下さい。

【FAQ】
Q.記事を保存するファイルは要らないんですか
A.自動的に作られます
投稿された記事を保存しておくファイルは、システムが最初に立ち上がると自動的にデータ保存ディレクトリ(初期状態では「./data/」)に作成されます。ですから、空のファイルを用意するといった作業は必要ありません。
気を付けていただきたいのは、ファイルを自動生成するためにはデータ保存ディレクトリが「不特定多数によって書き込み可能」になっていなければなりません。つまり、パーミッションが「666」になっていなければならないということです。エラーは出なかったが記事が保存されない、という場合にはまずこの点をチェックしてみて下さい。



Q.背景色やアイコンなどをカスタマイズしたいんですが
A.init.cgiを変更してみて下さい
p i n oは、スクリプトの見かけに関しての設定を極力システム自体と分離し、カスタマイズがしやすいように作ってあります。
例えば、init.cgiの中の【HTML BODY COLORSET】の一連の値を変更することで、HTMLのBODYタグに設定できる、背景色や背景画像、文字の色などを自由に設定することができます。また、【ICONs / Images】で指定されているファイルを変更すれば、使用されている様々な画像を自由に変えることができます。ただ、画像を変更した場合は必ずIMGタグの中のサイズ指定(width、height属性)も画像に合わせて変更して下さい。



Q.画面上部のタイトルや説明の文章などを変更したいんですが
A.「tmpl_...」で始まるファイルを変更して下さい
p i n oの画面は、ファイル名が「tmpl_...」で始まるHTMLテンプレートファイルを読み込んで、それをスクリプトの出力と合成して作られています。テンプレートファイルを変更すれば、pinoの画面の様々な部分について改変が可能です。

例えばタイトル部分を変更する場合はtmpl_header.cgiファイルを開き、「header part」以下の部分を自由に書き換えて下さい。この部分のHTMLがそのまま表示画面に反映されます。おっと、タイトル部分を変更したならinit.cgiの中の「$__title」もそれに合わせて変更しておいて下さいね。

ただこの場合、
  1. 「$__HTML_Header = <<"__EOHEADER__" ;」、「__EOHEADER__」などと書いてある行は絶対に変更しない
    この部分を変更してしまうとスクリプトがテンプレートを読み込めなくなってしまいます。
  2. HTMLの中で「$・・・」という風に「$」マークで始まる単語はスクリプトによって置き換えられる変数なので、その名前を変更しない
    例えばtmpl_header.cgiでは、「$_count」という部分がカウンタの値に置き換えられることになっています。
という2点にはくれぐれも気を付けて下さい。特に2.の変数についてはinit.cgiで設定されているものが多いので、そちらと照らし合わせて確認してから変更することをお勧めします。無論、「要らない」というのであれば削除してもスクリプトはエラーになりません(必要な情報が出てこないかもしれませんが)。
ちなみに、各テンプレートファイルの役割はファイル一覧をご覧下さい。



Q.設定変更しようと思ってファイルを開いたら文字化けしてるんですが
A.スクリプトは全て文字コード「EUC」で書かれています
WindowsやMacintosh上での標準文字コードはシフトJISと呼ばれるものですが、p i n oのスクリプトは全てEUCで記述されています。
これは、シフトJISだと
1)ある種の漢字をスクリプトから書き出す場合に文字化けしてしまう
2)検索等で行なうパターンマッチが上手く行かない
という不都合があるためこうしています。
EUCのファイルを開くことが出来るソフトは、Winでは秀丸、MacではJEditなどが有名です。



Q.もう既に「jcode.pl」は設置されてるんですが
A.それを利用できます
既に他のCGIが設置され、jcode.plもアップ済みという場合も多いでしょう。その場合は、parse.cgiの13行目の「require "jcode.pl" ;」を、設置されているjcode.plへのパスに変更して下さい。

なお、pinoと同じディレクトリかもしくはひとつ上のディレクトリにjcode.plが存在する場合は、何の改変もなしに利用できます。お勧めするディレクトリ構造としては、
【cgi-bin】
 │
 ├ jcode.pl
 ├ 【pino】
 ├ 【other cgi dir】
 ├ 【other cgi dir2】
と言った具合に、共通のCGIディレクトリの直下にjcode.plを置き、その下に各CGIのディレクトリを設定してそこから一つ上のjcode.plを利用する、といったものが挙げられます。



Q.投稿すると、「Not Found」とかエラーが出ます。記事自体は投稿されてるんですが?
A.init.cgiの「$__viewscriptname」を変更して下さい
投稿処理スクリプトは、ファイルに投稿を書き込んだ後、init.cgiの「$__viewscriptname」で指定されている表示スクリプト(初期状態では「pino.cgi」)を呼び出しています。サーバによっては、ここの呼び出し処理で、相対パスを渡すとうまく動かないという不具合が発生するため、上記のエラーが起こります。

よって、「$__viewscriptname」の値を、「pino.cgi」という相対URLではなく、「http://www.infofreako.com/pino/pino.cgi」といった「http://」から始まる絶対パス指定に変えていただければこの問題は解決すると思います。




【ファイル一覧】
実行スクリプト
実際にブラウザから呼ばれるスクリプトファイルです。これらのファイルはすべてパーミッションが755になっている必要があります
pino.cgi 表示スクリプト
pinopost.cgi 投稿スクリプト
pinodelete.cgi 削除スクリプト
pinosearch.cgi 検索スクリプト
サブルーチン
実行スクリプトに取り込まれて機能する、各種サブルーチンです。これらのファイルは通常パーミッションの変更は必要ありません(644でOKです)
cookie.cgi クッキーを処理
error.cgi エラー画面表示
lock.cgi ファイルをロックし排他制御を行う
parse.cgi ブラウザからの文字列をデコード
parsebroser.cgi REMOTE_HOST文字列を整形
parsetime.cgi 時刻を整形
jcode.cgi 日本語処理ライブラリ
設定ファイル
pinoの動作についての様々な設定が記述されています
init.cgi 基本設定ファイル
テンプレートファイル
表示画面の元となるHTMLのテンプレートです
tmpl_article.cgi記事内容表示画面
tmpl_error.cgi エラー画面
tmpl_footer.cgi フッタ
tmpl_header.cgi ヘッダ
tmpl_navi.cgi 新規投稿や新しい記事/古い記事ボタン等の各種操作部分
tmpl_password.cgi 削除パスワード入力画面
tmpl_post.cgi 投稿内容確認画面
tmpl_postpage.cgi 投稿内容入力画面
tmpl_timeorder.cgi 時間順表示時のテーブルの最上部
画像ファイル
初期状態で使っている様々な画像です。
paper.gif 背景画像
verline.gif ツリービューの「│」
nodeline.gif ツリービューの「├」
fookline.gif ツリービューの「└」
footstamp.gif ルート記事のアイコン
footstamp2.gif 子記事のアイコン
new.gif 新着記事マーク
lefttry.gif 「新しい記事へ」の左矢印
righttry.gif 「古い記事へ」の右矢印
spacer.gif 整形用の空白画像

【ディレクトリ構成】
【pino】[755]------------------ 任意の名前。パーミッションは755(CGI実行可能)
 │
 ├ pino.cgi[755]               これら4つが実際にブラウザから呼ばれるCGI。
 ├ pinopost.cgi[755]           パーミッションを755にしておく必要がある
 ├ pinodelete.cgi[755]         
 ├ pinosearch.cgi[755]         
 │
 ├ cookie.cgi[644]             上の4つのファイル以外は全てパーミッションは
 ├ error.cgi[644]              初期値(通常644、-rw-r--r--)で構わない
 ├ init.cgi[644]
 ├ lock.cgi[644]
 ├ parse.cgi[644]
 ├ parsebroser.cgi[644]
 ├ parsetime.cgi[644]
 │
 ├ jcode.pl[644]
 │
 ├ tmpl_article.cgi[644]
 ├ tmpl_error.cgi[644]
 ├ tmpl_footer.cgi[644]
 ├ tmpl_header.cgi[644]
 ├ tmpl_navi.cgi[644]
 ├ tmpl_password.cgi[644]
 ├ tmpl_post.cgi[644]
 ├ tmpl_postpage.cgi[644]
 ├ tmpl_timeorder.cgi[644]
 │
 ├ 【images】[644]------------ init.cgi内で「$__imagedir」で指定されている
 │  │                         ディレクトリ。初期値は「images」
 │  ├fookline.gif[644]
 │  ├footstamp.gif[644]
 │  ├footstamp2.gif[644]
 │  ├lefttry.gif[644]
 │  ├new.gif[644]
 │  ├nodeline.gif[644]
 │  ├paper.gif[644]
 │  ├righttry.gif[644]
 │  ├spacer.gif[644]
 │  └verline.gif[644]
 │
 └【data】[777]--------------- init.cgi内で「$__datadir」で指定されている
                                ディレクトリ。初期値は「data」