npc.cgi
の動作を制御するパラメータには、
主に表示機能の制御を行なうための
オプションと
設定ファイル中で
それらのオプション指定を取捨選択するための
制御タグとがあります。
使用出来る全てのオプション/タグは
タグ一覧にリストしてあります。
Indexオプション、 Helpオプション以外の オプションはCGIやコマンドに対する引数としても 設定ファイル中でのタグとしても使用できますが、 制御タグは 設定ファイル中のみで使用可能です。
パラメータの評価順は 基本的には (設定ファイル → 引数) です。 複数回同じパラメータが設定されると後から設定された値が有効になります。 つまり、設定ファイル中での設定を引数で変更することが可能です。 ただし、RESTRICTionタグを用いて、 引数での変更を禁止することも可能です。 またModeオプションのみは 引数が最初に評価されます。
オプション文字列は省略記法が使えます。 オプション文字列のうち小文字で記述してある部分は省略可能です。 また、大文字/小文字の区別はありません。 つまり、Helpオプションなら、
HELP help h
など何れの記述でも認識されます。
オプションでは主に設定ファイルの指定とカウンタ自体の動作を制御します。 その他にも動作試験などに使用するオプションがあります。
以下にそれぞれのオプションの詳細機能を解説します。
設定ファイル名を指定します。
省略時は "npc.idx"
です。
ファイル名が "/"
で始まっているときは、
絶対パスでの指定になります。それ以外の時には、
コンパイル時に決まる設定ファイルディレクトリからの相対パスとなります。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?I=www2.idx&L=test&P=OFF">
設定ファイルはIndexオプションではなく、 CGIプログラムへのパス変数の形で与えることも出来ます。 この場合パスは設定ファイルディレクトリからの相対パスではなく、 サーヴァ側の解釈に従います。
例えば、NCSA-httpd を使っている場合、
<IMG SRC="/%7Enir/cgi-bin/npc.cgi/%7Enir/npc/counter.idx?L=... >
とした場合、ユーザnir
のホームペーヂの下の
"npc/counter.idx"
が
設定ファイルとして使われます。
ユーザの設定ファイルを使う時には、 サーヴァプログラムが読み書き出来る様に 設定ファイルのパーミッションを変更するのを忘れないで下さい。
当然、Indexオプションは 設定ファイル中では使えません。
カウンタに登録するアクセス元のエントリ名です。 通常はカウンタを利用しているペーヂの位置を書きます。 単に文字列比較でアクセス元を決めているため、 特にペーヂの位置である必要は無いですが、 公開カウンタ等を使う場合など、 他との重複を避けるためにペーヂをURL記法で書くのが良いでしょう。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?L=http://www2.meshnet.or.jp/%7Enir/npc/options.html">
Numberオプションや RANdomオプションで 表示する数が決定出来る場合を除き、 Locationオプションは (引数か設定ファイル中で) 明示的に指定することが必要です。
カウンタが実際に回転している様にアニメーションさせます。 省略時はOFFです。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?N=123&P=ON">
アニメーションモードには 2種類あり Animationオプションで 選択できます。
アニメーションモードにServer Pushモードを選択した場合、
アニメーションは "Content-type:
multipart/x-mixed-replace"
の
GIFファイルを出力することによって行なっていますので、
Server Pushが理解できないブラウザでは表示できません。
BROWSERオプションで
ブラウザの種類を調べて
Server Pushを理解出来るブラウザの時だけONに切り替える様にして下さい。
アニメーションにGIF Animationモードを選択した場合は、 アニメーションが表示できないブラウザでもエラーにはなりませんが、 その場合、最初のフレームが表示されたままになるので、 本来よりひとつ少ないカウント値で 表示されることになります。
Progressオプションで カウンタを動かす時に使用するアニメーションモードを選択します。 現在選択できるモードは 2 つあります。
S
= server pushによる
multipart GIFファイル出力。G
= GIF89aの
アニメーションモードによる出力。<IMG SRC="/%7Enir/cgi-bin/npc.cgi?L=anime&I=www2.idx&A=G&P=ON&D=1000,10">
省略時はGIF89aのアニメーションモードが選択されます。 (Ver.0.82以降変更になりました)
ProgressオプションがONに なっている時に意味を持つ、数字のアニメーション速度を設定します。
アニメーションの速度は、連続的に変わる数字画像間の描画間隔を伸ばすことで 遅くなります。Delayオプションでは各画像間の時間間隔を ms単位で指定出来ます。省略時は 0ms です。
Animationモードが
"S"
(server push)の場合には
サーヴァからブラウザに伝送する間隔を変えることによって、
"G"
(GIFアニメ)の場合には
ブラウザが画像を描画する時間間隔を指定することによって、
動作速度を制御しています。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?N=123&P=ON&D=1000,10">
最初の数が1枚目から2枚目までの時間遅れ、 2番目の数が2枚目以降の時間遅れです。 2番目の数は省略出来ます。その場合、 1枚目から2枚目までの時間遅れが 2枚目以降の時間遅れにも適用されます。
カウンタの動く向きを、-1、0、1、のいずれかで指定します。 省略時は1です。 -1 が指定されている時に、 カウンタが 0 に戻ってしまうとそれ以上は戻りません。 (負にはなりません)
Incrementが0だとカウントアップしないため、 Progressオプションは 無効になります。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?L=test&INC=0">
新たにカウンタを登録する時に設定するカウントの初期値です。 省略時は 1 です。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?L=RenewalPage&INIT=12345">
既に登録されているカウンタに INITialオプションを設定しても無視されます。
カウンタを任意の数で表示することが出来ます。 Progressオプションを 併用すれば、 カウントアップ(ダウン)してその数になった様に見えます。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?N=999&INC=-1&P=ON&A=G">
ランダムな数を表示します。省略時はOFFです。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?RAN=ON&P=OFF">
内蔵数字フォント0〜3の選択をします。 省略時はフォント0が使われます。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?DI=0&N=123456789&W=10&P=OFF">
(16ドット×16ドット)
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?DI=1&N=123456789&W=10&P=OFF">
(14ドット×14ドット)
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?DI=2&N=123456789&W=10&P=OFF">
(14ドット×14ドット)
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?DI=3&N=123456789&W=10&P=OFF">
(14ドット×14ドット)
上の例で括弧内の数は数字一文字の大きさです。
数字の前景色、 背景色を設定します。 設定された 2色の間で連続した階調を作り、 数字の文字の部分を前景色、 地の部分を背景色として、 輝度の変化に応じて色を割り付けます。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?C=FFDD77,660000&N=12345&P=OFF">
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?C=007733,AAFFAA&DI=2&N=890123&P=OFF">
色はRGB値を6桁(RRGGBB
)の16進数で表わします。
最初の数は前景色を、2番目の数は背景色を表わします。
背景色が省略されると白(FFFFFF
)が使われます。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?C=0033FF&DI=3&N=987654&P=OFF">
透明色を設定します。 透明色はRGB値で設定するのではなく、 数字画像のカラーマップ番号(カラーパレット番号)で 設定する事に注意して下さい。 なお、内蔵数字の前景色はすべて7番、背景色はすべて0番になっています。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?T=0&C=008800,F8F8F0&DI=2&N=345678&P=OFF">
上の例のように、あらかじめ ペーヂの背景に数字の背景色を合わせる事によって、 綺麗に数字の輪郭を溶け込ませることが出来ます。
表示する桁数を指定します。 省略時は5桁になります。 最大で10桁(231)まで表示できます。 (例はUnitオプション参照)
数字の表示領域の高さをドット単位で設定します。 省略時は1つの数字の大きさとなります。 Offsetオプションと併せて、 表示範囲の調整が出来ます。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?N=123&P=OFF&O=-6&U=28&W=3">
表示領域のオフセット値をドット単位で指定します。 省略時は0です。
数字の表示開始位置を下にずらすにはオフセット値を正に取り、 上にずらすには負に取ります。 Unitオプションと 併せて使用することにより表示範囲の調整が出来ます。 (例はUnitオプション参照)
カウンタの動作モードを選択します。省略時は 0 です。
Modeオプションで選択した動作モードは、 設定ファイル中で 制御文の条件分岐に使用できます。 これにより、あらかじめ設定しておいた複数の動作モードのうち 特定のものを選択して実行することが出来ます。 具体例は設定ファイルの項を参照して下さい。
カウンタのヴァージョンと、 そのヴァージョンで使用可能なオプション(タグ名)の一覧を表示します。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?H">
設定ファイル中では使えません。
オプションのパラメータに環境変数名が指定されると、 環境変数名とその内容を表示します。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?ENV=HTTP_USER_AGENT">
パラメータを省略すると、
現在設定されているすべての環境変数を表示します。
(現在、画像は無圧縮モードで出力されサイズが大きいため、
あらかじめ出力した物を再圧縮して張り付けていますので、
この出力例は、現在設定されている環境変数の値とは違います)
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?ENV">
設定ファイル中で全ての環境変数を表示するモードを使いたい場合は、
明示的にパラメータとして ""
(空白文字列) を
与える必要があります。
デバッグ用です。通常は使いません。 オプションのパラメータとして他のオプションを指定することにより、 デバッグオプションが与えられた時点での設定状態を確認できます。 パラメータがオプション名に一致しない場合には、 与えられたパラメータ文字列自身を表示します。
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?DEBUG=ADDR">
<IMG SRC="/%7Enir/cgi-bin/npc.cgi?DEBUG=You+Can+Print+ANY+Message.">
制御タグは設定ファイル中で使われ、処理の流れを制御したり、 制限レヴェルを設定したりするのに使われます。 これらのタグ使用の具体例については 設定ファイルの項を参照して下さい
以下にそれぞれの制御タグの詳細機能を解説します。
制御文は処理の流れを制御します。 基本的な制御文の構造は、
=IF=条件 値 =他のタグ . (IFの実行部) . =ELSIF=条件 値 =他のタグ . (ELSIFの実行部) . =ELSE =他のタグ . (ELSEの実行部) . =ENDIF
の様になります。 特殊制御文と異なり、 制御文はネスト(入れ子)にも出来ます。
IFで始まり、ENDIFで終わる ひとまとまりの制御文は、一つの制御ブロックとして扱われます。 制御文に続き同じネスト階層にある次の制御文が現われるまでの部分が 各制御文の実行部となります。
条件が満たされた時に限り、実行部を評価します。
IFは一つの制御ブロックの最初にしか使えません。 制御ブロックの中に再びIFが現われた時は、 もう一段深くネストした制御ブロックの始めと見なされます。
同じ制御ブロックに属していて、これ以前に現われたIF、 ELSIFの何れの条件も満たされなかった場合、 このELSIFの条件が評価されます。 そして条件が満たされた時に限り、実行部を評価します。
ELSIFは一つの制御ブロックで何度でもくり返し使えますので、 任意個の条件分岐が記述出来ます。
同じ制御ブロックに属していて、これ以前に現われたIF、 ELSIFの何れの条件も満たされなかった場合、 実行部を評価します。
ELSEは一つの制御ブロックの最後に1回だけ使えます。
一つの制御ブロックの終わりを示します。 ENDIFは値を後置しません。
制御文の中で条件を指定するのに使われます。
基本的な制御関数の構文は、
=IF=制御関数=引数 値
となります。
オプション値を評価します。 また、アクセス制限レヴェル設定を 評価する事も出来ます。
引数に評価したいオプション名を取ります。 そのオプションに代入する時の形式で値を指定出来ます。 オプションが文字列の時には、値には正規表現が使えます。
例えば
=IF=OPT=MODE 1
では、オプションMODEの値を
1
と比較し、一致していれば真になります。
オプション値参照制御関数は 常に省略可能です。 つまり、上の例で言えば、
=IF=MODE 1
と書いても等価です。
環境変数を評価します。 引数に評価したい環境変数名を指定します。
例えば以下の様に書けます。
=IF=ENV=HTTP_PRAGMA no-cache
比較文字列には正規表現が使えます。
この例で言えば、環境変数HTTP_PRAGMA
に
no-cache
と言う文字列が含まれている場合真になります。
比較文字列の値にかかわらず真になります。 任意の引数を取る事が出来ます。 強制的に条件実行部を評価させる事が出来るので、 設定ファイルの動作試験の時などに有用です。
例えば
=IF=TRUE=ADDR 123.45.67.89
なら、どのアドレスからのアクセスにかかわらず、 条件が満たされることになります。
比較文字列の値にかかわらず偽になります。 任意の引数を取る事が出来ます。 強制的に条件実行部を評価させ無い事が出来るので、 設定ファイルの動作試験の時などに有用です。
例えば
=IF=FALSE=OPT=MODE 1
なら、MODEにたとえ 1
がセットされていても、
条件は満たされ無いことになります。
特殊制御文は基本的には制御文と 環境変数参照制御関数の組と同様の制御をしますが、 制御文とは違い 同種の制御文をネスト(入れ子に)する事は出来ません。 条件は各特殊制御文に最適な書式で比較することが出来ます。
特殊制御文はオプション参照制御関数の引数として 用いることも出来ます。 つまり
=特殊制御文 値
と言う条件文は
=IF=OPT=特殊制御文 値
と言う構文で同じ条件分岐が行なえます。 もちろん制御文との組み合わせでは、 特殊制御文に於けるネスト制限はありません。
また、オプション参照制御関数は 常に省略できますから、
=IF=特殊制御文 値
と書いても等価です。 特殊制御文の単独使用は 旧版との backward compatibility のため残してあるだけですので、 なるべく制御文、 オプション参照制御関数と 組み合わせて使って下さい。
設定ファイル中で使用します。
WWWブラウザのアドレスによって動作を選択するためのタグです。
REMOTE_ADDR
環境変数を
参照します。
アドレスの省略記法には
すべてにマッチする
"*"
と、
範囲にマッチする
"[XXX-YYY]"
が使えます。
例えば
=IF=ADDR 10.*.*.* 172.[16-31].*.* 192.168.*.*
なら、private address からのアクセスに 一致することになります。
設定ファイル中で使用します。
WWWブラウザの種類によって動作を選択するためのタグです。
ブラウザが設定するHTTP_USER_AGENT
環境変数を
参照します。選択文字列には正規表現が使えます。
例えば
=IF=BROWSER ^Mozilla/.*; MSIE
なら、Microsoft Internet Explore からのアクセスに 一致することになります。
設定ファイル中で使用します。
WWWブラウザのホスト名によって動作を選択するためのタグです。
REMOTE_HOST
環境変数を
参照します。
ホスト名は正規表現で記述出来ます。
例えば
=IF=HOST \.co\.jp$ \.com$
なら、*.co.jp、*.com からのアクセスに一致することになります。
但し、サーヴァによっては
DNSによる名前解決をしない所もありますが、
その場合には、REMOTE_HOST
環境変数には
生にIPアドレスが入っているため注意が必要です。
また、名前が引けなかったホストからのアクセスの場合も
やはり生にIPアドレスが入っています。
設定ファイル中で使用します。
カウンタをリンクしているペーヂによって動作を選択するのに使います。
ブラウザが設定するHTTP_REFERER
環境変数を
参照します。
REFererを適切に設定することにより、
Counter Terroristからの
アクセスを排除することが出来ます。
REFererには正規表現が使えます。
例えば
=IF=REFERER ^http://www2\.biglobe\.ne\.jp ^http://www2\.meshnet\.or\.jp
なら、Biglobe User WWWサーヴァ1号機にある ペーヂからのリンクに相当します。
設定ファイル中で使用します。 アクセス制限レヴェルを設定します。省略時は 0 です。 レヴェルによって以下の様に動作がかわります。
0
= 制限無し。すべての機能が使えます。1
= 設定ファイルでの指定のみ有効で
オプション指定は無効になります。
ただし、
Location、
Number、
RANdom
の3つのオプションに関しては、
それらのうちどれも設定ファイル中で指定されていない場合に限り、
CGIのパラメータに与えたオプションが有効になります。2
= カウンタが使用禁止になります。カウンタが使用禁止になっている時には、カウント値の代わりに 利用禁止メッセーヂが 表示されます。
設定ファイル中でこのタグが現われた行以降が、 カウント件数記録に使用されます。 このタグ以降はプログラムが読み書きするので、 以降の行を編集する時は元のフォーマットを崩さないように注意して下さい。
カウント値のフォーマットは、
0000012345 http://www2.biglobe.ne.jp/~user/page/
の様になっており、 《10桁の数字、1文字の空白文字、カウンタエントリ、改行》で 構成されています。 改行はサーヴァのOSに自然な改行が使われ、必ず必要です。
以上に示したオプションをアルファベット順に示します。 括弧の中に各オプションの省略時の値を示します。 (Ver.0.82以降に追加されたオプションには マークを付けてあります)