SquidGuardでリダイレクト先にURLなどの値渡したいときー!
SquidGuardを使って、コンテンツフィルターを行いそれに引っかかった場合、「規制対象サイトです」といったようなエラーページにリダイレクトさせる。
Redirect先のエラーページにに、ブロックしたサイトのURL情報などを渡したいことがしばしばあるはずだ。
そんなときは、Redirect先のURLにGETパラメータで値を渡すことができる。
SquidGuardのDocumentを読もう
珍しく英語のドキュメントをソースにしたのだよアンダーソン君
SquidGuard
http://www.squidguard.org/Doc/redirect.html
Advanced
Instead of displaying a static "You have been blocked" message, you can program a script to do so and tell the user some more information about the blocking. SquidGuard passes the following variables that can be interpreted by the script:
%a Variable that holds the IP address of the client.
%i Variable that holds the user ID (RFC931, LDAP or mySQL) or "unknown" if not available.
%n Variable that holds the domainname of the client or "unknown" if not available.
%p Variable that holds the REQUEST_URI, i.e. the path and the optional query string of %u, but note for convenience without the leading "/".
%s Variable that holds the matched source group (client group) or "unknown" if no groups were matched.
%t Variable that holds the matched destination group (target group) or "unknown" if no groups were matched.
%u Variable that holds the requested URL.
エキサイト翻訳にぶち込んだ
SquidGuard
http://www.squidguard.org/Doc/redirect.html
進められた
表示する代わりに‥‥1つの‥‥静的「妨害された」メッセージ、そうし、かつユーザにブロッキングに関してさらにいくらかの情報を伝えるようにスクリプトをプログラムすることができる。
SquidGuardは、スクリプトによって解釈することができる次の変数を通る:
〜イカ省略〜
分けわからない訳だorz
たぶん、
「ブロックしたよ」というしょうもないメッセージの代わりに、スクリプト組んでブロックした情報を相手に教えることができるよ。SquidGuardは次の変数を通して、スクリプトに解釈させる事ができる。
みたいな感じかな…?
英語わかりませーん
動かせば早い(サンプル)
SquidGuard公式ページの下のほうにあるサンプル、もしくは下記のサンプルをsquidguard.confにはっつける
redirect http://192.168.1.100/squidGuard.cgi?clientaddr=%a&url=%u
こう展開される。
http://192.168.1.100/squidGuard.cgi?clientaddr=192.168.1.6&url=http://mixi.jp/
後はPHPなどで
echo "<h2>下記のURLはアクセス規制の対象です</h2>"; echo htmlspecialchars($_GET["url"], ENT_NOQUOTES, "utf-8"); echo "<h2>アクセスしようとした人</h2>"; echo htmlspecialchars($_GET["clientaddr"], ENT_NOQUOTES, "utf-8");
とかやれば良いんじゃなイカ?