From: William A. Rowe Jr Date: Fri, 24 Aug 2007 21:41:35 +0000 (+0000) Subject: Bless the module mod_substitute, with the Substitute directive X-Git-Tag: 2.3.0~1536 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdb8a01c26c8f72c935fa0e45f73858ecfd0a03f;p=thirdparty%2Fapache%2Fhttpd.git Bless the module mod_substitute, with the Substitute directive and SUBSTITUTE filter name. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@569533 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/Apache.dsw b/Apache.dsw index 1e58ccb17db..989afc09bef 100644 --- a/Apache.dsw +++ b/Apache.dsw @@ -258,9 +258,6 @@ Package=<4> Project_Dep_Name mod_rewrite End Project Dependency Begin Project Dependency - Project_Dep_Name mod_rewrite_filter - End Project Dependency - Begin Project Dependency Project_Dep_Name mod_setenvif End Project Dependency Begin Project Dependency @@ -270,6 +267,9 @@ Package=<4> Project_Dep_Name mod_status End Project Dependency Begin Project Dependency + Project_Dep_Name mod_substitute + End Project Dependency + Begin Project Dependency Project_Dep_Name mod_unique_id End Project Dependency Begin Project Dependency @@ -2123,7 +2123,7 @@ Package=<4> ############################################################################### -Project: "mod_rewrite_filter"=.\modules\experimental\mod_rewrite_filter.dsp - Package Owner=<4> +Project: "mod_setenvif"=.\modules\metadata\mod_setenvif.dsp - Package Owner=<4> Package=<5> {{{ @@ -2144,7 +2144,7 @@ Package=<4> ############################################################################### -Project: "mod_setenvif"=.\modules\metadata\mod_setenvif.dsp - Package Owner=<4> +Project: "mod_speling"=.\modules\mappers\mod_speling.dsp - Package Owner=<4> Package=<5> {{{ @@ -2165,7 +2165,7 @@ Package=<4> ############################################################################### -Project: "mod_speling"=.\modules\mappers\mod_speling.dsp - Package Owner=<4> +Project: "mod_ssl"=.\modules\ssl\mod_ssl.dsp - Package Owner=<4> Package=<5> {{{ @@ -2186,7 +2186,7 @@ Package=<4> ############################################################################### -Project: "mod_ssl"=.\modules\ssl\mod_ssl.dsp - Package Owner=<4> +Project: "mod_status"=.\modules\generators\mod_status.dsp - Package Owner=<4> Package=<5> {{{ @@ -2207,7 +2207,7 @@ Package=<4> ############################################################################### -Project: "mod_status"=.\modules\generators\mod_status.dsp - Package Owner=<4> +Project: "mod_substitute"=.\modules\experimental\mod_substitute.dsp - Package Owner=<4> Package=<5> {{{ diff --git a/Makefile.win b/Makefile.win index 612dbb80e7e..54001a9acc6 100644 --- a/Makefile.win +++ b/Makefile.win @@ -291,7 +291,7 @@ _build: $(MAKE) $(MAKEOPT) -f mod_case_filter_in.mak CFG="mod_case_filter_in - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_example.mak CFG="mod_example - Win32 $(LONG)" RECURSE=0 $(CTARGET) !ENDIF - $(MAKE) $(MAKEOPT) -f mod_rewrite_filter.mak CFG="mod_rewrite_filter - Win32 $(LONG)" RECURSE=0 $(CTARGET) + $(MAKE) $(MAKEOPT) -f mod_substitute.mak CFG="mod_substitute - Win32 $(LONG)" RECURSE=0 $(CTARGET) cd ..\.. cd modules\filters $(MAKE) $(MAKEOPT) -f mod_charset_lite.mak CFG="mod_charset_lite - Win32 $(LONG)" RECURSE=0 $(CTARGET) @@ -475,7 +475,7 @@ _copybin: copy modules\experimental\$(LONG)\mod_case_filter_in.$(src_so) "$(inst_so)" <.y copy modules\experimental\$(LONG)\mod_example.$(src_so) "$(inst_so)" <.y !ENDIF - copy modules\experimental\$(LONG)\mod_rewrite_filter.$(src_so) "$(inst_so)" <.y + copy modules\experimental\$(LONG)\mod_substitute.$(src_so) "$(inst_so)" <.y copy modules\filters\$(LONG)\mod_charset_lite.$(src_so) "$(inst_so)" <.y !IF EXIST("srclib\zlib") copy modules\filters\$(LONG)\mod_deflate.$(src_so) "$(inst_so)" <.y diff --git a/modules/experimental/NWGNUmakefile b/modules/experimental/NWGNUmakefile index 13ee71aaab3..20927ee2581 100644 --- a/modules/experimental/NWGNUmakefile +++ b/modules/experimental/NWGNUmakefile @@ -163,7 +163,7 @@ TARGET_nlm = \ $(OBJDIR)/example.nlm \ $(OBJDIR)/case_flt.nlm \ $(OBJDIR)/case_flt_in.nlm \ - $(OBJDIR)/rewrite_flt.nlm \ + $(OBJDIR)/substitute.nlm \ $(EOLIST) # diff --git a/modules/experimental/NWGNUrewrite_flt b/modules/experimental/NWGNUsubstitute similarity index 95% rename from modules/experimental/NWGNUrewrite_flt rename to modules/experimental/NWGNUsubstitute index c115d9157fe..ca19eb11632 100644 --- a/modules/experimental/NWGNUrewrite_flt +++ b/modules/experimental/NWGNUsubstitute @@ -101,19 +101,19 @@ endif # This is used by the link 'name' directive to name the nlm. If left blank # TARGET_nlm (see below) will be used. # -NLM_NAME = rewrite_flt +NLM_NAME = substitute # # This is used by the link '-desc ' directive. # If left blank, NLM_NAME will be used. # -NLM_DESCRIPTION = Apache $(VERSION_STR) Rewrite Filter Module +NLM_DESCRIPTION = Apache $(VERSION_STR) Substitute Module # # This is used by the '-threadname' directive. If left blank, # NLM_NAME Thread will be used. # -NLM_THREAD_NAME = Rewrite Filter Module +NLM_THREAD_NAME = Substitute Module # # If this is specified, it will override VERSION value in @@ -158,7 +158,7 @@ XDCDATA = # If there is an NLM target, put it here # TARGET_nlm = \ - $(OBJDIR)/rewrite_flt.nlm \ + $(OBJDIR)/substitute.nlm \ $(EOLIST) # @@ -172,7 +172,7 @@ TARGET_lib = \ # Paths must all use the '/' character # FILES_nlm_objs = \ - $(OBJDIR)/mod_rewrite_filter.o \ + $(OBJDIR)/mod_substitute.o \ $(EOLIST) # @@ -220,7 +220,7 @@ FILES_nlm_Ximports = \ # Any symbols exported to here # FILES_nlm_exports = \ - rewrite_filter_module \ + substitute_module \ $(EOLIST) # diff --git a/modules/experimental/config.m4 b/modules/experimental/config.m4 index 8f2dbab944c..5ce1d7c93d7 100644 --- a/modules/experimental/config.m4 +++ b/modules/experimental/config.m4 @@ -4,6 +4,6 @@ APACHE_MODPATH_INIT(experimental) APACHE_MODULE(example, example and demo module, , , no) APACHE_MODULE(case_filter, example uppercase conversion filter, , , no) APACHE_MODULE(case_filter_in, example uppercase conversion input filter, , , no) -APACHE_MODULE(rewrite_filter, response content rewrite-like filtering, , , no) +APACHE_MODULE(substitute, response content rewrite-like filtering, , , most) APACHE_MODPATH_FINISH diff --git a/modules/experimental/mod_rewrite_filter.c b/modules/experimental/mod_substitute.c similarity index 90% rename from modules/experimental/mod_rewrite_filter.c rename to modules/experimental/mod_substitute.c index 41bcae36c38..4b0c8544254 100644 --- a/modules/experimental/mod_rewrite_filter.c +++ b/modules/experimental/mod_substitute.c @@ -15,7 +15,7 @@ */ /* - * mod_rewrite_filter.c: Perform content rewriting on the fly + * mod_substitute.c: Perform content rewriting on the fly */ #include "httpd.h" @@ -31,42 +31,42 @@ #define APR_WANT_STRFUNC #include "apr_want.h" -static const char rewrite_filter_name[] = "REWRITE"; +static const char substitute_filter_name[] = "SUBSTITUTE"; -module AP_MODULE_DECLARE_DATA rewrite_filter_module; +module AP_MODULE_DECLARE_DATA substitute_module; -typedef struct rf_pattern_t { +typedef struct subst_pattern_t { const apr_strmatch_pattern *pattern; const ap_regex_t *regexp; const char *replacement; apr_size_t replen; apr_size_t patlen; int flatten; -} rf_pattern_t; +} subst_pattern_t; typedef struct { apr_array_header_t *patterns; -} rf_module_dir_conf; +} subst_dir_conf; typedef struct { apr_bucket_brigade *ctxbb; -} rewrite_filter_module_ctx; +} substitute_module_ctx; -static void *create_rewrite_filter_dcfg(apr_pool_t *p, char *d) +static void *create_substitute_dcfg(apr_pool_t *p, char *d) { - rf_module_dir_conf *dcfg = - (rf_module_dir_conf *) apr_pcalloc(p, sizeof(rf_module_dir_conf)); + subst_dir_conf *dcfg = + (subst_dir_conf *) apr_pcalloc(p, sizeof(subst_dir_conf)); - dcfg->patterns = apr_array_make(p, 10, sizeof(rf_pattern_t)); + dcfg->patterns = apr_array_make(p, 10, sizeof(subst_pattern_t)); return dcfg; } -static void *merge_rewrite_filter_dcfg(apr_pool_t *p, void *basev, void *overv) +static void *merge_substitute_dcfg(apr_pool_t *p, void *basev, void *overv) { - rf_module_dir_conf *a = - (rf_module_dir_conf *) apr_pcalloc(p, sizeof(rf_module_dir_conf)); - rf_module_dir_conf *base = (rf_module_dir_conf *) basev; - rf_module_dir_conf *over = (rf_module_dir_conf *) overv; + subst_dir_conf *a = + (subst_dir_conf *) apr_pcalloc(p, sizeof(subst_dir_conf)); + subst_dir_conf *base = (subst_dir_conf *) basev; + subst_dir_conf *over = (subst_dir_conf *) overv; a->patterns = apr_array_append(p, over->patterns, base->patterns); @@ -109,15 +109,15 @@ static apr_bucket_brigade *do_pattmatch(ap_filter_t *f, apr_bucket *inb) apr_bucket_brigade *mybb; apr_pool_t *tpool; - rf_module_dir_conf *cfg = - (rf_module_dir_conf *) ap_get_module_config(f->r->per_dir_config, - &rewrite_filter_module); - rf_pattern_t *script; + subst_dir_conf *cfg = + (subst_dir_conf *) ap_get_module_config(f->r->per_dir_config, + &substitute_module); + subst_pattern_t *script; mybb = apr_brigade_create(f->r->pool, f->c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(mybb, inb); - script = (rf_pattern_t *) cfg->patterns->elts; + script = (subst_pattern_t *) cfg->patterns->elts; apr_pool_create(&tpool, f->r->pool); scratch = NULL; fbytes = 0; @@ -254,7 +254,7 @@ static apr_bucket_brigade *do_pattmatch(ap_filter_t *f, apr_bucket *inb) return mybb; } -static apr_status_t rewrite_filter(ap_filter_t *f, apr_bucket_brigade *bb) +static apr_status_t substitute_filter(ap_filter_t *f, apr_bucket_brigade *bb) { apr_size_t bytes; apr_size_t len; @@ -270,7 +270,7 @@ static apr_status_t rewrite_filter(ap_filter_t *f, apr_bucket_brigade *bb) apr_bucket_brigade *tmp_ctxbb = NULL; apr_status_t rv; - rewrite_filter_module_ctx *ctx = f->ctx; + substitute_module_ctx *ctx = f->ctx; /* * First time around? Create the saved bb that we used for each pass @@ -435,15 +435,14 @@ static apr_status_t rewrite_filter(ap_filter_t *f, apr_bucket_brigade *bb) return rv; } -static const char *set_pattern(cmd_parms *cmd, void *cfg, - const char *line) +static const char *set_pattern(cmd_parms *cmd, void *cfg, const char *line) { char *from = NULL; char *to = NULL; char *flags = NULL; char *ourline; char delim; - rf_pattern_t *nscript; + subst_pattern_t *nscript; int is_pattern = 0; int ignore_case = 0; int flatten = 0; @@ -495,7 +494,7 @@ static const char *set_pattern(cmd_parms *cmd, void *cfg, if (!r) return "Rewrite could not compile regex"; } - nscript = apr_array_push(((rf_module_dir_conf *) cfg)->patterns); + nscript = apr_array_push(((subst_dir_conf *) cfg)->patterns); /* init the new entries */ nscript->pattern = NULL; nscript->regexp = NULL; @@ -521,22 +520,22 @@ static const char *set_pattern(cmd_parms *cmd, void *cfg, #define PROTO_FLAGS AP_FILTER_PROTO_CHANGE|AP_FILTER_PROTO_CHANGE_LENGTH static void register_hooks(apr_pool_t *pool) { - ap_register_output_filter(rewrite_filter_name, rewrite_filter, NULL, - AP_FTYPE_RESOURCE); + ap_register_output_filter(substitute_filter_name, substitute_filter, + NULL, AP_FTYPE_RESOURCE); } -static const command_rec rewrite_filter_cmds[] = { - AP_INIT_TAKE1("RewriteFilter", set_pattern, NULL, OR_ALL, - "Define the rewrite filter pattern (s/foo/bar/[inf])"), +static const command_rec substitute_cmds[] = { + AP_INIT_TAKE1("Substitute", set_pattern, NULL, OR_ALL, + "Pattern to filter the response content (s/foo/bar/[inf])"), {NULL} }; -module AP_MODULE_DECLARE_DATA rewrite_filter_module = { +module AP_MODULE_DECLARE_DATA substitute_module = { STANDARD20_MODULE_STUFF, - create_rewrite_filter_dcfg, /* dir config creater */ - merge_rewrite_filter_dcfg, /* dir merger --- default is to override */ + create_substitute_dcfg, /* dir config creater */ + merge_substitute_dcfg, /* dir merger --- default is to override */ NULL, /* server config */ NULL, /* merge server config */ - rewrite_filter_cmds, /* command table */ + substitute_cmds, /* command table */ register_hooks /* register hooks */ }; diff --git a/modules/experimental/mod_rewrite_filter.dsp b/modules/experimental/mod_substitute.dsp similarity index 62% rename from modules/experimental/mod_rewrite_filter.dsp rename to modules/experimental/mod_substitute.dsp index b2df90d5dc6..def4157ee58 100644 --- a/modules/experimental/mod_rewrite_filter.dsp +++ b/modules/experimental/mod_substitute.dsp @@ -1,24 +1,24 @@ -# Microsoft Developer Studio Project File - Name="mod_rewrite_filter" - Package Owner=<4> +# Microsoft Developer Studio Project File - Name="mod_substitute" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 -CFG=mod_rewrite_filter - Win32 Debug +CFG=mod_substitute - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE -!MESSAGE NMAKE /f "mod_rewrite_filter.mak". +!MESSAGE NMAKE /f "mod_substitute.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For rewrite_filter: +!MESSAGE by defining the macro CFG on the command line. For substitute: !MESSAGE -!MESSAGE NMAKE /f "mod_rewrite_filter.mak" CFG="mod_rewrite_filter - Win32 Debug" +!MESSAGE NMAKE /f "mod_substitute.mak" CFG="mod_substitute - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE -!MESSAGE "mod_rewrite_filter - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "mod_rewrite_filter - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_substitute - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_substitute - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project @@ -29,7 +29,7 @@ CPP=cl.exe MTL=midl.exe RSC=rc.exe -!IF "$(CFG)" == "mod_rewrite_filter - Win32 Release" +!IF "$(CFG)" == "mod_substitute - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -43,25 +43,25 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_rewrite_filter_src" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_substitute_src" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" # ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /fo"Release/mod_rewrite_filter.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_rewrite_filter.so" /d LONG_NAME="rewrite_filter_module for Apache" +# ADD RSC /l 0x409 /fo"Release/mod_substitute.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_substitute.so" /d LONG_NAME="substitute_module for Apache" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /out:".\Release\mod_rewrite_filter.so" /base:@..\..\os\win32\BaseAddr.ref,mod_rewrite_filter.so -# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_rewrite_filter.so" /base:@..\..\os\win32\BaseAddr.ref,mod_rewrite_filter.so /opt:ref +# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /out:".\Release\mod_substitute.so" /base:@..\..\os\win32\BaseAddr.ref,mod_substitute.so +# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_substitute.so" /base:@..\..\os\win32\BaseAddr.ref,mod_substitute.so /opt:ref # Begin Special Build Tool -TargetPath=.\Release\mod_rewrite_filter.so +TargetPath=.\Release\mod_substitute.so SOURCE="$(InputPath)" PostBuild_Desc=Embed .manifest PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 # End Special Build Tool -!ELSEIF "$(CFG)" == "mod_rewrite_filter - Win32 Debug" +!ELSEIF "$(CFG)" == "mod_substitute - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -75,19 +75,19 @@ PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).ma # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_rewrite_filter_src" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_substitute_src" /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" # ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /fo"Debug/mod_rewrite_filter.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_rewrite_filter.so" /d LONG_NAME="rewrite_filter_module for Apache" +# ADD RSC /l 0x409 /fo"Debug/mod_substitute.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_substitute.so" /d LONG_NAME="substitute_module for Apache" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_rewrite_filter.so" /base:@..\..\os\win32\BaseAddr.ref,mod_rewrite_filter.so -# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_rewrite_filter.so" /base:@..\..\os\win32\BaseAddr.ref,mod_rewrite_filter.so +# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_substitute.so" /base:@..\..\os\win32\BaseAddr.ref,mod_substitute.so +# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_substitute.so" /base:@..\..\os\win32\BaseAddr.ref,mod_substitute.so # Begin Special Build Tool -TargetPath=.\Debug\mod_rewrite_filter.so +TargetPath=.\Debug\mod_substitute.so SOURCE="$(InputPath)" PostBuild_Desc=Embed .manifest PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 @@ -97,11 +97,11 @@ PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).ma # Begin Target -# Name "mod_rewrite_filter - Win32 Release" -# Name "mod_rewrite_filter - Win32 Debug" +# Name "mod_substitute - Win32 Release" +# Name "mod_substitute - Win32 Debug" # Begin Source File -SOURCE=.\mod_rewrite_filter.c +SOURCE=.\mod_substitute.c # End Source File # Begin Source File diff --git a/os/win32/BaseAddr.ref b/os/win32/BaseAddr.ref index bfc4aa8446d..2db22f5c753 100644 --- a/os/win32/BaseAddr.ref +++ b/os/win32/BaseAddr.ref @@ -82,6 +82,6 @@ mod_authz_owner.so 0x6F9A0000 0x00010000 mod_example.so 0x6F990000 0x00010000 mod_case_filter.so 0x6F980000 0x00010000 mod_case_filter_in.so 0x6F970000 0x00010000 -mod_rewrite_filter.so 0x6F960000 0x00010000 +mod_substitute.so 0x6F960000 0x00010000 mod_filter.so 0x6F950000 0x00010000 mod_dav_lock.so 0x6F940000 0x00010000