登録されている Web ページの更新時間を取得します。
つまりは Web アンテナ。
- GET/HEAD リクエストを使って、指定した Web ページの更新時間を取得します。
- URL リストに載っている Web サイトを取得した更新時間順に並べ、HTML ドキュメントとして吐き出します。
- ヘッダー内に Last-Modified が無い Web サイトについては、GET メソッドを使用してドキュメント内の特定の単語を参照し、それを更新時間とします。
- Caladium 管理者が記述した外部 Last-Modified 検索エンジンを使用することにより、Caladium がデフォルトで持っている Last-Modified 検索エンジンを拡張することが可能です。
- HTML コンテンツの過去取得分と差分を取り、変化率を見て Last-Modified の変わりにする比較チェックを行うことが可能です。
- PROXY に対応しています (PROXY 経由のコンテンツ参照が可能)。
- マルチプロセスで動作するため、複数の Web サイトを同時に参照できます。
- 1つの URL リストファイルと 1つのグループファイルを用意することにより、複数のグループを管理することが出来ます。
Perl version: 5.008008 (5.8.8)
5.008005 (5.8.5)OS: FreeBSD 6.1-RELEASE-p11
Solaris 8PROXY server: NetCache
Squid 2.4.STABLE1
- Last-Modified
- HTTP サーバーは Web コンテンツの最終更新日を HTTP ヘッダ内の Last-Modified で返してきます。
カラジュームはこの Last-Modified を見て最終更新日を判断しています。
どういう情報を返すか興味のある人は、telnet で以下のようなコマンドを実行してみると良いでしょう。
(太文字が入力するコマンドです)
a:\>telnet griffonworks.net 80ただし、SSI が有効になっていると Last-Modified が吐かれないので、Apache なら
Trying 210.166.203.153...
Connected to griffonworks.net.
Escape character is '^]'.
HEAD / HTTP/1.0
Host: griffonworks.net
Connection: close
HTTP/1.1 200 OK
Date: Mon, 15 Jan 2007 06:36:20 GMT
Server: Apache
Last-Modified: Fri, 17 Nov 2006 13:46:26 GMT
ETag: "249ddd-119b-455dbd32"
Accept-Ranges: bytes
Content-Length: 4507
Connection: close
Content-Type: text/html
ディレクティブの Options オプション内の Includes を削除してください。 Last-Modified を HTTP ヘッダで見るような設定をしていた時、HTTP ヘッダ内に Last-Modified が見つからない場合は、Caladium は「ドキュメント内の更新情報」で Last-Modified となるような日付を探そうと試みます。
- ドキュメント内の更新情報
- ヘッダ内に Last-Modified が見つからなかった場合 (CGI や SSI でページが出力されている - GeoCities など) は、HTTP ヘッダに Last-Modified が出力されません。
その場合はドキュメント内にある一定の条件を満たした日付を Last-Modified として認識するようになっています。
2007年1月15日現在では以下のようになっています。
ドキュメントを 1行ずつ読んで行き、以下の文字列が見つかれば、その中の日付を Last-Modified として使用します。ドキュメント内の更新時間は先頭から検索され、見つかり次第検索を終了します。
タイムゾーン文字列 (GMT、JST など) が指定されている場合はそれを参考にして JST に変換しますが、指定されていない場合は JST とみなします。- <dc:date>YYYY-MM-DDThh:mm:ss[+-]HH:MM)<\/dc:date>
例)<dc:date>1970-01-01T09:00:00+09:00</dc:date>- <meta +http-equiv="Last-Modified" +content="WWW, DD MMM YYYY hh:mm:ss GMT">
- ユーザーオリジナル判定エンジン
- このメソッドは拡張スクリプト chk_routin.pl により実現できます。
本体側で更新時間が取得できなかった場合は、ユーザーが作成した更新チェッカルーチンを使用することも出来ます。
このオリジナルチェッカは「ドキュメント内の更新情報」のサブセットとして存在する位置づけになります。
ユーザーが独自でドキュメント内の Last-Modified となるような文字列を探すことが出来る Perl スクリプトを書くことが出来るならば、chk_routin.pl にそのスクリプトを書くことにより、ドキュメント内から Last-Modified となる文字列を抽出することができます。
これにより、ユーザーはユーザーが独自に本体に書き加えた Last-Modified の抽出ルーチンの消滅を気にすることなく Caladium のバージョンアップを行うことが出来ます。
この更新チェッカルーチンが存在しなければ、Caladium は「ドキュメントの内容変化」を使って更新チェックを試みます。- ドキュメントの内容変化
- このメソッドは拡張スクリプト chk_body.pl により実現できます。
GET メソッドで、HTTP ヘッダを除く HTTP BODY 部を比較します。
前回取得したドキュメントと、チェック時に取得したドキュメントを CRLF|CR|LF|<br>|<p> でぶつ切りにし、その文字列比較を行います。
更新判断は、全体の何 % が更新されているかをチェックし、初期設定ではこの値は 5% に設定されています。
(しきい値は caladium.cfg で設定可能です) 更新が確認されると、更新が確認された日時を更新時間として使用します。
もし更新が見られない場合は、前回の分の更新時間を継続利用します。
雛形ファイルは、内部に記述されている特殊タグを使用することでそのタグに応じた内容で置換できるようになっています。
雛形ファイルには通常の HTML 文法がそのまま使用できます。以下の特殊タグが使用可能です。
- <CLDlastupdate>:実行日時
- <CLDproctime>:処理時間
- <CLDgroup> 〜 </CLDgroup>:グループ
- <CLDgroupName>:グループ名
- <CLDgroupND>:グループ ID
- <CLDresult> 〜 </CLDresult>:結果グループ
- <CLDresultLastModified>:最終更新日
- <CLDresultGetProcTime>:チェック処理時間
- <CLDresultMethod>:取得メソッド兼取得フラグ
- <CLDresultLinkURL>:URL
- <CLDresultTitle>:タイトル
- <CLDresultAuthor>:所有者名
- 今のところ無しと思われる。
- Rev-3.0.0 BETA-0
- ゼロから新規に書き直し。
- Rev-2.0.0 BETA-21
- あまりにも core を吐き続けるので、自作 HTTP 取得エンジンを HTTP::Lite に変更。
- Rev-2.0.0 BETA-19
- 更に更新日付が上手く取れていないときがあったのでそれの修正。
- core を吐くバグの一部修正。
- Rev-2.0.0 BETA-18
- 更新日付が上手く取れていないときがあったのでそれの修正。
- Rev-2.0.0 BETA-17
- core 吐いて落ちまくっていたので、waitpid() するところで 0.5秒のウェイト入れてみました。
- Rev-2.0.0 BETA-16
- 子プロセス処理のさらなる最適化。
- Rev-2.0.0 BETA-15
- libcaladium.pl Rev-20020919.1411
- 新方式に合わせた修正。
- *.pl
- デバッグログ出力方法変更。
- sstp.pl
- タイムアウトを見るように変更。
- カラジュームについて
学名: Caladium (サトイモ科の観葉植物) 別名: ハイモ (葉芋)、ハニシキ (葉錦) 原産地: 南アメリカ熱帯地方 花言葉: 喜び 花誕生日: 9月3日
観葉植物でもよくあるものですね。
以前は我が家にもありましたが、今はもうありません。
- 原産地
Web: GRIFFON Works WebMaster: G兄 <griffon@griffonworks.net>
←戻る |