Apacheモジュールを作成するのは初めてで、helloworldプログラムを終了したところです。
次の値を取得する必要があります。
- 1リクエストの長さ(私はそれがURiの長さであると思います、r-> uri)が間違っている場合は私を修正します
- 2応答長
- 3リクエストデータ
- 4つの応答データ
そして、それをログファイルに保存します。
server_rec、request_rec、connection、processのすべての基本構造を確認しましたが、これを実現する方法がわかりません。
私はこれが基本的であることを知っていますが、上記の結果を私に与える記事を見つけることができませんでした:(
以下は私のhelloworldサンプルです:
/* The simplest HelloWorld module */
#include <httpd.h>
#include <http_protocol.h>
#include <http_config.h>
static int helloworld_handler(request_rec *r)
{
if (!r->handler || strcmp(r->handler, "helloworld")) {
return DECLINED;
}
if (r->method_number != M_GET) {
return HTTP_METHOD_NOT_ALLOWED;
}
ap_set_content_type(r, "text/html;charset=ascii");
ap_rputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n",
r);
ap_rputs("<html><head><title>Apache HelloWorld "
"Module</title></head>", r);
ap_rputs("<body><h1>Hello World!</h1>", r);
ap_rputs("<p>This is the Apache HelloWorld module!</p>", r);
ap_rputs("</body></html>", r);
return OK;
}
static void helloworld_hooks(apr_pool_t *pool)
{
ap_hook_handler(helloworld_handler, NULL, NULL, APR_HOOK_MIDDLE);
}
module AP_MODULE_DECLARE_DATA helloworld_module = {
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
helloworld_hooks
} ;
出力をテキストファイルに保存することはできますが、上記のフィールドを取得できませんでした。