NET/www
の編集
https://over.6pb.info/wiki/?NET/www
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
**アクセス監視(自動化) [#abba7f82] 直接どこからもリンクされていないページを見られていたことに偶然気付いた。アクセス制限(認証等)をする内容ではない。さて、ログを随時確認(監視)する、というようなことは自動化すべきなので、特定のディレクトリ(あるいはその他条件)に合致するアクセスがあったらメールで通知が来るように設定した。やりかたは色々あるだろうけど、対象ファイルに、それ自体を加工できないものも含まれているので、ファイル側を一切いじらなくても済む方法として、Apacheの[[パイプ経由のログ:https://httpd.apache.org/docs/current/ja/logs.html#piped]]機能で外部プログラムを呼ぶことにした。 パイプ経由のログ機能はログを加工するために用意されたのだろうけど、今回の用途にも特に問題なく使える。本来のログへの影響は[[Apacheの仕様>NET/サーバー#madeas]]を参照。 -httpd.confやvhost.conf #pre{{ SetEnvIf Request_URI "^/hoge/" mail CustomLog "|/スクリプトpath" combined env=mail }} -スクリプト #pre{{ #!/usr/bin/perl $| = 1; while (<STDIN>) { my $sendmail = "/usr/sbin/sendmail -t admin"; my $headers = <<'END'; To: admin Subject: 適切なもの(ascii文字で) END my $body = $_; open (SENDMAIL, "| $sendmail"); print SENDMAIL $headers; print SENDMAIL "\n"; print SENDMAIL $body; close(SENDMAIL); } }} この例だと、通常のApacheログ一行分(combined書式)が$bodyに入る。command injectionに注意。
タイムスタンプを変更しない
___paraedit_taxtarea___
テキスト整形のルールを表示する