備忘録です。
apacheのモジュールの作り方。
1.ひな形の作成 httpd-develとかに入っているはず
$ apxs -gn [hoge]$ cd [hoge]
$ make
$ sudo make install
make install は他のモジュールと同じ場所にコピーしてくれる。confは別途書く必要がある。
2. ソースコードをいじる
$ vi mod_[hoge].c
return DECLINED;
で、次のモジュール、処理に続く。それ意外OKとかを返すと、そのチェーンが切れる。
Debugはやりづらいので、logに出す。
#include "http_log.h"...
ap_log_rerror(APLOG_MARK, APLOG_CRIT, 0, r, ....
Apache環境変数やHTTPヘッダーはapr_table_ 系の関数で取得可能。新規変数の追加などもmallocは必要なく、関数内でよくやってくれる。
apr_table_get(r->headers_in, "X-Forwarded-For");apr_table_set(r->subprocess_env, "X_REMOTE_HOST", host->h_name);
headers_in は http-headerの外から来たもの。ここに追加することも一応できる。
subprocess_envは apache環境変数。ただ、内部の複雑な処理のために、これらプリセット以外の単純なmallocのハッシュテーブルみたいに使いたいなら、自分でmalloc相当をしてやる必要がある。
[参考]
http://kurukurupapa.hatenablog.com/entry/20080114/1200311424