Squirm – Squid用リダイレクタ PSPCF( Proxy Server Plugins Contents Filters )
このサイトは、Squirmの普及を目指す日本語サイトであり、オフィシャルサイトでは有りません。Squirmオフィシャルサイトは、 ここ です。(但し、ここのサイトは2008年12月現在サーバが落ちてます)
Squirm (スクワーム)は、 Squidインターネットオブジェクトキャッシュ のための速くて設定可能なリダイレクタです。 リダイレクタは、 GNU Regexライブラリ (now included in the Squirm source)が必要なことはもちろんですが、 Squid Proxy Service が必須です。それは GNU GPL のライセンスの下で自由に入手可能です。
注:このWebページ文書のバージョン1.0-BetaBです。しかし、実のところ、より新しいバージョンがあります: squirm-1.26 をまだ文書化していません。この新しいバージョンはいくつかの新しい機能を持っています:
■ 新しいsquirm.confファイルは、CIDR表記法のソースネットワークアドレスの種々のセットに基づくリダイレクションリストを許可します
■ オートマチック・アクセラレーター・ストリング・ジェネレーション
■ 簡単な’make’によって編集できる
■ その他小さな特徴
■ システムregexライブラリィ機能を使用してください
1.特徴
Squirmは次の特徴を持っている:
■ 実に速い
■ 実際にはメモリ使用量が殆どない
■ シグナルを送ることによってsquirmが走っている間、コンフィグファイルを再読み込みすることができる
■ 新しいコンフィグをチェックするための対話的なテスト・モードをサポート
■ 完全な正規表現パターンマッチングと交換
■ パターンのためのコンフィグファイルとリダイレクトさせたいネットワークアドレス指定とIPアドレス指定のコンフィグファイル
■ もし、squirmのコンフィグファイルが壊れて、SquirmがDodo Modeへ移行しても、squidは動き続ける事が出来る
既存のリダイレクタスクリプトがあまりに多くのメモリを使用したので、これを切っ掛けに私はsquirmを書き始めました。今いえることは、今までの多くの要求を受け取るSquidの速度は遅過ぎました。
私のPentium Pro200が実行するLinuxでは、 squirm.local と squirm.patterns コンフィグファイルを使用することで何とか毎秒(毎時でいくと5900万行です!)あたり1万6440行、実行します。
これは、regexパターン置換ストリングで、ファイルミラーのような気がきいた処理をして、サイトブロックを置くことができます(これは学校等に有益です)。それにバナー追加書き替えのような事もすることができること、その他色々なことが出来ます。
2.Squirmダウンロード
最新のバージョンで、あなたが正常な gzipped tar file された tar.gz ファイルとしてダウンロードできるのは、squirm-1.0betaBです。
最新のバージョンは、 http://squirm.foote.com.au/ のこのページからいつも利用可能です。(但し、ここのサイトは2008年12月現在サーバが落ちてます)
3.Squirmのインストール
1) Squirm gzipped tar file を解凍します
2) GNU Regexライブラリをコンパイルしてください:
cd regex ./configure make clean make cp -p regex.o regex.h .. |
このステップは少々厄介です。私は、これをsquirmに直接組み込むために設定スクリプトを作ったことのある経験を持っている方々誰でも歓迎します-誰でも?
3) あなたのsquidコンフィギュレーションファイル(通常/usr/local/squid/etc/squid.conf)の cache_effective_user を検索し、そのsquidユーザおよびグループidの下でsquidを走らせてください。(もしsquidがrootとして実行されるとするならば、squirmは動作しないでしょう!)
4) Makefileを編集し、インストールをしてください:
セクション:
あなたは、Squidを実行している権限と同じにインストールユーザidとグループidを変える必要があるでしょう。 (デフォルトはユーザーsquid、グループsquidです)。もし、あなたが/usr/localの中へsquirmをインストールしたくないならば、あなたは、ディレクトリパスを変更する必要があるでしょう。
5) squirmのために上記のMakefileでディレクトリパスを変えたなら、あなたは、ログファイルのために新しいパスを反映するように、ファイルpaths.hを編集する必要があります。
6) “make”とタイプする
7) 「root」にチェンジして “make install” とタイプする
8) 念のためインストールしたsquirmを走らせてみてください:
orbit:/usr/local/src/squirm-1.0betaB# whoami root orbit:/usr/local/src/squirm-1.0betaB# /usr/local/squirm/bin/squirm Squirm running as UID 0: writing logs to stderr Wed Mar 11 13:20:37 1998:unable to open local addresses file [/usr/local/squirm/etc/squirm.local] Wed Mar 11 13:20:37 1998:unable to open redirect patterns file Wed Mar 11 13:20:37 1998:Invalid condition – continuing in DODO mode Wed Mar 11 13:20:37 1998:Squirm (PID 29760) started [Crtl + C] |
(Yep, it did work, the error above indicates that the config files don’t yet exist 🙂
9) 一度、Squirmをup&runningさせます。そして、SquidにSquirmの要求を通す為に、以下のような2、3行のパラメータをあなたのsquid.confファイルに追加する必要が有ります:
redirect_program /usr/local/squirm/bin/squirm
redirect_children 10
チャイルド数はあなたのsquidボックスのロードに依存します。まずは、チャイルド数10で試してすべてのリダイレクタプロセスが使われてしまうようなら、その状態を見るのに cachemgr.cgi のCGIプログラムを使用してください。これに従って、チャイルドプロセス数を上げることが出来ます。
インストールの詳細は、 ここ を参照下さい。私がインストールした経過が全て書き記されています。
4.Squirmの設定
デフォルトで、2個のコンフィグファイルを作る必要があり、それは、以下の説明援助で作成することができます。そのコンフィグレーションファイルは、/usr/local/squirm/etc/squirm.localと/usr/local/squirm/etc/squirm.patternsとして見つけ出すことができます:
1) Local Addresses
あなたは、あなたのクライアントのために squirm.localファイルへクラスCネットワークの略語を記述する必要があります。 以下に例があります:
127.0.0 10.2.3 192.168.1 |
これらは、SquirmがURLを書き直すべきであるかどうか決定するのに使用されます。 通常ICP要求での余分なロードがあなたのマシンをダウンに陥れることにならないように、如何なるSquidを使うご近所さんにもあなたのリダイレクタを使用することができて欲しくないはずです。したがって、それらはこのファイルに書き入れないでください。
上記のconfigファイルで言うと、10.2.3.4からのsquidへの要求が受け入れられる一方、1.2.3.4からの要求は無視されます。
一般に、CIDR表記法を採用する予定はありません。なぜなら、squirmは、情報検索を迅速に処理するために、簡単な整数比較を用いるからです。
2)Squirm Patterns
■ Syntax
squirm.patternsファイルのラインシンタックスはフォームをもっています:
regex|regexi pattern replacement [[^]accelerator_string[$]] or abort .filename_extension regex|regexi |
全てのregexとマッチすることと置換することは、正規表現ライブラリであるGNU Regexを使用して、はじめて利用可能になります。それはパターンバッファもサポートします。
それがケースと敏感に一致したところで、あなたが共通ファイル用のローカルURLへのリクエストを転送したいとしましょう:
regex ^.*/n32e301\.exe$ http://www.mydomain/path_to/n32e301.exe
これは以下を意味しています:
/n32e301.exeに終わるURLをあなたのローカルコピーのURLと置き換えてください。
このケース以外で、大文字・小文字を意識しないで、URLリクエストを転送する場合は、regexの代わりにregexiを使用するとよいでしょう。
regex は case sensitiveの意を表す、大文字・小文字をそれぞれ違うものとして認識する。
regexi は case insensitiveの意を表す、大文字・小文字をそれぞれ同じものとして認識する。
以下は、regexとregexiの機能を比較した検証結果です、参考にして下さい。
検証No | 大文字・小文字の区別 (あり・なし) | squirm.patterns ファイル名 | squirm.patterns ファイルの中身 | ブラウザ入力URL (IE / FireFoxで確認) | リダイレクト する/しない | その他の確認 |
1 | あり | regex_5件 (小文字).txt | regex ^http://adultxdirect.com(.*$) http://redirect/test.html regex ^http://adultxfancy.com(.*$) http://redirect/test.html regex ^http://adultxfilm.net(.*$) http://redirect/test.html regex ^http://adultxfinder.com(.*$) http://redirect/test.html regex ^http://adult-x-fun.com(.*$) http://redirect/test.html | http://adultxdirect.com http://adultxfancy.com http://adultxfilm.net http://adultxfinder.com http://adult-x-fun.com | する | アドレスの一部を大文字 http://adultxdirect.COM 等にした場合もリダイレクトする。 |
2 | regex_5件 (小文字).txt | regex ^http://adultxdirect.com(.*$) http://redirect/test.html regex ^http://adultxfancy.com(.*$) http://redirect/test.html regex ^http://adultxfilm.net(.*$) http://redirect/test.html regex ^http://adultxfinder.com(.*$) http://redirect/test.html regex ^http://adult-x-fun.com(.*$) http://redirect/test.html | HTTP://ADULTXDIRECT.COM HTTP://ADULTXFANCY.COM HTTP://ADULTXFILM.NET HTTP://ADULTXFINDER.COM HTTP://ADULT-X-FUN.COM | する | アドレスの一部を小文字 http://adultxdirect.COM 等にした場合もリダイレクトする。 | |
3 | regex_5件 (大文字).txt | regex ^HTTP://ADULTXDIRECT.COM(.*$) http://redirect/test.html regex ^HTTP://ADULTXFANCY.COM(.*$) http://redirect/test.html regex ^HTTP://ADULTXFILM.NET(.*$) http://redirect/test.html regex ^HTTP://ADULTXFINDER.COM(.*$) http://redirect/test.html regex ^HTTP://ADULT-X-FUN.COM(.*$) http://redirect/test.html | http://adultxdirect.com http://adultxfancy.com http://adultxfilm.net http://adultxfinder.com http://adult-x-fun.com | しない | ||
4 | regex_5件 (大文字).txt | regex ^HTTP://ADULTXDIRECT.COM(.*$) http://redirect/test.html regex ^HTTP://ADULTXFANCY.COM(.*$) http://redirect/test.html regex ^HTTP://ADULTXFILM.NET(.*$) http://redirect/test.html regex ^HTTP://ADULTXFINDER.COM(.*$) http://redirect/test.html regex ^HTTP://ADULT-X-FUN.COM(.*$) http://redirect/test.html | HTTP://ADULTXDIRECT.COM HTTP://ADULTXFANCY.COM HTTP://ADULTXFILM.NET HTTP://ADULTXFINDER.COM HTTP://ADULT-X-FUN.COM | しない | squirm.patternsの「HTTP」を小文字にした状態でも検証したが、リダイレクトしない。 regex ^http://ADULTXDIRECT.COM(.*$) | |
5 | なし | regexi_5件 (小文字).txt | regexi ^http://adultxdirect.com(.*$) http://redirect/test.html regexi ^http://adultxfancy.com(.*$) http://redirect/test.html regexi ^http://adultxfilm.net(.*$) http://redirect/test.html regexi ^http://adultxfinder.com(.*$) http://redirect/test.html regexi ^http://adult-x-fun.com(.*$) http://redirect/test.html | http://adultxdirect.com http://adultxfancy.com http://adultxfilm.net http://adultxfinder.com http://adult-x-fun.com | する | アドレスの一部を大文字 http://adultxdirect.COM 等にした場合もリダイレクトする。 |
6 | regexi_5件 (小文字).txt | regexi ^http://adultxdirect.com(.*$) http://redirect/test.html regexi ^http://adultxfancy.com(.*$) http://redirect/test.html regexi ^http://adultxfilm.net(.*$) http://redirect/test.html regexi ^http://adultxfinder.com(.*$) http://redirect/test.html regexi ^http://adult-x-fun.com(.*$) http://redirect/test.html | HTTP://ADULTXDIRECT.COM HTTP://ADULTXFANCY.COM HTTP://ADULTXFILM.NET HTTP://ADULTXFINDER.COM HTTP://ADULT-X-FUN.COM | する | アドレスの一部を小文字 http://adultxdirect.COM 等にした場合もリダイレクトする。 | |
7 | regexi_5件 (大文字).txt | regexi ^HTTP://ADULTXDIRECT.COM(.*$) http://redirect/test.html regexi ^HTTP://ADULTXFANCY.COM(.*$) http://redirect/test.html regexi ^HTTP://ADULTXFILM.NET(.*$) http://redirect/test.html regexi ^HTTP://ADULTXFINDER.COM(.*$) http://redirect/test.html regexi ^HTTP://ADULT-X-FUN.COM(.*$) http://redirect/test.html | http://adultxdirect.com http://adultxfancy.com http://adultxfilm.net http://adultxfinder.com http://adult-x-fun.com | する | アドレスの一部を大文字 http://adultxdirect.COM 等にした場合もリダイレクトする。 | |
8 | regexi_5件 (大文字).txt | regexi ^HTTP://ADULTXDIRECT.COM(.*$) http://redirect/test.html regexi ^HTTP://ADULTXFANCY.COM(.*$) http://redirect/test.html regexi ^HTTP://ADULTXFILM.NET(.*$) http://redirect/test.html regexi ^HTTP://ADULTXFINDER.COM(.*$) http://redirect/test.html regexi ^HTTP://ADULT-X-FUN.COM(.*$) http://redirect/test.html | HTTP://ADULTXDIRECT.COM HTTP://ADULTXFANCY.COM HTTP://ADULTXFILM.NET HTTP://ADULTXFINDER.COM HTTP://ADULT-X-FUN.COM | する | アドレスの一部を小文字 http://adultxdirect.COM 等にした場合もリダイレクトする。 |
[考察]
1)以上の検証結果より、regex | regexiの違いはsquirm.patternsにあるリダイレクト対象(regexi ^以降)URLの大文字・小文字の区別の有無であることを確認した。
2)squirm.patternsにregexでURLを大文字(検証No3,4)の場合、ブラウザに大文字でURLを入力してもブラウザ上で小文字に変換され、(大文字・小文字の文字の区別を行なっている為に)リダイレクト対象URLとして処理が行なわれていない事が解った。
3)以上のことから、大文字URL表記の誤記を考えるとsquirm.patternsには「regexi」でリダイレクト対象URL「小文字」で登録するほうが安全のように思えることから、あえて大文字・小文字の区別をする必要が無いだろう。
■ Accelerator Strings
アクセラレータストリングを使用すると、基本的にはアクセラレータストリングで提示する文字列を含むURLのパターンを除いてはregexマッチングによる比較を行ないません。最初にsquirmは、アクセラレータストリング対象のURLを特定します、その後、そのURLパターンを適切にregex比較します、それは、Busy boxの多くのCPUサイクルの節約に貢献します。
注意: もし、あなたがbusy boxだったとしたら、できれば毎回アクセラレータストリングを使用するべきです!
上記の実現例として、スピードアップはアクセレータストリング n32e301.exe$ の使用を通じてアーカイブされます。したがって、その時のラインは以下のように見えます:
regex ^.*/n32e301\.exe$ http://www.mydomain/path_to/n32e301.exe n32e301.exe$
アクセレータストリングは、『^』もしくは『$』のそれぞれ、URLの開始と終わりのおおよそのマッチを探すことを示す主要なキャレットを持つことができます。
実際に、AcceleratorStringsを使ってリダイレクトの検証を行った結果 PDFファイル 。
■ Abort Extensions(アボート拡張)
アボート拡張の使用の背景には、あるファイル名の拡張に終わるURLのパターン検索を中止することによって大きなスピードアップが図れると言う理由があります(なぜパターン・リスト全体を詳察するのか。また、それらがとにかく一致しない場合、比較を行うべきか?)。
私達が、.gif拡張子ファイルのためのリストを詳察する必要はないと言えるでしょう。必要なのは下記です:
abort .gif
実際に、AbortExtensionsを使った結果 PDFファイル 。
5.squirm.patterns 事例
1)ISPの為の事例
regexi ^http://tucows\.[^/]*/(.*$) http://tucows.mymirror.com/\1 ^http://tucows. abort .gif abort .html abort .jpg abort .htm regex .*/c16e401\.jar$ http://redirector1.senet.com.au/c16e401.jar c16e401.jar$ regexi .*/c32e401\.jar$ http://redirector1.senet.com.au/c32e401.jar c32e401.jar$ regex .*/cb16e401\.exe$ http://redirector1.senet.com.au/cb16e401.exe cb16e401.exe$ regex .*/cb32e401\.exe$ http://redirector1.senet.com.au/cb32e401.exe cb32e401.exe$ regex .*/cc16e401\.exe$ http://redirector1.senet.com.au/cc16e401.exe cc16e401.exe$ regex .*/cc32e401\.exe$ http://redirector1.senet.com.au/cc32e401.exe cc32e401.exe$ |
最初の行はアクラレータストリング^ http://tucows を含んでいます。URLがそれに合う場合にだけ、Squirmはregex比較をしなければなりません。 これがsquirm.patternsファイルで最初の行であるため、多くの時間をかけてあらゆるURLのためのregex比較をする必要はないのでパワーが節約されます。 (アクセラレータストリングはコンフィグ行としては必須ではありませんが、速度改善としてはかなり大きいです。)
最初のregex比較はtucowsで始まるどんなホスト名にもHTTPに合うケースで無感覚なパターンを使用します。 それは後でURL交換で\1を使用することによって再生されるバッファパターンの中に経路情報を格納します。(最大10回のリプレイが可能です)
それらが、アボート行にリストされたファイル名とマッチしていない限り、アボート拡張は、以下の行のどれも比較が続かないでしょう。要求のまれに起こるファイル名拡張ではなく、アボート拡張子を使用することができる場合で最も頻繁なファイル名拡張を含んでいる方が賢明です。例えば、 .gif、.jpg、.html、.htmはアボート拡張のいい候補です。
2)学校の為の事例(コンテンツフィルタ)
子供達が見ることに適さない素材を含んでおり、それらを返すサイトへのアクセスを妨げる方法を持ちたいと思うでしょう、彼らになり代わって、彼らが妨げられるサイトを要求したことを知ってください。
■ Simple Block List
regexi ^http://www\.playboy\.com/.* http://www/notallowed.html
regexi ^http://www\.xxx\.com/.* http://www/notallowed.html
これは、URL http://www/notallowed.htmlを、http://www.playboy.comまたはhttp://www.xxx.comで始まるURLを頼んでいる誰にでも返します。
サイトがアクセレータストリングの使用を妨げる長いリストの場合に助けとなります。上記の例がそうです:
regexi ^http://www\.playboy\.com/ http://www/notallowed.html ^http://www.playboy.com
regexi ^http://www\.xxx\.com/ http://www/notallowed.html ^http://www.xxx.com
■ Block List with URL notification
「URL http://www.playboy.com/file.jpg は妨げられました」のように結果として表示されるページのように妨げられたURLを入れたいなら、URLをゲットするCGIを作成して、パターン交換に要求を加えればよいでしょう。
regexi ^(http://www\.playboy\.com/.*) http://www/cgi-bin/na?url=\1
これは、例えばリストに追加するために既にあなたが持っていてもよいホストネームリストのためのよい選択であるかもしれません:
cat list-of-banned-sites \ | sed -e “s/\./\\\./g” \ | awk ‘{ print “regexi ^(http://” $1 “/.*) http://www/cgi-bin/na?url=\1” }’ \ >> /usr/local/squirm/etc/squirm.patterns |
さらに、アクセラレータストリングを長い一覧表に追加するのはスピードで助けになるかも知れません。
■ squirm起動時間の遅延
squirm運用上で問題となりうるのは、「起動時間の遅延」である。squirmのテキストデータベースのデータが多くなるとsquirm起動時間が長くなる。以降、この起動遅延について詳細に検証した結果を示す。
起動時間とは、設定したテキストデータベースのパターンファイルで初めてsquidを再起動してデータをメモリへロードしsquirmが利用可能となるまでの時間を意味します。
検証マシンスペック)
CPU : Pentium4 3GHz
メモリ : 1GB
OS : Debian GNU/Linux 4.0 etch
起動時間計測1
検証条件)
子プロセス数 : redirect_children 10
登録件数 | ファイル | (保存)ファイル名 | ファイル中身(記載形式例) | ファイル読込/起動時のlog (squirm.info) | 起動時間(秒) |
1万件 | 10000 lines, 588015 characters | 起動テスト1万件_ squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Thu Aug 16 16:43:28 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Thu Aug 16 16:43:35 2007:Squirm (PID 2834) started | 7 |
1万5千件 | 15000 lines, 881720 characters | 起動テスト1万5千件_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Thu Aug 16 16:49:32 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Thu Aug 16 16:50:18 2007:Squirm (PID 2885) started | 46 |
2万件 | 20000 lines, 1176093 characters | 起動テスト2万件_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Thu Aug 16 16:57:46 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Thu Aug 16 16:59:50 2007:Squirm (PID 2941) started | 124 |
2万5千件 | 25000 lines, 1469153 characters | 起動テスト2万5千_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Thu Aug 16 17:08:26 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Thu Aug 16 17:12:17 2007:Squirm (PID 3005) started | 231 |
3万件 | 30000 lines, 1730973 characters | 起動テスト3万件_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Fri Aug 17 10:29:35 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Fri Aug 17 10:34:39 2007:Squirm (PID 4226) started | 304 |
5万件 | 50000 lines, 2884897 characters | 起動テスト5万件_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Fri Aug 17 11:03:20 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Fri Aug 17 11:29:34 2007:Squirm (PID 2465) started | 1574 |
10万件 | 100008 lines, 5924378 characters | 起動テスト10万件_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Fri Aug 17 11:53:02 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Fri Aug 17 13:11:37 2007:Squirm (PID 2740) started | 4715 |
[考察]
1)パターンマッチングデータが、1万件の場合は起動時間が7秒で、10万件の場合は79分という結果が出ました。10万件迄いくと、データをセットしてsquidを再起動してsquirmが利用できるまでの時間だがメモリロード時間がかなり遅く感じて障害と間違いやすいので注意が必要です。
2)squirmのメモリロード時間で有るため、メモリロード時間経過後の運用にはストレスは感じないのでパターンマッチングデータが増えたときは、squirmの起動時間が影響されるのを認識しておいた方がよさそうです。
起動時間計測2
検証条件)
子プロセス数 : redirect_children 20
登録件数 | ファイル | (保存)ファイル名 | ファイル中身(記載形式例) | ファイル読込/起動時のlog (squirm.info) | 起動時間(秒) |
3万件 | 30000 lines, 1730973 characters | 起動テスト3万件_squirm.patterns | regexi ^http://171203.com(.*$) http://redirect/test.html regexi ^http://1717xxx.com(.*$) http://redirect/test.html | Thu Aug 16 15:54:26 2007:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Thu Aug 16 16:06:22 2007:Squirm (PID 3137) started | 716 |
[考察]
1)子プロセス数を増やすと起動時間が遅くなる結果が出ました。
■ 有害サイトを集めたデータサンプル
コンテンツフィルタとして機能させるには、block listをsquirm.patternsファイルへ書き込まなければならないため、手間がかかります。したがって、有害サイトリストが有ると便利です。そこで、有害サイトのサンプルが以下に有ります。しかし、このデータベースはマッチリストになっていないため、編集が必要です。
有害サイトリストデータ ダウンロードサイト:http://squidguard.shalla.de/Downloads/shallalist.tar.gz
6.squirmの対話的なテスト
squirmがrootで動かされる時は、それは普通、標準のエラーアウトプットに記録されるすべての情報を反映するインタラクティブなモードになります。これは、マシンの現在のsquirmプロセスを再スタートする前にコンフィギュレーションファイルの部分修正としてテストするモードとして使えます。
オプションとして、デフォルトでないならば、任意にあなたはsquirmのパターンコンフィグファイルのパスを供給することができます。
squidは、フォームによって要求を再ディレクタープロセスの標準のインプットに送ります:
URL src_address/hostname ident method
通常、identフィールドはダッシュ’-‘です。 また、squidがプロキシ要求のためのホスト名を調べないように通常構成されるので、通常のホスト名はダッシュです。 方法的にはSquirmがどのようなリダイレクションでもするためには、GETです、そして、src_addressはsquirm.local fileに設定だれているIPアドレスに合わなければなりません。
以下のテキストは、ボールドにおいてマークされてテストするインプットラインで対話的に動くsquirmの例です:
frog:~\:# whoami root /usr/local/squirm/bin/squirm Squirm running as UID 0: writing logs to stderr Tue Mar 10 22:00:34 1998:Loading IP List Tue Mar 10 22:00:34 1998:Reading Patterns from config /usr/local/squirm/etc/squirm.patterns Tue Mar 10 22:00:34 1998:Squirm (PID 16955) started http://tucows.com/downloads/win95/n32e301p.exe 127.0.0.1/- – GET http://tucows.senet.com.au/downloads/win95/n32e301p.exe 127.0.0.1/- – GET Tue Mar 10 22:00:57 1998:http://tucows.com/downloads/win95/n32e301p.exe:http://tucows.senet.com.au/downloads/win95/n32e301p.exe http://www.somewhere.com/path/file 127.0.0.1/- – GET http://www.somewhere.com/path/file 127.0.0.1/- – GET [Ctrl + D] |
代わりに、あなたはシンタックスを使ってファイルからインプットを提供できます:
/usr/local/squirm/bin/squirm < filename
7.Squirmのログファイル
/usr/local/squirm/logsにいくつかのsquidユーザidとrootによって通常、見えているログファイルがあります:
■ squirm.debug
もし編集する時にDEBUGが定義されるならば、冗長な情報を含んでいます
■ squirm.error
無効なコンフィグまたは他の細かい条件のためのメッセージを含んでいます
例えば、squirmのエラーメッセージの例としてsquirm.patternsファイルに一行でも正しく記載されていない箇所があると、squirmのコンフィグファイルが壊れた状態として判断され、squidのみの起動した状態になります。この場合、squirmデーモンは動作してもリダイレクト処理が行なわれません。
エラーとなるsquirm.patternsファイルの内容
regexi ^http://.*gayviolentmovies\.com/.* http://redirect/test.html
regexi ^http://.*gayvipclub\.com/.* http://redirect/test.html
~略~
porm-domain09 ←この一行が記述間違い
~略~
regexi ^http://.*gold10\.com/.* http://redirect/test.html
regexi ^http://.*gold41\.servik\.com/.* http://redirect/test.html
エラーlog内容 ( /usr/local/squirm/logs/squirm.error )
Wed Aug 22 00:15:04 2007:unable to get a pair of patterns in add_to_patterns() for [porm-domain09 ]
Wed Aug 22 00:15:04 2007:Invalid condition – continuing in DODO mode
このlogの直訳は、[ porm-domain09 ]の対になるURLの取得が行なえませんでした。正常な状態ではないので「[DODO mode」で継続します。
■ squirm.fail
URLの長さが短すぎたリスト例 (< 4 chars)
■ squirm.info
squirmの再スタートと再コンフィギュレーション
■ squirm.match
パターン置換のため上手く交換されたshows URLs
尚、/usr/local/squid/logs ディレクトリのSquidが実行するユーザidに対しては書き込み可能でなければなりません。したがって、インストールを実行したとき、あなたはそれを設定しておかねばなりません。
8.Squirmのリコンフィグ
あなたがsquirm.localまたはsquirm.patternsを修正した時には、動作しているsquirmプロセスのすべてをHUPシグナルによって再スタートする必要があります。
(squirmの再起動には、HUPシグナルをsquidに送ることで再起動しますが、これは通常ベストではありません。なぜなら、squidを一定時間動作不能にするからです。)
したがって、Linuxでは以下のようにタイプしてsquirmへ単独にHUPシグナルを与えることで再起動させる方がベストです。
killall -HUP squirm
その他のシステムにおいては、小さいスクリプトを書く必要があるかもしれません:
#!/bin/sh for PID in `ps -aux | grep redirector | grep -v grep | awk ‘{ print $2 }’` do kill -HUP $PID done |
9.クレジットと著作権
Maintained by Chris Foote.
Copyright (C) 1998 Chris Foote & Wayne Piekarski
多くの作者により書かれたGNU Regexライブラリを含みます-詳細のためのregex/AUTHORSを読んで下さい。
このプログラムはフリー・ソフトです;あなたはそれを再配布し、および/または、フリー・ソフト財団により出版されるGNU General Public Licenseの下でそれを修正できます;ライセンス(あなたのオプションで)バージョン2、またはそれ以降。
このプログラムは、これ自身有益であることとWITHOUT ANY WARRANTYという希望において配布されます; MERCHANTABILITYかFITNESS FOR A PARTICULAR PURPOSEの黙示的な保証がなくても。その他の詳細に関しては、GNU General Public Licenseを読んで下さい。
あなたはこのプログラムに伴うGNU General Public Licenseを受け取るべきです ; そうでないならば、Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA に手紙を書いてください。
どうぞ、完全な著作権情報は、ソースディレクトリに置いてあるファイル「GPL」を読んで下さい。
File Last Modified: Aug 21 2005
以上