|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Messaggi: 87
|
[C] Modulo apache
Ciao a tutti,
qualcuno saprebbe indicarmi come procedere per la realizzazione di un modulo per Apache 2.0? Al momento ho iniziato a leggere il libro Writing Apache Modules with Perl and C ma mi sono accorto che tutte le indicazioni si riferiscono alla versione 1.3 di Apache e da quello che ho capito nella versione 2.0 hanno cambiato tutte le Api, hanno introdotto gli Hook(di cui tutt'ora non ho capito niente Nel libro che vi ho citato sopra con la versione 6 di Visual Studio fa creare un progetto di tipo Dll e poi lo fa mettere nella cartella modules di Apache. Questa tecnica sembra non funzionare con la versione Apache 2.0. Sto lavorando in ambiente Win32 e vi invio il codice sorgente che ho provato ad eseguire. Il Codice compila ma nel momento in cui lo vado a caricare in apache tramite la direttiva nel file di configurazione Codice:
LoadModule hello2_module modules/mod_hello2.dll <Location /ciao/funziona> SetHandler hello2_module </Location> Il codive è questo: Codice:
#include "httpd.h"
#include "http_config.h"
#include "http_request.h"
#include "http_protocol.h"
#include "http_core.h"
#include "http_main.h"
#include "http_log.h"
#include "apr.h"
#include "ap_mpm.h"
#include "apr_strings.h"
#include "scoreboard.h"
/* file: mod_hello.c */
/* here's the content handler */
static int hello2_handler(request_rec *r) {
//const char* hostname;
r->content_type = "text/html";
//ap_send_http_header(r);
//hostname = ap_get_remote_host(r->connection,r->per_dir_config,REMOTE_NAME);
ap_rputs("<HTML>\n" ,r);
ap_rputs("<HEAD>\n" ,r);
ap_rputs("<TITLE>Hello There</TITLE>\n" ,r);
ap_rputs("</HEAD>\n" ,r);
ap_rputs("<BODY>\n" ,r);
ap_rprintf(r,"<H1>Hello %s</H1>\n");
ap_rputs("Who would take this book seriously if the first example didn't\n",r);
ap_rputs("say \"hello world\"?\n" ,r);
ap_rputs("</BODY>\n" ,r);
ap_rputs("</HTML>\n" ,r);
return OK;
}
static void register_hooks(void)
{
static const char * const aszPre[]={ "mod_hello2.c",NULL };
ap_hook_access_checker(hello2_handler,NULL,NULL,APR_HOOK_MIDDLE);
// ap_hook_post_config(hello2_handler,NULL,NULL,APR_HOOK_MIDDLE);
ap_hook_translate_name(hello2_handler,aszPre,NULL,APR_HOOK_LAST);
};
module AP_MODULE_DECLARE_DATA hello2_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,
register_hooks
};
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:34.



















