Hi,

I have my small prototype module, which I implemented starting with the 
mod_headers.c source, working.  The changes that I did to the original source 
were to add some code in the insert_filter hook to inject an additional header 
into the request.

That seems to work ok with a "vanilla" Apache configuration.

I want to be able to make my modified module work together with another module, 
provided by Oracle (the Oracle Access Manager webgate, aka "webgate").  

However, after I add the directives into the Apache httpd.conf to enable the 
webgate, it appears that, on incoming requests, the webgate processing occurs, 
but my code in the modified mod_headers module is not called at all :(!!


Here's the last part of my modified mod_headers.c:

static void register_hooks(apr_pool_t *p)
{
    printf("mod_headers-jl V0.13 - use LIBCURL instead of OAM ASDK-process 
response from callCurl\n");
    printf("In register_hooks\n");
    ap_register_output_filter("FIXUP_HEADERS_OUT", ap_headers_output_filter,
                              NULL, AP_FTYPE_CONTENT_SET);
    ap_register_output_filter("FIXUP_HEADERS_ERR", ap_headers_error_filter,
                              NULL, AP_FTYPE_CONTENT_SET);
    ap_hook_pre_config(header_pre_config,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_post_config(header_post_config,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_insert_filter(ap_headers_insert_output_filter, NULL, NULL, 
APR_HOOK_LAST);
    ap_hook_insert_error_filter(ap_headers_insert_error_filter,
                                NULL, NULL, APR_HOOK_LAST);
    ap_hook_fixups(ap_headers_fixup, NULL, NULL, APR_HOOK_LAST);
    ap_hook_post_read_request(ap_headers_early, NULL, NULL, APR_HOOK_FIRST);
}

module AP_MODULE_DECLARE_DATA headers_module =
{
    STANDARD20_MODULE_STUFF,
    create_headers_dir_config,  /* dir config creater */
    merge_headers_config,       /* dir merger --- default is to override */
    NULL,                       /* server config */
    NULL,                       /* merge server configs */
    headers_cmds,               /* command apr_table_t */
    register_hooks              /* register hooks */
};
                                                              

The code I added is in the "ap_headers_insert_output_filter()" function.


I did an "export SHOW_HOOKS=1" and ran the Apache, and I see this for the 
modified mod_headers:

Registering hooks for mod_headers.c
mod_headers-jl V0.13 - use LIBCURL instead of OAM ASDK-process response from 
callCurl
In register_hooks
  Hooked pre_config
  Hooked post_config
  Hooked insert_filter
  Hooked insert_error_filter
  Hooked fixups
  Hooked post_read_request


And for webgate, I see:

Registering hooks for apache2entry_web_gate.cpp
  Hooked post_config
  Hooked handler
  Hooked check_user_id
  Hooked auth_checker


I thought that the handler functions are called almost last part of the 
processing (content generation), and my code is hooked to insert_filter, which 
I thought occurs earlier than content generation, so shouldn't my code get 
processed BEFORE Apache attempts to process the webgate functions?

How can I get my code to process before the webgate does?

Thanks,
Jim

Reply via email to