続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

apacheモジュールの自作

備忘録です。

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