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?