朝日奈アンテナの使い方(config file)
Version 2.110
1999/09/02
目次
- おそらくここが一番複雑になるのではないかと思います。
- config fileに関して、漢字コードはJIS,Shift-JIS,EUCのどれでも構いません。
- 入力設定ファイルは、内容をそのままに朝日奈アンテナ側で処理を行い出力します。
- 行の内容が以下の条件を満たす時は、朝日奈アンテナがそれらの処理を行います。
- SSIが含まれている場合および一行中で完結する<A HREF>タグが
含まれている場合。(1.2フォーマット参照)
- 行頭文字が !"# のいずれかである場合。(1.0フォーマット参照)
- V1.20から、大幅に書式の異なる「1.2フォーマット」が使えるようになりました。
- これにともない、V1.193以前のフォーマットを「1.0フォーマット」と呼ぶことに
します。
- 1.0フォーマット、1.2フォーマットは同時に作用します。誤動作
(特に<A HREF>タグ)に注意してください。
- 1.2フォーマットを使わない方は、hina.phで無効にしておくと吉でしょう。
- dirpによる通信および%S置換を使用したい場合は、1.2フォーマットを
使用してください。これらの機能は1.0フォーマットではサポートされません。
- $OLDFORMATONLYで無効にしていない場合は、1.2フォーマットでの記述が
有効になります。また、以前のバージョンとの互換のため、1.0フォーマットでの
記述も同時に有効となっています。
- 入力HTMLファイルにおいて、以下の書式が含まれている行は
特殊な処理が行われます。
- <!--#コマンド名 [パラメータ]-->
- SSIと同じ書式ですね。
- <A HREF=... virtual=... >
- いわゆるアンカーですね。1.2フォーマットの特殊書式として認識されます。
AとHREFの間で改行したり、hina.phで1.2フォーマットを無効にすることで
通常のHTMLタグとして扱われます。なお、virtualオプションを使用することによって直接HREFで示すアドレスに朝日奈アンテナでvirtualのアドレスに検索にいきます。
- 書式
- <!--#hina_remote virtual="URL" file="ファイル名" s{$HINA_FILE}="%S置換文字列"-->
-
- 必ず、virtual, file, s{$HINA_FILE}の順に記述してください。
ただし、fileだけは省略可能です。
- 機能
-
- URLで指定された更新時刻情報をhina.phの$DIRで指定したディレクトリ上に
指定したファイル名で保存します。
- <URL>の部分には、取得したい更新時刻情報(通常は
他サイトの朝日奈アンテナの出力でしょう)のURLを指定します。
- <URL>の部分をdirp://サーバ名と指定すると、dirpによる
通信を行います。
- [ファイル名]の部分には、取得した情報を保存するファイル名を
指定します。省略した場合は、<URL>で指定したURLの
「ホスト名.ドメイン名」の部分が用いられます。
- %S置換文字列には、このリモートアンテナから情報を取得した
コンテンツに対する%S置換で置換される文字列を指定します。
- 例
- <!--#hina_remote virtual="http://www.yk.rim.or.jp/~kiwamoto/hina/hina.txt" s{$HINA_FILE}="1"-->
- http://www.yk.rim.or.jp/~kiwamoto/hina/hina.txtの内容を更新時刻情報として
取得し、www.yk.rim.or.jpというファイル名で保存します。また、これに
対応する%S置換文字列を "1" とします。
- <!--#hina_remote virtual="http://www.yk.rim.or.jp/~kiwamoto/hina/hina.txt" file="yk.txt" s{$HINA_FILE}="1"--<
- http://www.yk.rim.or.jp/~kiwamoto/hina/hina.txtの内容を更新時刻情報として
取得し、yk.txtというファイル名で保存します。また、これに
対応する%S置換文字列を "1" とします。
- <!--#hina_remote virtual="dirp://dirp.hauN.or.jp" file="kinofinger.txt" s{$HINA_FILE}="2"-->
- dirp.hauN.or.jpにdirpを用いて接続し、
取得した情報をkinofinger.txtというファイル名で保存します。また、これに
対応する%S置換文字列を "2" とします。
- dirpによる通信時は、If-Modified-Sinceを用いているため、前回取得時から
更新されていない情報は転送されません。
- 書式
- <!--#config timefmt="置換フォーマット"-->
- 機能
-
- <!--#flastmod …-->での時刻の表示フォーマットを指定します。
- 朝日奈アンテナによる置換にも、本来のSSIにもこの設定が有効になります。
- 朝日奈アンテナによる置換の場合には、フォーマット指定は以下のように
なります。SSIに対しては、SSI本来のフォーマット指定として用いられます。
- %a, %Y, %y, %m, %d, %H, %M, %R, %v, %S, %s, %?, %i, {}
- それぞれの意味については1.0フォーマットを
参照してください。
- 書式
- <!--#echo var="変数名"-->
- 機能
-
- SSIと同様に、指定した変数の内容に置換されます。
- 朝日奈アンテナで定義されていない変数名が指定された場合は、
朝日奈アンテナでの置換は行われず、SSIとして処理されます。
- 定義されている変数は以下の通りです。
- HINA_VERSION
- 朝日奈アンテナのバージョンを表します。
- 書式
- <!--#flastmod href= "URL" virtual="URL" key="キーワード" method="メソッド" title="タイトル" authorization="認証キー" -->
- key, method, authorizationは省略できます。
- 機能
-
- URLで指定したコンテンツの更新時刻情報を
取得し、<!--#config timefmt=…-->で指定したフォーマットで出力します。
- URLは、更新時刻を取得したい情報のURLを指定します。
- hrefとvirtualを同時に指定した場合は、virtualで指定したURLの情報を
取得します。
- keyを指定しなかった場合は、HEADリクエストを用いて更新時刻を取得します。
- keyを指定した場合は、GETリクエストを用いてコンテンツを読み取り、
指定されたキーワードの存在する行から更新時刻を解析します。
- キーワードにはperlの正規表現が(多分)使えます。
- メソッドを "R"(小文字可)と指定した場合は、HEAD/GETリクエストによる
情報取得は行わず、これまでに生成された更新時刻情報ファイルおよび
前回の取得結果から得られる更新時刻のうち、最新の値を取得結果とします。
- title指定は、%i置換で用いられます。
- 書式
- <a href="URL1" virtual="URL2" key="キーワード" query="付加文字列" method="メソッド" title="タイトル" authorization="認証キー">
- URL2で指定したコンテンツの更新時刻情報を取得し、URL1?%aに対応するアンカータグを出力します。%aは実際には、更新時刻に対応した8桁の数値となります。詳細は1.0フォーマットを参照してください。
- ただし、queryオプションを指定した場合は、その内容がURLに付加されます。
また、hina.phで$DEFAULT_QUERYを設定した場合は、その内容が、queryオプション省略時の付加文字列となります。
- URL2は、更新時刻を取得したい情報のURLを指定します。
- virtual指定を行わなかった場合は、hrefで指定したURL1で参照されるコンテンツの更新時刻を取得します。
- GETリクエストを用いてコンテンツを読み取り、keyを指定した場合は指定されたキーワードの存在する行から、指定しなかった場合にはLast-Modifiedの更新時刻を解析します。
- キーワードにはperlの正規表現が(多分)使えます。
- メソッドを "R"(小文字可)と指定した場合は、GETリクエストによる情報取得は行わず、これまでに生成された更新時刻情報ファイルおよび前回の取得結果から得られる更新時刻のうち、最新の値を取得結果とします。
- title指定は、%i置換で用いられます。
- authorization指定は認証ファイルにおけるキーを用います。
- 入力HTMLファイルにおいて、行頭文字が以下の場合には
特殊な処理が行われます。
- !
- リモートアンテナからの情報をファイルに出力します。標準出力への
出力はありません。
- "
- 更新時刻取得処理を行い、入力された文字列の特殊文字を対応する
文字列に置換して標準出力に出力します。
- #
- コメント行とみなされます。標準出力への出力はありません。
- !<URL> [ファイル名]
のように記述します。
- URLで指定された更新時刻情報をhina.phの$DIRで指定したディレクトリ上に
指定したファイル名で保存します。
- <URL>の部分には、取得したい更新時刻情報(通常は
他サイトの朝日奈アンテナの出力でしょう)のURLを指定します。ただし、http://は
つけないでください。
- V1.13からは、<URL>にポート番号を含めることができるようになりました。
- [ファイル名]の部分には、取得した情報を保存するファイル名を
指定します。省略した場合は、<URL>で指定したURLの
「ホスト名.ドメイン名」の部分が用いられます。
- (例)
- !www.yk.rim.or.jp/~kiwamoto/hina/hina.txt
- http://www.yk.rim.or.jp/~kiwamoto/hina/hina.txtの内容を更新時刻情報として
取得し、www.yk.rim.or.jpというファイル名で保存します。
- !www.yk.rim.or.jp/~kiwamoto/hina/hina.txt yk.txt
- http://www.yk.rim.or.jp/~kiwamoto/hina/hina.txtの内容を更新時刻情報として
取得し、yk.txtというファイル名で保存します。
-
"[入力テキスト]" [URL] [キーワード] [年フィールド] [月フィールド] [日フィールド] [時刻フィールド] [TZフィールド]
のように記述します。
- URLで指定した情報の更新時刻情報を取得し、入力テキストの
特殊文字列を対応する内容に置換してから標準出力に出力します。
- V1.13からは、<URL>にポート番号を含めることができるようになりました。
- V1.14〜1.16では正しい結果を返さない場合がありました。V1.17では修正されています。
- URLを省略した場合は、更新時刻情報取得は行わず、特殊文字の処理のみを
行ってから出力を行います。
- 入力テキスト内の以下の文字列は、特殊な意味を持ちます。
- %a
- アンカー用更新時刻情報に置換されます。例えば、更新時刻情報が
「8月31日12時34分」の場合は、?08311234に置換されます。
また、更新時刻が不明の場合には?00000000に置換されます。
タイムゾーンはJSTが用いられます。
- 置換後の文字列は、hina.ph中で$DEFAULT_QUERYを設定することにより
定義できます。
- ただし、URLで指定したホストのWWWサーバがCERN httpdまたはMS IISである
場合は、更新時刻情報の内容に関係なく、空文字列に置換されます。
- %Y
- 更新時刻情報の「年」を表す4桁の数字に置換されます。ゼロサプレスは
行いません。なお、更新年が不明の場合は推定値に置換されます。
- %y
- 更新時刻情報の「年」を表す2桁の数字に置換されます。ゼロサプレスは
行いません。なお、更新年が不明の場合は推定値に置換されます。
- %m
- 更新時刻情報の「月」を表す2桁の数字に置換されます。ゼロサプレスは
行いません。
- %d
- 更新時刻情報の「日」を表す2桁の数字に置換されます。ゼロサプレスは
行いません。
- %H
- 更新時刻情報の「時」を表す2桁の数字に置換されます。ゼロサプレスは
行いません。
- %M
- 更新時刻情報の「分」を表す2桁の数字に置換されます。ゼロサプレスは
行いません。
- %R
- %H:%Mと等価です。
- %S
- リモートアンテナから情報を取得した場合に、対応する%S置換文字列に
置換されます。情報取得元がリモートアンテナでない場合には%sと
同じ意味を持ちます。
- %S置換自体は1.0フォーマットでも使用できますが、%S置換文字列の
設定は1.2フォーマットで記述することになります
- %s
- 更新時刻取得に用いた手段を表す文字に置換されます。F,G,H,Rが
それぞれ、「ファイルのタイムスタンプ」「GETリクエスト」
「HEADリクエスト」「リモートアンテナ」を意味します。
V1.10〜1.11では正しい結果を返さない場合がありました。V1.12では修正されています。
- %v
- 朝日奈アンテナのバージョン番号に置換されます。
- %?
- 相手サーバがURLに "?" を含めることを許す、許さないにより、
ヌルまたは "*" に置換されます。置換文字列はhina.phで設定可能です。
- %i{...}
- {...}で指定した内容により、以下の内容に置換されます。
- %i{url}
- 1.2フォーマットにおいてhrefで指定したURL(hrefが未定義の場合はvirtualで
指定したURL)とqueryで指定した文字列(指定されてない場合はデフォルト文字列)を
結合した内容に置換されます。1.0フォーマットでは置換後の内容は不定です。
- %i{title}
- 1.2フォーマットにおいてtitleで指定した文字列に置換されます。titleが
未定義の場合および1.0フォーマットでは、置換後の内容は不定です。
- {...}
- {と}で囲まれた部分は、朝日奈アンテナがメッセージを
発した場合に限り、そのメッセージ文字列に置換されます。
- 入力テキスト中に " (ダブルクォーテーション)記号を含めても
構いませんが、その直後に空白があると、入力テキストの終了と判断される
おそれがあります。
- URLは、更新時刻を取得したい情報のURLを指定します。ただし、/(スラッシュ)で区切られた最初のフィールドの内容が、更新時刻情報ファイルの
ファイル名と一致する場合には、これまでに生成された更新時刻情報ファイル
および前回の取得結果から得られる更新時刻のうち、最新の値を取得結果とします。
- キーワードは、リモートホスト上の情報から更新時刻情報を
得る場合に、HEADリクエストではなくGETリクエストを用いることを示します。
また、コンテンツから更新時刻情報の含まれる行を検索するためのキーワードと
なります。perlの正規表現が(多分)使えます。
- V1.10からは、キーワードに " (ダブルクーテーション)記号を
含めることができなくなりました。(正確には、入力テキスト以外には
含めることができません)
- {年,月,日,時刻,TZ}フィールドは、GETリクエストで更新時刻情報を
得る場合に、行中の何番目のフィールドにその情報が存在するかを示します。
省略した場合は、自動認識を試みます(通常は自動認識でいいでしょう)。
対応するフィールドが存在しない場合は、0を指定してください。
年フィールドは、現バージョンでは意味を持ちません。
フィールドの区切りは基本的には空白文字です。また、コメントタグ以外のHTMLタグ、
数字以外の全角文字、半角の-(マイナス記号)、/(スラッシュ)は
空白文字と同様に扱われます。
- {年,月,日,時刻,TZ}フィールドを明示した場合でも、正常に
更新時刻の認識ができなかった場合は、自動認識に切り替わります。
- (例1)
- "<a href=http://www.hoge.jp/index.html%a> {%m/%d %H:%M} (%s)" www.hoge.jp/index.html
- 更新時刻情報ファイルwww.hoge.jp存在しなければHEADリクエストを
用いて、www.hoge.jp/index.htmlの更新時刻情報を取得します。
更新時刻情報ファイルwww.hoge.jpが存在した場合は、
サーバindex.htmlから情報を取得しようとします
(おそらく失敗するでしょう)。
更新時刻が8月31日12時34分だった場合は、
- www.hoge.jpのHTTPサーバがCERN httpdまたはMS IISでない場合
- <a href=http://www.hoge.jp/index.html?08311234> 08/31 12:34 (R)
- www.hoge.jpのHTTPサーバがCERN httpdまたはMS IISである場合
- <a href=http://www.hoge.jp/index.html> 08/31 12:34 (R)
を標準出力に出力します。
更新情報が選られなかった場合は、(HTTPサーバがCERN httpdまたはMS IISでない
場合)
- 相手サーバに接続できなかった場合
- <a href=http://www.hoge.jp/index.html?00000000>ちょべりばー (R)
- 更新時刻を解析できなかった場合
- <a href=http://www.hoge.jp/index.html?00000000>ちょださー (R)
- 相手サーバからのレスポンスがタイムアウトした場合
- <a href=http://www.hoge.jp/index.html?00000000>もろこみぃ? (R)
- 更新時刻ファイルから情報が得られなかった場合
- <a href=http://www.hoge.jp/index.html?00000000>電波届かなぁい (R)
- コンテンツが見つからなかった場合
- <a href=http://www.hoge.jp/index.html?00000000>どっかいっちゃったぁ (R)
を標準出力に出力します。
- (例2)
- コンテンツに
Last-update: Sat 31-Aug-96 12:34 JST
という行が含まれている場合。(フィールドを明示)
- "<a href=http://www.hoge.jp/index.html%a> {%m/%d %H:%M}" www.hoge.jp/index.html ast 6 5 4 7 8
- (例3)
- コンテンツに
更新時刻: 08/31 12:34
という行が含まれている場合。(フィールドを明示)
- "<a href=http://www.hoge.jp/index.html%a> {%m/%d %H:%M}" www.hoge.jp/index.html \d\/\d 0 1 2 3 0
- "\d\/\d" でなく \d\/\d とする点に注意
- (例4)
- 例2, 3は、自動認識を用いるとこれで済みます。
- "<a href=http://www.hoge.jp/index.html%a> {%m/%d %H:%M}" www.hoge.jp/index.html \d\/\d
- 使用方法:hnpasswd.pl パスワードファイル ラベル名 ユーザー名 パスワード
- パスワードファイル:$AUTHFILEで指定したファイル
- ラベル名:1.2フォーマットでAUTHORIZATIONで指定
- ユーザ名、パスワード:アクセスするサイトのユーザ名とパスワード
- V1.975から.htaccessと.htpasswdで認証を行っているサイトへアクセスして時刻を取得することができるようになりました。
- 実はV1.20から実装していたのですが、同一URLに対しては
更新時刻情報をキャッシュするようにしているため、一度の処理中に
同一URLで参照されるコンテンツの更新時刻を何度調べても、HTTPリクエストは
一度しか行いません。
- <A>タグにおいて、virtual指定を行った場合には、
取得した情報は、hrefで指定したURLとvirtualで指定したURLの両方に
対応する情報としてキャッシュされます。