Linux Apache2 modsetproctitle
Appearance
/* The code for Apache1 can be found at dammit.lt */
/* ** mod_proctitle.c -- Apache sample proctitle module ** [Autogenerated via ``apxs -n proctitle -g] ** ** To play with this sample module first compile it into a ** DSO file and install it into Apache's modules directory ** by running: ** ** $ apxs -c -i mod_proctitle.c ** ** Then activate it in Apache's httpd.conf file for instance ** for the URL /proctitle in as follows: ** ** # httpd.conf ** LoadModule proctitle_module modules/mod_proctitle.so ** ** Then after restarting Apache via ** ** $ apachectl restart */
#include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "ap_config.h"
extern char *ap_server_argv0;
char proctitle_buf[128];
/* The sample content handler */ static int proctitle_handler(request_rec *r) { if (strcmp(r->handler, "proctitle")) { return DECLINED; } r->content_type = "text/html";
if (!r->header_only) ap_rputs("The sample page from mod_proctitle.c\n", r); return OK; }
static int proctitle_child_init(request_rec *r) { strncpy(ap_server_argv0,"httpd: init-child",64); return DECLINED; }
static int proctitle_clear(request_rec *r) { strncpy(ap_server_argv0,"httpd: idle",64); return DECLINED; }
static int proctitle_ft(request_rec *r) { bzero(proctitle_buf,128); snprintf(proctitle_buf,127,"httpd: %16s [%s] %s", r->connection->remote_ip,r->hostname, r->the_request); strncpy(ap_server_argv0,proctitle_buf,128); return DECLINED; }
static void proctitle_register_hooks(apr_pool_t *p) { /* ap_hook_handler(proctitle_handler, NULL, NULL, APR_HOOK_MIDDLE); */ ap_hook_child_init(proctitle_child_init, NULL, NULL, APR_HOOK_FIRST); ap_hook_translate_name(proctitle_ft,NULL,NULL, APR_HOOK_FIRST); ap_hook_log_transaction(proctitle_clear,NULL,NULL, APR_HOOK_LAST); strncpy(ap_server_argv0,"httpd: master",60); }
/* Dispatch list for API hooks */ module AP_MODULE_DECLARE_DATA proctitle_module = { STANDARD20_MODULE_STUFF, NULL, /* create per-dir config structures */ NULL, /* merge per-dir config structures */ NULL, /* create per-server config structures */ NULL, /* merge per-server config structures */ NULL, /* table of config file commands */ proctitle_register_hooks /* register hooks */ };