mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-14 13:56:01 +03:00
VS12 solution
This commit is contained in:
parent
da5948033f
commit
8509ff6f83
9
standalone/.gitignore
vendored
Normal file
9
standalone/.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
*.sdf
|
||||
*.log
|
||||
*.tlog
|
||||
*.exe
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.lib
|
||||
*.obj
|
||||
*.idb
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
|
@ -1 +0,0 @@
|
||||
|
@ -1 +0,0 @@
|
||||
|
@ -1 +0,0 @@
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,93 +0,0 @@
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_RELEASE.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_LUA.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\VC110.PDB
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\FILTERS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_PARSERS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_PCRE.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_REQBODY.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_TREE.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_UNICODE.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_UTIL.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_XML.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\PERSIST_DBM.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\RE.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\RE_ACTIONS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\RE_OPERATORS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\RE_TFNS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\RE_VARIABLES.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\API.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\BUCKETS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\CONFIG.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\HOOKS.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\REGEX.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\SERVER.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\ACMP.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\APACHE2_CONFIG.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\APACHE2_IO.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\APACHE2_UTIL.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MOD_SECURITY2.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MODSECURITY.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_CRYPT.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_GEO.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_GSB.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_LOGGING.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MSC_MULTIPART.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\MAIN.OBJ
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\STANDALONE.ILK
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\STANDALONE.EXE
|
||||
C:\WORK\MOD_SECURITY\STANDALONE\DEBUG\STANDALONE.PDB
|
||||
C:\work\mod_security\standalone\Debug\standalone.lib
|
||||
C:\work\mod_security\standalone\Debug\standalone.exp
|
||||
c:\work\mod_security\standalone\Debug\acmp.obj
|
||||
c:\work\mod_security\standalone\Debug\apache2_config.obj
|
||||
c:\work\mod_security\standalone\Debug\apache2_io.obj
|
||||
c:\work\mod_security\standalone\Debug\apache2_util.obj
|
||||
c:\work\mod_security\standalone\Debug\api.obj
|
||||
c:\work\mod_security\standalone\Debug\buckets.obj
|
||||
c:\work\mod_security\standalone\Debug\config.obj
|
||||
c:\work\mod_security\standalone\Debug\filters.obj
|
||||
c:\work\mod_security\standalone\Debug\hooks.obj
|
||||
c:\work\mod_security\standalone\Debug\main.obj
|
||||
c:\work\mod_security\standalone\Debug\modsecurity.obj
|
||||
c:\work\mod_security\standalone\Debug\mod_security2.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_crypt.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_geo.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_gsb.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_logging.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_lua.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_multipart.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_parsers.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_pcre.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_release.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_reqbody.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_tree.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_unicode.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_util.obj
|
||||
c:\work\mod_security\standalone\Debug\msc_xml.obj
|
||||
c:\work\mod_security\standalone\Debug\persist_dbm.obj
|
||||
c:\work\mod_security\standalone\Debug\re.obj
|
||||
c:\work\mod_security\standalone\Debug\regex.obj
|
||||
c:\work\mod_security\standalone\Debug\re_actions.obj
|
||||
c:\work\mod_security\standalone\Debug\re_operators.obj
|
||||
c:\work\mod_security\standalone\Debug\re_tfns.obj
|
||||
c:\work\mod_security\standalone\Debug\re_variables.obj
|
||||
c:\work\mod_security\standalone\Debug\server.obj
|
||||
c:\work\mod_security\standalone\Debug\standalone.ilk
|
||||
c:\work\mod_security\standalone\Debug\cl.command.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\CL.read.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\CL.write.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link-cvtres.read.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link-cvtres.write.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link-rc.read.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link-rc.write.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link.command.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link.read.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\link.write.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\standalone.write.1.tlog
|
||||
c:\work\mod_security\standalone\Debug\standalone.exp
|
||||
c:\work\mod_security\standalone\Debug\vc110.idb
|
||||
c:\work\mod_security\standalone\Debug\standalone.pdb
|
||||
c:\work\mod_security\standalone\Debug\vc110.pdb
|
||||
C:\work\mod_security\standalone\Debug\standalone.pdb
|
||||
C:\work\mod_security\standalone\Debug\standalone.exe
|
||||
C:\work\mod_security\standalone\Debug\standalone.ilk
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
#v4.0:v110:false
|
||||
Debug|Win32|C:\work\mod_security\standalone\|
|
Binary file not shown.
@ -1,86 +0,0 @@
|
||||
Build started 4/12/2013 4:24:02 PM.
|
||||
1>Project "c:\work\mod_security\standalone\standalone.vcxproj" on node 2 (Build target(s)).
|
||||
1>ClCompile:
|
||||
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I"C:\work\pcre-8.30\include" /I"C:\work\pcre-8.30" /I"C:\work\libxml2-2.7.7\include" /IC:\apache22\include /I..\apache2 /I"c:\work\httpd-2.2.24\include" /ZI /nologo /W3 /WX- /Od /Oy- /D _MBCS /D _MBCS /D WIN32 /D WINNT /D inline=APR_INLINE /D AP_DECLARE_STATIC /D VERSION_STANDALONE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc110.pdb" /Gd /TC /wd4244 /wd4018 /analyze- /errorReport:prompt ..\apache2\acmp.c ..\apache2\apache2_config.c ..\apache2\apache2_io.c ..\apache2\apache2_util.c ..\apache2\modsecurity.c ..\apache2\mod_security2.c ..\apache2\msc_crypt.c ..\apache2\msc_geo.c ..\apache2\msc_gsb.c ..\apache2\msc_logging.c ..\apache2\msc_lua.c ..\apache2\msc_multipart.c ..\apache2\msc_parsers.c ..\apache2\msc_pcre.c ..\apache2\msc_release.c ..\apache2\msc_reqbody.c ..\apache2\msc_tree.c ..\apache2\msc_unicode.c ..\apache2\msc_util.c ..\apache2\msc_xml.c ..\apache2\persist_dbm.c ..\apache2\re.c ..\apache2\re_actions.c ..\apache2\re_operators.c ..\apache2\re_tfns.c ..\apache2\re_variables.c api.c buckets.c config.c filters.c hooks.c regex.c server.c
|
||||
server.c
|
||||
regex.c
|
||||
hooks.c
|
||||
filters.c
|
||||
config.c
|
||||
buckets.c
|
||||
api.c
|
||||
re_variables.c
|
||||
re_tfns.c
|
||||
re_operators.c
|
||||
re_actions.c
|
||||
re.c
|
||||
persist_dbm.c
|
||||
msc_xml.c
|
||||
msc_util.c
|
||||
msc_unicode.c
|
||||
msc_tree.c
|
||||
msc_reqbody.c
|
||||
msc_release.c
|
||||
msc_pcre.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
msc_parsers.c
|
||||
msc_multipart.c
|
||||
msc_lua.c
|
||||
msc_logging.c
|
||||
msc_gsb.c
|
||||
msc_geo.c
|
||||
msc_crypt.c
|
||||
mod_security2.c
|
||||
modsecurity.c
|
||||
apache2_util.c
|
||||
apache2_io.c
|
||||
apache2_config.c
|
||||
acmp.c
|
||||
Generating Code...
|
||||
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I"C:\work\pcre-8.30\include" /I"C:\work\pcre-8.30" /I"C:\work\libxml2-2.7.7\include" /IC:\apache22\include /I..\apache2 /I"c:\work\httpd-2.2.24\include" /ZI /nologo /W3 /WX- /Od /Oy- /D _MBCS /D _MBCS /D WIN32 /D WINNT /D inline=APR_INLINE /D AP_DECLARE_STATIC /D VERSION_STANDALONE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc110.pdb" /Gd /TP /wd4244 /wd4018 /analyze- /errorReport:prompt main.cpp
|
||||
main.cpp
|
||||
1>c:\work\mod_security\standalone\main.cpp(16): warning C4005: 'inline' : macro redefinition
|
||||
command-line arguments : see previous definition of 'inline'
|
||||
Link:
|
||||
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\work\mod_security\standalone\Debug\standalone.exe" /INCREMENTAL /NOLOGO /LIBPATH:c:\drop\x86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "libapr-1.lib" "libaprutil-1.lib" pcre.lib libxml2.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\work\mod_security\standalone\Debug\standalone.pdb" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\work\mod_security\standalone\Debug\standalone.lib" /MACHINE:X86 Debug\acmp.obj
|
||||
Debug\apache2_config.obj
|
||||
Debug\apache2_io.obj
|
||||
Debug\apache2_util.obj
|
||||
Debug\modsecurity.obj
|
||||
Debug\mod_security2.obj
|
||||
Debug\msc_crypt.obj
|
||||
Debug\msc_geo.obj
|
||||
Debug\msc_gsb.obj
|
||||
Debug\msc_logging.obj
|
||||
Debug\msc_lua.obj
|
||||
Debug\msc_multipart.obj
|
||||
Debug\msc_parsers.obj
|
||||
Debug\msc_pcre.obj
|
||||
Debug\msc_release.obj
|
||||
Debug\msc_reqbody.obj
|
||||
Debug\msc_tree.obj
|
||||
Debug\msc_unicode.obj
|
||||
Debug\msc_util.obj
|
||||
Debug\msc_xml.obj
|
||||
Debug\persist_dbm.obj
|
||||
Debug\re.obj
|
||||
Debug\re_actions.obj
|
||||
Debug\re_operators.obj
|
||||
Debug\re_tfns.obj
|
||||
Debug\re_variables.obj
|
||||
Debug\api.obj
|
||||
Debug\buckets.obj
|
||||
Debug\config.obj
|
||||
Debug\filters.obj
|
||||
Debug\hooks.obj
|
||||
Debug\main.obj
|
||||
Debug\regex.obj
|
||||
Debug\server.obj
|
||||
Creating library C:\work\mod_security\standalone\Debug\standalone.lib and object C:\work\mod_security\standalone\Debug\standalone.exp
|
||||
standalone.vcxproj -> C:\work\mod_security\standalone\Debug\standalone.exe
|
||||
1>Done Building Project "c:\work\mod_security\standalone\standalone.vcxproj" (Build target(s)).
|
||||
|
||||
Build succeeded.
|
||||
|
||||
Time Elapsed 00:00:16.08
|
Binary file not shown.
@ -1,5 +0,0 @@
|
||||
^c:\work\mod_security\standalone\standalone.vcxproj
|
||||
C:\work\mod_security\standalone\Debug\standalone.lib
|
||||
C:\work\mod_security\standalone\Debug\standalone.lib
|
||||
C:\work\mod_security\standalone\Debug\standalone.exp
|
||||
C:\work\mod_security\standalone\Debug\standalone.exp
|
Binary file not shown.
Binary file not shown.
@ -1,165 +1,165 @@
|
||||
pkglibdir = $(prefix)/lib
|
||||
|
||||
pkglib_LTLIBRARIES = standalone.la
|
||||
|
||||
standalone_la_SOURCES = ../apache2/acmp.c \
|
||||
../apache2/apache2_config.c \
|
||||
../apache2/apache2_io.c \
|
||||
../apache2/apache2_util.c \
|
||||
../apache2/libinjection/libinjection_html5.c \
|
||||
../apache2/libinjection/libinjection_sqli.c \
|
||||
../apache2/libinjection/libinjection_xss.c \
|
||||
../apache2/mod_security2.c \
|
||||
../apache2/modsecurity.c \
|
||||
../apache2/msc_status_engine.c \
|
||||
../apache2/msc_crypt.c \
|
||||
../apache2/msc_geo.c \
|
||||
../apache2/msc_gsb.c \
|
||||
../apache2/msc_json.c \
|
||||
../apache2/msc_logging.c \
|
||||
../apache2/msc_lua.c \
|
||||
../apache2/msc_multipart.c \
|
||||
../apache2/msc_parsers.c \
|
||||
../apache2/msc_pcre.c \
|
||||
../apache2/msc_release.c \
|
||||
../apache2/msc_remote_rules.c \
|
||||
../apache2/msc_reqbody.c \
|
||||
../apache2/msc_tree.c \
|
||||
../apache2/msc_unicode.c \
|
||||
../apache2/msc_util.c \
|
||||
../apache2/msc_xml.c \
|
||||
../apache2/persist_dbm.c \
|
||||
../apache2/re_actions.c \
|
||||
../apache2/re.c \
|
||||
../apache2/re_operators.c \
|
||||
../apache2/re_tfns.c \
|
||||
../apache2/re_variables.c \
|
||||
api.c \
|
||||
buckets.c \
|
||||
config.c \
|
||||
filters.c \
|
||||
hooks.c \
|
||||
regex.c \
|
||||
server.c
|
||||
|
||||
# FIXME: Standalone does not mean that it will be a nginx build.
|
||||
standalone_la_CFLAGS = -DVERSION_NGINX \
|
||||
@APR_CFLAGS@ \
|
||||
@APU_CFLAGS@ \
|
||||
@APXS_CFLAGS@ \
|
||||
@CURL_CFLAGS@ \
|
||||
@LIBXML2_CFLAGS@ \
|
||||
@LUA_CFLAGS@ \
|
||||
@MODSEC_EXTRA_CFLAGS@ \
|
||||
@PCRE_CFLAGS@ \
|
||||
@YAJL_CFLAGS@ \
|
||||
@SSDEEP_CFLAGS@
|
||||
|
||||
standalone_la_CPPFLAGS = @APR_CPPFLAGS@ \
|
||||
@LIBXML2_CPPFLAGS@ \
|
||||
@PCRE_CPPFLAGS@
|
||||
|
||||
standalone_la_LIBADD = @APR_LDADD@ \
|
||||
@APU_LDADD@ \
|
||||
@LIBXML2_LDADD@ \
|
||||
@LUA_LDADD@ \
|
||||
@PCRE_LDADD@ \
|
||||
@YAJL_LDADD@ \
|
||||
@SSDEEP_CFLAGS@
|
||||
|
||||
if AIX
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if HPUX
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if MACOSX
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if SOLARIS
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if LINUX
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if FREEBSD
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if OPENBSD
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if NETBSD
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
pkglibdir = $(prefix)/lib
|
||||
|
||||
pkglib_LTLIBRARIES = standalone.la
|
||||
|
||||
standalone_la_SOURCES = ../apache2/acmp.c \
|
||||
../apache2/apache2_config.c \
|
||||
../apache2/apache2_io.c \
|
||||
../apache2/apache2_util.c \
|
||||
../apache2/libinjection/libinjection_html5.c \
|
||||
../apache2/libinjection/libinjection_sqli.c \
|
||||
../apache2/libinjection/libinjection_xss.c \
|
||||
../apache2/mod_security2.c \
|
||||
../apache2/modsecurity.c \
|
||||
../apache2/msc_status_engine.c \
|
||||
../apache2/msc_crypt.c \
|
||||
../apache2/msc_geo.c \
|
||||
../apache2/msc_gsb.c \
|
||||
../apache2/msc_json.c \
|
||||
../apache2/msc_logging.c \
|
||||
../apache2/msc_lua.c \
|
||||
../apache2/msc_multipart.c \
|
||||
../apache2/msc_parsers.c \
|
||||
../apache2/msc_pcre.c \
|
||||
../apache2/msc_release.c \
|
||||
../apache2/msc_remote_rules.c \
|
||||
../apache2/msc_reqbody.c \
|
||||
../apache2/msc_tree.c \
|
||||
../apache2/msc_unicode.c \
|
||||
../apache2/msc_util.c \
|
||||
../apache2/msc_xml.c \
|
||||
../apache2/persist_dbm.c \
|
||||
../apache2/re_actions.c \
|
||||
../apache2/re.c \
|
||||
../apache2/re_operators.c \
|
||||
../apache2/re_tfns.c \
|
||||
../apache2/re_variables.c \
|
||||
api.c \
|
||||
buckets.c \
|
||||
config.c \
|
||||
filters.c \
|
||||
hooks.c \
|
||||
regex.c \
|
||||
server.c
|
||||
|
||||
# FIXME: Standalone does not mean that it will be a nginx build.
|
||||
standalone_la_CFLAGS = -DVERSION_NGINX \
|
||||
@APR_CFLAGS@ \
|
||||
@APU_CFLAGS@ \
|
||||
@APXS_CFLAGS@ \
|
||||
@CURL_CFLAGS@ \
|
||||
@LIBXML2_CFLAGS@ \
|
||||
@LUA_CFLAGS@ \
|
||||
@MODSEC_EXTRA_CFLAGS@ \
|
||||
@PCRE_CFLAGS@ \
|
||||
@YAJL_CFLAGS@ \
|
||||
@SSDEEP_CFLAGS@
|
||||
|
||||
standalone_la_CPPFLAGS = @APR_CPPFLAGS@ \
|
||||
@LIBXML2_CPPFLAGS@ \
|
||||
@PCRE_CPPFLAGS@
|
||||
|
||||
standalone_la_LIBADD = @APR_LDADD@ \
|
||||
@APU_LDADD@ \
|
||||
@LIBXML2_LDADD@ \
|
||||
@LUA_LDADD@ \
|
||||
@PCRE_LDADD@ \
|
||||
@YAJL_LDADD@ \
|
||||
@SSDEEP_CFLAGS@
|
||||
|
||||
if AIX
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if HPUX
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if MACOSX
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if SOLARIS
|
||||
standalone_la_LDFLAGS = -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if LINUX
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if FREEBSD
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if OPENBSD
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
if NETBSD
|
||||
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
|
||||
@APR_LDFLAGS@ \
|
||||
@APU_LDFLAGS@ \
|
||||
@APXS_LDFLAGS@ \
|
||||
@LIBXML2_LDFLAGS@ \
|
||||
@LUA_LDFLAGS@ \
|
||||
@PCRE_LDFLAGS@ \
|
||||
@YAJL_LDFLAGS@ \
|
||||
@SSDEEP_LDFLAGS@
|
||||
endif
|
||||
|
||||
|
254
standalone/api.h
254
standalone/api.h
@ -1,129 +1,129 @@
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
server_rec *modsecInit();
|
||||
void modsecTerminate();
|
||||
|
||||
void modsecStartConfig();
|
||||
directory_config *modsecGetDefaultConfig();
|
||||
const char *modsecProcessConfig(directory_config *config, const char *file, const char *dir);
|
||||
void modsecFinalizeConfig();
|
||||
|
||||
void modsecInitProcess();
|
||||
|
||||
conn_rec *modsecNewConnection();
|
||||
void modsecProcessConnection(conn_rec *c);
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
server_rec *modsecInit();
|
||||
void modsecTerminate();
|
||||
|
||||
void modsecStartConfig();
|
||||
directory_config *modsecGetDefaultConfig();
|
||||
const char *modsecProcessConfig(directory_config *config, const char *file, const char *dir);
|
||||
void modsecFinalizeConfig();
|
||||
|
||||
void modsecInitProcess();
|
||||
|
||||
conn_rec *modsecNewConnection();
|
||||
void modsecProcessConnection(conn_rec *c);
|
||||
int modsecFinishConnection(conn_rec *c);
|
||||
|
||||
request_rec *modsecNewRequest(conn_rec *connection, directory_config *config);
|
||||
|
||||
int modsecProcessRequestBody(request_rec *r);
|
||||
int modsecProcessRequestHeaders(request_rec *r);
|
||||
|
||||
static inline int modsecProcessRequest(request_rec *r) {
|
||||
int status;
|
||||
status = modsecProcessRequestHeaders(r);
|
||||
if (status != DECLINED) {
|
||||
return status;
|
||||
}
|
||||
|
||||
return modsecProcessRequestBody(r);
|
||||
}
|
||||
|
||||
|
||||
int modsecProcessResponse(request_rec *r);
|
||||
int modsecFinishRequest(request_rec *r);
|
||||
|
||||
void modsecSetLogHook(void *obj, void (*hook)(void *obj, int level, char *str));
|
||||
|
||||
#define NOTE_MSR_BRIGADE_REQUEST "modsecurity-brigade-request"
|
||||
#define NOTE_MSR_BRIGADE_RESPONSE "modsecurity-brigade-response"
|
||||
|
||||
static inline void
|
||||
modsecSetBodyBrigade(request_rec *r, apr_bucket_brigade *b) {
|
||||
apr_table_setn(r->notes, NOTE_MSR_BRIGADE_REQUEST, (char *)b);
|
||||
};
|
||||
|
||||
static inline apr_bucket_brigade *
|
||||
modsecGetBodyBrigade(request_rec *r) {
|
||||
return (apr_bucket_brigade *)apr_table_get(r->notes, NOTE_MSR_BRIGADE_REQUEST);
|
||||
};
|
||||
|
||||
static inline void
|
||||
modsecSetResponseBrigade(request_rec *r, apr_bucket_brigade *b) {
|
||||
apr_table_setn(r->notes, NOTE_MSR_BRIGADE_RESPONSE, (char *)b);
|
||||
};
|
||||
|
||||
static inline apr_bucket_brigade *
|
||||
modsecGetResponseBrigade(request_rec *r) {
|
||||
return (apr_bucket_brigade *)apr_table_get(r->notes, NOTE_MSR_BRIGADE_RESPONSE);
|
||||
};
|
||||
|
||||
void modsecSetReadBody(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos));
|
||||
void modsecSetReadResponse(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos));
|
||||
void modsecSetWriteBody(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length));
|
||||
void modsecSetWriteResponse(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length));
|
||||
void modsecSetDropAction(int (*func)(request_rec *r));
|
||||
|
||||
int modsecIsResponseBodyAccessEnabled(request_rec *r);
|
||||
int modsecIsRequestBodyAccessEnabled(request_rec *r);
|
||||
|
||||
int modsecContextState(request_rec *r);
|
||||
|
||||
void modsecSetConfigForIISRequestBody(request_rec *r);
|
||||
|
||||
const char *modsecIsServerSignatureAvailale(void);
|
||||
|
||||
#ifdef VERSION_IIS
|
||||
void modsecStatusEngineCall(void);
|
||||
|
||||
request_rec *modsecNewRequest(conn_rec *connection, directory_config *config);
|
||||
|
||||
int modsecProcessRequestBody(request_rec *r);
|
||||
int modsecProcessRequestHeaders(request_rec *r);
|
||||
|
||||
static inline int modsecProcessRequest(request_rec *r) {
|
||||
int status;
|
||||
status = modsecProcessRequestHeaders(r);
|
||||
if (status != DECLINED) {
|
||||
return status;
|
||||
}
|
||||
|
||||
return modsecProcessRequestBody(r);
|
||||
}
|
||||
|
||||
|
||||
int modsecProcessResponse(request_rec *r);
|
||||
int modsecFinishRequest(request_rec *r);
|
||||
|
||||
void modsecSetLogHook(void *obj, void (*hook)(void *obj, int level, char *str));
|
||||
|
||||
#define NOTE_MSR_BRIGADE_REQUEST "modsecurity-brigade-request"
|
||||
#define NOTE_MSR_BRIGADE_RESPONSE "modsecurity-brigade-response"
|
||||
|
||||
static inline void
|
||||
modsecSetBodyBrigade(request_rec *r, apr_bucket_brigade *b) {
|
||||
apr_table_setn(r->notes, NOTE_MSR_BRIGADE_REQUEST, (char *)b);
|
||||
};
|
||||
|
||||
static inline apr_bucket_brigade *
|
||||
modsecGetBodyBrigade(request_rec *r) {
|
||||
return (apr_bucket_brigade *)apr_table_get(r->notes, NOTE_MSR_BRIGADE_REQUEST);
|
||||
};
|
||||
|
||||
static inline void
|
||||
modsecSetResponseBrigade(request_rec *r, apr_bucket_brigade *b) {
|
||||
apr_table_setn(r->notes, NOTE_MSR_BRIGADE_RESPONSE, (char *)b);
|
||||
};
|
||||
|
||||
static inline apr_bucket_brigade *
|
||||
modsecGetResponseBrigade(request_rec *r) {
|
||||
return (apr_bucket_brigade *)apr_table_get(r->notes, NOTE_MSR_BRIGADE_RESPONSE);
|
||||
};
|
||||
|
||||
void modsecSetReadBody(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos));
|
||||
void modsecSetReadResponse(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos));
|
||||
void modsecSetWriteBody(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length));
|
||||
void modsecSetWriteResponse(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length));
|
||||
void modsecSetDropAction(int (*func)(request_rec *r));
|
||||
|
||||
int modsecIsResponseBodyAccessEnabled(request_rec *r);
|
||||
int modsecIsRequestBodyAccessEnabled(request_rec *r);
|
||||
|
||||
int modsecContextState(request_rec *r);
|
||||
|
||||
void modsecSetConfigForIISRequestBody(request_rec *r);
|
||||
|
||||
const char *modsecIsServerSignatureAvailale(void);
|
||||
|
||||
#ifdef VERSION_IIS
|
||||
void modsecStatusEngineCall(void);
|
||||
void modsecReportRemoteLoadedRules(void);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1,184 +1,184 @@
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
#include "apr_buckets.h"
|
||||
|
||||
|
||||
AP_DECLARE(apr_status_t) ap_get_brigade(ap_filter_t *next,
|
||||
apr_bucket_brigade *bb,
|
||||
ap_input_mode_t mode,
|
||||
apr_read_type_e block,
|
||||
apr_off_t readbytes)
|
||||
{
|
||||
if (next) {
|
||||
return next->frec->filter_func.in_func(next, bb, mode, block,
|
||||
readbytes);
|
||||
}
|
||||
|
||||
return AP_NOBODY_READ;
|
||||
}
|
||||
|
||||
AP_DECLARE(apr_status_t) ap_pass_brigade(ap_filter_t *next,
|
||||
apr_bucket_brigade *bb)
|
||||
{
|
||||
if (next) {
|
||||
apr_bucket *e;
|
||||
if ((e = APR_BRIGADE_LAST(bb)) && APR_BUCKET_IS_EOS(e) && next->r) {
|
||||
/* This is only safe because HTTP_HEADER filter is always in
|
||||
* the filter stack. This ensures that there is ALWAYS a
|
||||
* request-based filter that we can attach this to. If the
|
||||
* HTTP_FILTER is removed, and another filter is not put in its
|
||||
* place, then handlers like mod_cgi, which attach their own
|
||||
* EOS bucket to the brigade will be broken, because we will
|
||||
* get two EOS buckets on the same request.
|
||||
*/
|
||||
next->r->eos_sent = 1;
|
||||
|
||||
/* remember the eos for internal redirects, too */
|
||||
if (next->r->prev) {
|
||||
request_rec *prev = next->r->prev;
|
||||
|
||||
while (prev) {
|
||||
prev->eos_sent = 1;
|
||||
prev = prev->prev;
|
||||
}
|
||||
}
|
||||
}
|
||||
return next->frec->filter_func.out_func(next, bb);
|
||||
}
|
||||
return AP_NOBODY_WROTE;
|
||||
}
|
||||
|
||||
AP_DECLARE(apr_status_t) ap_save_brigade(ap_filter_t *f,
|
||||
apr_bucket_brigade **saveto,
|
||||
apr_bucket_brigade **b, apr_pool_t *p)
|
||||
{
|
||||
apr_bucket *e;
|
||||
apr_status_t rv, srv = APR_SUCCESS;
|
||||
|
||||
/* If have never stored any data in the filter, then we had better
|
||||
* create an empty bucket brigade so that we can concat.
|
||||
*/
|
||||
if (!(*saveto)) {
|
||||
*saveto = apr_brigade_create(p, f->c->bucket_alloc);
|
||||
}
|
||||
|
||||
for (e = APR_BRIGADE_FIRST(*b);
|
||||
e != APR_BRIGADE_SENTINEL(*b);
|
||||
e = APR_BUCKET_NEXT(e))
|
||||
{
|
||||
rv = apr_bucket_setaside(e, p);
|
||||
|
||||
/* If the bucket type does not implement setaside, then
|
||||
* (hopefully) morph it into a bucket type which does, and set
|
||||
* *that* aside... */
|
||||
if (rv == APR_ENOTIMPL) {
|
||||
const char *s;
|
||||
apr_size_t n;
|
||||
|
||||
rv = apr_bucket_read(e, &s, &n, APR_BLOCK_READ);
|
||||
if (rv == APR_SUCCESS) {
|
||||
rv = apr_bucket_setaside(e, p);
|
||||
}
|
||||
}
|
||||
|
||||
if (rv != APR_SUCCESS) {
|
||||
srv = rv;
|
||||
/* Return an error but still save the brigade if
|
||||
* ->setaside() is really not implemented. */
|
||||
if (rv != APR_ENOTIMPL) {
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
}
|
||||
APR_BRIGADE_CONCAT(*saveto, *b);
|
||||
return srv;
|
||||
}
|
||||
|
||||
static apr_status_t error_bucket_read(apr_bucket *b, const char **str,
|
||||
apr_size_t *len, apr_read_type_e block)
|
||||
{
|
||||
*str = "Unknown error.";
|
||||
*len = strlen(*str);
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
static void error_bucket_destroy(void *data)
|
||||
{
|
||||
ap_bucket_error *h = data;
|
||||
|
||||
if (apr_bucket_shared_destroy(h)) {
|
||||
apr_bucket_free(h);
|
||||
}
|
||||
}
|
||||
|
||||
AP_DECLARE_DATA const apr_bucket_type_t ap_bucket_type_error = {
|
||||
"ERROR", 5, APR_BUCKET_METADATA,
|
||||
error_bucket_destroy,
|
||||
error_bucket_read,
|
||||
apr_bucket_setaside_notimpl,
|
||||
apr_bucket_split_notimpl,
|
||||
apr_bucket_shared_copy
|
||||
};
|
||||
|
||||
AP_DECLARE(apr_bucket *) ap_bucket_error_make(apr_bucket *b, int error,
|
||||
const char *buf, apr_pool_t *p)
|
||||
{
|
||||
ap_bucket_error *h;
|
||||
|
||||
h = apr_bucket_alloc(sizeof(*h), b->list);
|
||||
h->status = error;
|
||||
h->data = (buf) ? apr_pstrdup(p, buf) : NULL;
|
||||
|
||||
b = apr_bucket_shared_make(b, h, 0, 0);
|
||||
b->type = &ap_bucket_type_error;
|
||||
return b;
|
||||
}
|
||||
|
||||
AP_DECLARE(apr_bucket *) ap_bucket_error_create(int error, const char *buf,
|
||||
apr_pool_t *p,
|
||||
apr_bucket_alloc_t *list)
|
||||
{
|
||||
apr_bucket *b = apr_bucket_alloc(sizeof(*b), list);
|
||||
|
||||
APR_BUCKET_INIT(b);
|
||||
b->free = apr_bucket_free;
|
||||
b->list = list;
|
||||
return ap_bucket_error_make(b, error, buf, p);
|
||||
}
|
||||
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
#include "apr_buckets.h"
|
||||
|
||||
|
||||
AP_DECLARE(apr_status_t) ap_get_brigade(ap_filter_t *next,
|
||||
apr_bucket_brigade *bb,
|
||||
ap_input_mode_t mode,
|
||||
apr_read_type_e block,
|
||||
apr_off_t readbytes)
|
||||
{
|
||||
if (next) {
|
||||
return next->frec->filter_func.in_func(next, bb, mode, block,
|
||||
readbytes);
|
||||
}
|
||||
|
||||
return AP_NOBODY_READ;
|
||||
}
|
||||
|
||||
AP_DECLARE(apr_status_t) ap_pass_brigade(ap_filter_t *next,
|
||||
apr_bucket_brigade *bb)
|
||||
{
|
||||
if (next) {
|
||||
apr_bucket *e;
|
||||
if ((e = APR_BRIGADE_LAST(bb)) && APR_BUCKET_IS_EOS(e) && next->r) {
|
||||
/* This is only safe because HTTP_HEADER filter is always in
|
||||
* the filter stack. This ensures that there is ALWAYS a
|
||||
* request-based filter that we can attach this to. If the
|
||||
* HTTP_FILTER is removed, and another filter is not put in its
|
||||
* place, then handlers like mod_cgi, which attach their own
|
||||
* EOS bucket to the brigade will be broken, because we will
|
||||
* get two EOS buckets on the same request.
|
||||
*/
|
||||
next->r->eos_sent = 1;
|
||||
|
||||
/* remember the eos for internal redirects, too */
|
||||
if (next->r->prev) {
|
||||
request_rec *prev = next->r->prev;
|
||||
|
||||
while (prev) {
|
||||
prev->eos_sent = 1;
|
||||
prev = prev->prev;
|
||||
}
|
||||
}
|
||||
}
|
||||
return next->frec->filter_func.out_func(next, bb);
|
||||
}
|
||||
return AP_NOBODY_WROTE;
|
||||
}
|
||||
|
||||
AP_DECLARE(apr_status_t) ap_save_brigade(ap_filter_t *f,
|
||||
apr_bucket_brigade **saveto,
|
||||
apr_bucket_brigade **b, apr_pool_t *p)
|
||||
{
|
||||
apr_bucket *e;
|
||||
apr_status_t rv, srv = APR_SUCCESS;
|
||||
|
||||
/* If have never stored any data in the filter, then we had better
|
||||
* create an empty bucket brigade so that we can concat.
|
||||
*/
|
||||
if (!(*saveto)) {
|
||||
*saveto = apr_brigade_create(p, f->c->bucket_alloc);
|
||||
}
|
||||
|
||||
for (e = APR_BRIGADE_FIRST(*b);
|
||||
e != APR_BRIGADE_SENTINEL(*b);
|
||||
e = APR_BUCKET_NEXT(e))
|
||||
{
|
||||
rv = apr_bucket_setaside(e, p);
|
||||
|
||||
/* If the bucket type does not implement setaside, then
|
||||
* (hopefully) morph it into a bucket type which does, and set
|
||||
* *that* aside... */
|
||||
if (rv == APR_ENOTIMPL) {
|
||||
const char *s;
|
||||
apr_size_t n;
|
||||
|
||||
rv = apr_bucket_read(e, &s, &n, APR_BLOCK_READ);
|
||||
if (rv == APR_SUCCESS) {
|
||||
rv = apr_bucket_setaside(e, p);
|
||||
}
|
||||
}
|
||||
|
||||
if (rv != APR_SUCCESS) {
|
||||
srv = rv;
|
||||
/* Return an error but still save the brigade if
|
||||
* ->setaside() is really not implemented. */
|
||||
if (rv != APR_ENOTIMPL) {
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
}
|
||||
APR_BRIGADE_CONCAT(*saveto, *b);
|
||||
return srv;
|
||||
}
|
||||
|
||||
static apr_status_t error_bucket_read(apr_bucket *b, const char **str,
|
||||
apr_size_t *len, apr_read_type_e block)
|
||||
{
|
||||
*str = "Unknown error.";
|
||||
*len = strlen(*str);
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
static void error_bucket_destroy(void *data)
|
||||
{
|
||||
ap_bucket_error *h = data;
|
||||
|
||||
if (apr_bucket_shared_destroy(h)) {
|
||||
apr_bucket_free(h);
|
||||
}
|
||||
}
|
||||
|
||||
AP_DECLARE_DATA const apr_bucket_type_t ap_bucket_type_error = {
|
||||
"ERROR", 5, APR_BUCKET_METADATA,
|
||||
error_bucket_destroy,
|
||||
error_bucket_read,
|
||||
apr_bucket_setaside_notimpl,
|
||||
apr_bucket_split_notimpl,
|
||||
apr_bucket_shared_copy
|
||||
};
|
||||
|
||||
AP_DECLARE(apr_bucket *) ap_bucket_error_make(apr_bucket *b, int error,
|
||||
const char *buf, apr_pool_t *p)
|
||||
{
|
||||
ap_bucket_error *h;
|
||||
|
||||
h = apr_bucket_alloc(sizeof(*h), b->list);
|
||||
h->status = error;
|
||||
h->data = (buf) ? apr_pstrdup(p, buf) : NULL;
|
||||
|
||||
b = apr_bucket_shared_make(b, h, 0, 0);
|
||||
b->type = &ap_bucket_type_error;
|
||||
return b;
|
||||
}
|
||||
|
||||
AP_DECLARE(apr_bucket *) ap_bucket_error_create(int error, const char *buf,
|
||||
apr_pool_t *p,
|
||||
apr_bucket_alloc_t *list)
|
||||
{
|
||||
apr_bucket *b = apr_bucket_alloc(sizeof(*b), list);
|
||||
|
||||
APR_BUCKET_INIT(b);
|
||||
b->free = apr_bucket_free;
|
||||
b->list = list;
|
||||
return ap_bucket_error_make(b, error, buf, p);
|
||||
}
|
||||
|
||||
|
@ -1,248 +1,248 @@
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
#define FILTER_POOL apr_hook_global_pool
|
||||
#include "apr_hooks.h"
|
||||
|
||||
/*
|
||||
** This macro returns true/false if a given filter should be inserted BEFORE
|
||||
** another filter. This will happen when one of: 1) there isn't another
|
||||
** filter; 2) that filter has a higher filter type (class); 3) that filter
|
||||
** corresponds to a different request.
|
||||
*/
|
||||
#define INSERT_BEFORE(f, before_this) ((before_this) == NULL \
|
||||
|| (before_this)->frec->ftype > (f)->frec->ftype \
|
||||
|| (before_this)->r != (f)->r)
|
||||
|
||||
|
||||
apr_table_t *ms_input_filters = NULL;
|
||||
apr_table_t *ms_output_filters = NULL;
|
||||
|
||||
void init_filter_tables()
|
||||
{
|
||||
if(ms_input_filters == NULL)
|
||||
{
|
||||
ms_input_filters = apr_table_make(FILTER_POOL, 10);
|
||||
ms_output_filters = apr_table_make(FILTER_POOL, 10);
|
||||
}
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_rec_t *) ap_register_input_filter(const char *name,
|
||||
ap_in_filter_func filter_func,
|
||||
ap_init_filter_func filter_init,
|
||||
ap_filter_type ftype)
|
||||
{
|
||||
ap_filter_rec_t *f;
|
||||
|
||||
init_filter_tables();
|
||||
|
||||
f = apr_palloc(FILTER_POOL, sizeof(ap_filter_rec_t));
|
||||
|
||||
f->filter_func.in_func = filter_func;
|
||||
f->filter_init_func = filter_init;
|
||||
f->ftype = ftype;
|
||||
f->name = name;
|
||||
|
||||
apr_table_setn(ms_input_filters, name, (const char *)f);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_rec_t *) ap_register_output_filter(const char *name,
|
||||
ap_out_filter_func filter_func,
|
||||
ap_init_filter_func filter_init,
|
||||
ap_filter_type ftype)
|
||||
{
|
||||
ap_filter_rec_t *f;
|
||||
|
||||
init_filter_tables();
|
||||
|
||||
f = apr_palloc(FILTER_POOL, sizeof(ap_filter_rec_t));
|
||||
|
||||
f->filter_func.out_func = filter_func;
|
||||
f->filter_init_func = filter_init;
|
||||
f->ftype = ftype;
|
||||
f->name = name;
|
||||
|
||||
apr_table_setn(ms_output_filters, name, (const char *)f);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
static ap_filter_t *add_any_filter_handle(ap_filter_rec_t *frec, void *ctx,
|
||||
request_rec *r, conn_rec *c,
|
||||
ap_filter_t **r_filters,
|
||||
ap_filter_t **p_filters,
|
||||
ap_filter_t **c_filters)
|
||||
{
|
||||
apr_pool_t* p = r ? r->pool : c->pool;
|
||||
ap_filter_t *f = apr_palloc(p, sizeof(*f));
|
||||
ap_filter_t **outf;
|
||||
|
||||
if (frec->ftype < AP_FTYPE_PROTOCOL) {
|
||||
if (r) {
|
||||
outf = r_filters;
|
||||
}
|
||||
else {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL,
|
||||
"a content filter was added without a request: %s", frec->name);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else if (frec->ftype < AP_FTYPE_CONNECTION) {
|
||||
if (r) {
|
||||
outf = p_filters;
|
||||
}
|
||||
else {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL,
|
||||
"a protocol filter was added without a request: %s", frec->name);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
outf = c_filters;
|
||||
}
|
||||
|
||||
f->frec = frec;
|
||||
f->ctx = ctx;
|
||||
f->r = r;
|
||||
f->c = c;
|
||||
f->next = NULL;
|
||||
|
||||
if (INSERT_BEFORE(f, *outf)) {
|
||||
f->next = *outf;
|
||||
|
||||
if (*outf) {
|
||||
ap_filter_t *first = NULL;
|
||||
|
||||
if (r) {
|
||||
/* If we are adding our first non-connection filter,
|
||||
* Then don't try to find the right location, it is
|
||||
* automatically first.
|
||||
*/
|
||||
if (*r_filters != *c_filters) {
|
||||
first = *r_filters;
|
||||
while (first && (first->next != (*outf))) {
|
||||
first = first->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (first && first != (*outf)) {
|
||||
first->next = f;
|
||||
}
|
||||
}
|
||||
*outf = f;
|
||||
}
|
||||
else {
|
||||
ap_filter_t *fscan = *outf;
|
||||
while (!INSERT_BEFORE(f, fscan->next))
|
||||
fscan = fscan->next;
|
||||
|
||||
f->next = fscan->next;
|
||||
fscan->next = f;
|
||||
}
|
||||
|
||||
if (frec->ftype < AP_FTYPE_CONNECTION && (*r_filters == *c_filters)) {
|
||||
*r_filters = *p_filters;
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_t *) ap_add_input_filter(const char *name, void *ctx,
|
||||
request_rec *r, conn_rec *c)
|
||||
{
|
||||
ap_filter_rec_t *f = (ap_filter_rec_t *)apr_table_get(ms_input_filters, name);
|
||||
|
||||
if(f == NULL)
|
||||
return NULL;
|
||||
|
||||
return add_any_filter_handle(f, ctx, r, c,
|
||||
r ? &r->input_filters : NULL,
|
||||
r ? &r->proto_input_filters : NULL, &c->input_filters);
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_t *) ap_add_output_filter(const char *name, void *ctx,
|
||||
request_rec *r, conn_rec *c)
|
||||
{
|
||||
ap_filter_rec_t *f = (ap_filter_rec_t *)apr_table_get(ms_output_filters, name);
|
||||
|
||||
if(f == NULL)
|
||||
return NULL;
|
||||
|
||||
return add_any_filter_handle(f, ctx, r, c,
|
||||
r ? &r->output_filters : NULL,
|
||||
r ? &r->proto_output_filters : NULL, &c->output_filters);
|
||||
}
|
||||
|
||||
static void remove_any_filter(ap_filter_t *f, ap_filter_t **r_filt, ap_filter_t **p_filt,
|
||||
ap_filter_t **c_filt)
|
||||
{
|
||||
ap_filter_t **curr = r_filt ? r_filt : c_filt;
|
||||
ap_filter_t *fscan = *curr;
|
||||
|
||||
if (p_filt && *p_filt == f)
|
||||
*p_filt = (*p_filt)->next;
|
||||
|
||||
if (*curr == f) {
|
||||
*curr = (*curr)->next;
|
||||
return;
|
||||
}
|
||||
|
||||
while (fscan->next != f) {
|
||||
if (!(fscan = fscan->next)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fscan->next = f->next;
|
||||
}
|
||||
|
||||
AP_DECLARE(void) ap_remove_input_filter(ap_filter_t *f)
|
||||
{
|
||||
remove_any_filter(f, f->r ? &f->r->input_filters : NULL,
|
||||
f->r ? &f->r->proto_input_filters : NULL,
|
||||
&f->c->input_filters);
|
||||
}
|
||||
|
||||
AP_DECLARE(void) ap_remove_output_filter(ap_filter_t *f)
|
||||
{
|
||||
remove_any_filter(f, f->r ? &f->r->output_filters : NULL,
|
||||
f->r ? &f->r->proto_output_filters : NULL,
|
||||
&f->c->output_filters);
|
||||
}
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
#define FILTER_POOL apr_hook_global_pool
|
||||
#include "apr_hooks.h"
|
||||
|
||||
/*
|
||||
** This macro returns true/false if a given filter should be inserted BEFORE
|
||||
** another filter. This will happen when one of: 1) there isn't another
|
||||
** filter; 2) that filter has a higher filter type (class); 3) that filter
|
||||
** corresponds to a different request.
|
||||
*/
|
||||
#define INSERT_BEFORE(f, before_this) ((before_this) == NULL \
|
||||
|| (before_this)->frec->ftype > (f)->frec->ftype \
|
||||
|| (before_this)->r != (f)->r)
|
||||
|
||||
|
||||
apr_table_t *ms_input_filters = NULL;
|
||||
apr_table_t *ms_output_filters = NULL;
|
||||
|
||||
void init_filter_tables()
|
||||
{
|
||||
if(ms_input_filters == NULL)
|
||||
{
|
||||
ms_input_filters = apr_table_make(FILTER_POOL, 10);
|
||||
ms_output_filters = apr_table_make(FILTER_POOL, 10);
|
||||
}
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_rec_t *) ap_register_input_filter(const char *name,
|
||||
ap_in_filter_func filter_func,
|
||||
ap_init_filter_func filter_init,
|
||||
ap_filter_type ftype)
|
||||
{
|
||||
ap_filter_rec_t *f;
|
||||
|
||||
init_filter_tables();
|
||||
|
||||
f = apr_palloc(FILTER_POOL, sizeof(ap_filter_rec_t));
|
||||
|
||||
f->filter_func.in_func = filter_func;
|
||||
f->filter_init_func = filter_init;
|
||||
f->ftype = ftype;
|
||||
f->name = name;
|
||||
|
||||
apr_table_setn(ms_input_filters, name, (const char *)f);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_rec_t *) ap_register_output_filter(const char *name,
|
||||
ap_out_filter_func filter_func,
|
||||
ap_init_filter_func filter_init,
|
||||
ap_filter_type ftype)
|
||||
{
|
||||
ap_filter_rec_t *f;
|
||||
|
||||
init_filter_tables();
|
||||
|
||||
f = apr_palloc(FILTER_POOL, sizeof(ap_filter_rec_t));
|
||||
|
||||
f->filter_func.out_func = filter_func;
|
||||
f->filter_init_func = filter_init;
|
||||
f->ftype = ftype;
|
||||
f->name = name;
|
||||
|
||||
apr_table_setn(ms_output_filters, name, (const char *)f);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
static ap_filter_t *add_any_filter_handle(ap_filter_rec_t *frec, void *ctx,
|
||||
request_rec *r, conn_rec *c,
|
||||
ap_filter_t **r_filters,
|
||||
ap_filter_t **p_filters,
|
||||
ap_filter_t **c_filters)
|
||||
{
|
||||
apr_pool_t* p = r ? r->pool : c->pool;
|
||||
ap_filter_t *f = apr_palloc(p, sizeof(*f));
|
||||
ap_filter_t **outf;
|
||||
|
||||
if (frec->ftype < AP_FTYPE_PROTOCOL) {
|
||||
if (r) {
|
||||
outf = r_filters;
|
||||
}
|
||||
else {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL,
|
||||
"a content filter was added without a request: %s", frec->name);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else if (frec->ftype < AP_FTYPE_CONNECTION) {
|
||||
if (r) {
|
||||
outf = p_filters;
|
||||
}
|
||||
else {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL,
|
||||
"a protocol filter was added without a request: %s", frec->name);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else {
|
||||
outf = c_filters;
|
||||
}
|
||||
|
||||
f->frec = frec;
|
||||
f->ctx = ctx;
|
||||
f->r = r;
|
||||
f->c = c;
|
||||
f->next = NULL;
|
||||
|
||||
if (INSERT_BEFORE(f, *outf)) {
|
||||
f->next = *outf;
|
||||
|
||||
if (*outf) {
|
||||
ap_filter_t *first = NULL;
|
||||
|
||||
if (r) {
|
||||
/* If we are adding our first non-connection filter,
|
||||
* Then don't try to find the right location, it is
|
||||
* automatically first.
|
||||
*/
|
||||
if (*r_filters != *c_filters) {
|
||||
first = *r_filters;
|
||||
while (first && (first->next != (*outf))) {
|
||||
first = first->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (first && first != (*outf)) {
|
||||
first->next = f;
|
||||
}
|
||||
}
|
||||
*outf = f;
|
||||
}
|
||||
else {
|
||||
ap_filter_t *fscan = *outf;
|
||||
while (!INSERT_BEFORE(f, fscan->next))
|
||||
fscan = fscan->next;
|
||||
|
||||
f->next = fscan->next;
|
||||
fscan->next = f;
|
||||
}
|
||||
|
||||
if (frec->ftype < AP_FTYPE_CONNECTION && (*r_filters == *c_filters)) {
|
||||
*r_filters = *p_filters;
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_t *) ap_add_input_filter(const char *name, void *ctx,
|
||||
request_rec *r, conn_rec *c)
|
||||
{
|
||||
ap_filter_rec_t *f = (ap_filter_rec_t *)apr_table_get(ms_input_filters, name);
|
||||
|
||||
if(f == NULL)
|
||||
return NULL;
|
||||
|
||||
return add_any_filter_handle(f, ctx, r, c,
|
||||
r ? &r->input_filters : NULL,
|
||||
r ? &r->proto_input_filters : NULL, &c->input_filters);
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_filter_t *) ap_add_output_filter(const char *name, void *ctx,
|
||||
request_rec *r, conn_rec *c)
|
||||
{
|
||||
ap_filter_rec_t *f = (ap_filter_rec_t *)apr_table_get(ms_output_filters, name);
|
||||
|
||||
if(f == NULL)
|
||||
return NULL;
|
||||
|
||||
return add_any_filter_handle(f, ctx, r, c,
|
||||
r ? &r->output_filters : NULL,
|
||||
r ? &r->proto_output_filters : NULL, &c->output_filters);
|
||||
}
|
||||
|
||||
static void remove_any_filter(ap_filter_t *f, ap_filter_t **r_filt, ap_filter_t **p_filt,
|
||||
ap_filter_t **c_filt)
|
||||
{
|
||||
ap_filter_t **curr = r_filt ? r_filt : c_filt;
|
||||
ap_filter_t *fscan = *curr;
|
||||
|
||||
if (p_filt && *p_filt == f)
|
||||
*p_filt = (*p_filt)->next;
|
||||
|
||||
if (*curr == f) {
|
||||
*curr = (*curr)->next;
|
||||
return;
|
||||
}
|
||||
|
||||
while (fscan->next != f) {
|
||||
if (!(fscan = fscan->next)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fscan->next = f->next;
|
||||
}
|
||||
|
||||
AP_DECLARE(void) ap_remove_input_filter(ap_filter_t *f)
|
||||
{
|
||||
remove_any_filter(f, f->r ? &f->r->input_filters : NULL,
|
||||
f->r ? &f->r->proto_input_filters : NULL,
|
||||
&f->c->input_filters);
|
||||
}
|
||||
|
||||
AP_DECLARE(void) ap_remove_output_filter(ap_filter_t *f)
|
||||
{
|
||||
remove_any_filter(f, f->r ? &f->r->output_filters : NULL,
|
||||
f->r ? &f->r->proto_output_filters : NULL,
|
||||
&f->c->output_filters);
|
||||
}
|
||||
|
@ -1,65 +1,65 @@
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
|
||||
#define DECLARE_EXTERNAL_HOOK(ns,link,ret,name,args) \
|
||||
ns##_HOOK_##name##_t *hookfn_##name = NULL; \
|
||||
link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \
|
||||
const char * const *aszPre, \
|
||||
const char * const *aszSucc, int nOrder) \
|
||||
{ \
|
||||
hookfn_##name = pf; \
|
||||
}
|
||||
|
||||
#define DECLARE_HOOK(ret,name,args) \
|
||||
DECLARE_EXTERNAL_HOOK(ap,AP,ret,name,args)
|
||||
|
||||
DECLARE_HOOK(int,pre_config,(apr_pool_t *pconf,apr_pool_t *plog, apr_pool_t *ptemp))
|
||||
DECLARE_HOOK(int,post_config,(apr_pool_t *pconf,apr_pool_t *plog, apr_pool_t *ptemp,server_rec *s))
|
||||
DECLARE_HOOK(void,child_init,(apr_pool_t *pchild, server_rec *s))
|
||||
DECLARE_HOOK(int,process_connection,(conn_rec *c))
|
||||
DECLARE_HOOK(int,post_read_request,(request_rec *r))
|
||||
DECLARE_HOOK(int,fixups,(request_rec *r))
|
||||
DECLARE_HOOK(void, error_log, (const char *file, int line, int level,
|
||||
apr_status_t status, const server_rec *s,
|
||||
const request_rec *r, apr_pool_t *pool,
|
||||
const char *errstr))
|
||||
DECLARE_HOOK(int,log_transaction,(request_rec *r))
|
||||
DECLARE_HOOK(void,insert_filter,(request_rec *r))
|
||||
DECLARE_HOOK(void,insert_error_filter,(request_rec *r))
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
|
||||
#define DECLARE_EXTERNAL_HOOK(ns,link,ret,name,args) \
|
||||
ns##_HOOK_##name##_t *hookfn_##name = NULL; \
|
||||
link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \
|
||||
const char * const *aszPre, \
|
||||
const char * const *aszSucc, int nOrder) \
|
||||
{ \
|
||||
hookfn_##name = pf; \
|
||||
}
|
||||
|
||||
#define DECLARE_HOOK(ret,name,args) \
|
||||
DECLARE_EXTERNAL_HOOK(ap,AP,ret,name,args)
|
||||
|
||||
DECLARE_HOOK(int,pre_config,(apr_pool_t *pconf,apr_pool_t *plog, apr_pool_t *ptemp))
|
||||
DECLARE_HOOK(int,post_config,(apr_pool_t *pconf,apr_pool_t *plog, apr_pool_t *ptemp,server_rec *s))
|
||||
DECLARE_HOOK(void,child_init,(apr_pool_t *pchild, server_rec *s))
|
||||
DECLARE_HOOK(int,process_connection,(conn_rec *c))
|
||||
DECLARE_HOOK(int,post_read_request,(request_rec *r))
|
||||
DECLARE_HOOK(int,fixups,(request_rec *r))
|
||||
DECLARE_HOOK(void, error_log, (const char *file, int line, int level,
|
||||
apr_status_t status, const server_rec *s,
|
||||
const request_rec *r, apr_pool_t *pool,
|
||||
const char *errstr))
|
||||
DECLARE_HOOK(int,log_transaction,(request_rec *r))
|
||||
DECLARE_HOOK(void,insert_filter,(request_rec *r))
|
||||
DECLARE_HOOK(void,insert_error_filter,(request_rec *r))
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,434 +1,434 @@
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
//#undef inline
|
||||
#define inline inline
|
||||
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include "api.h"
|
||||
|
||||
|
||||
char *config_file = NULL;
|
||||
char *url_file = NULL;
|
||||
char *event_files[1024];
|
||||
int event_file_cnt;
|
||||
char *event_file = NULL;
|
||||
int event_file_len = 0;
|
||||
char **event_file_lines;
|
||||
int event_line_cnt = 0;
|
||||
int event_file_blocks[256];
|
||||
|
||||
#define EVENT_FILE_MAX_SIZE (16*1024*1024)
|
||||
|
||||
#define MAX_URLS 4096
|
||||
|
||||
char urls[MAX_URLS][4096];
|
||||
int url_cnt = 0;
|
||||
|
||||
void readeventfile(char *name)
|
||||
{
|
||||
if(event_file == NULL)
|
||||
{
|
||||
event_file = (char *)malloc(EVENT_FILE_MAX_SIZE);
|
||||
event_file_lines = (char **)malloc(EVENT_FILE_MAX_SIZE);
|
||||
}
|
||||
|
||||
event_file_len = 0;
|
||||
event_line_cnt = 0;
|
||||
memset(event_file_blocks, -1, sizeof(int) * 256);
|
||||
|
||||
FILE *fr = fopen(name, "rb");
|
||||
|
||||
if(fr == NULL)
|
||||
return;
|
||||
|
||||
event_file_len = fread(event_file, 1, EVENT_FILE_MAX_SIZE - 1, fr);
|
||||
|
||||
fclose(fr);
|
||||
|
||||
event_file[event_file_len] = 0;
|
||||
}
|
||||
|
||||
void parseeventfile()
|
||||
{
|
||||
if(event_file_len == 0 || event_file == NULL)
|
||||
return;
|
||||
|
||||
char *t = event_file;
|
||||
char *e = event_file + event_file_len;
|
||||
int nocrlf = 1;
|
||||
|
||||
while(t < e)
|
||||
{
|
||||
event_file_lines[event_line_cnt++] = t;
|
||||
|
||||
while(t < e && *t != 10 && *t != 13)
|
||||
t++;
|
||||
|
||||
char ct = *t;
|
||||
*t = 0;
|
||||
int i = event_line_cnt - 1;
|
||||
|
||||
int l = strlen(event_file_lines[i]);
|
||||
|
||||
if(l == 14 && event_file_lines[i][0] == '-' && event_file_lines[i][1] == '-' && event_file_lines[i][l-2] == '-' && event_file_lines[i][l-1] == '-')
|
||||
{
|
||||
char blk = event_file_lines[i][l-3];
|
||||
|
||||
event_file_blocks[blk] = i;
|
||||
|
||||
if(blk == 'C' || blk == 'G')
|
||||
{
|
||||
nocrlf = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
nocrlf = 1;
|
||||
}
|
||||
}
|
||||
*t = ct;
|
||||
|
||||
if(nocrlf)
|
||||
while(t < e && (*t == 10 || *t == 13))
|
||||
*t++ = 0;
|
||||
else
|
||||
while(t < e && (*t == 10 || *t == 13))
|
||||
t++;
|
||||
}
|
||||
}
|
||||
|
||||
void parseargs(int argc, char *argv[])
|
||||
{
|
||||
int i = 1;
|
||||
|
||||
event_file_cnt = 0;
|
||||
|
||||
while(i < argc)
|
||||
{
|
||||
if(argv[i][0] == '-')
|
||||
{
|
||||
if(argv[i][1] == 'c' && i < argc - 1)
|
||||
{
|
||||
config_file = argv[i + 1];
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
if(argv[i][1] == 'u' && i < argc - 1)
|
||||
{
|
||||
url_file = argv[i + 1];
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if(event_file_cnt == 1024)
|
||||
{
|
||||
fprintf(stderr, "Too many input files! (limit 1024)\n");
|
||||
break;
|
||||
}
|
||||
|
||||
event_files[event_file_cnt++] = argv[i++];
|
||||
}
|
||||
}
|
||||
|
||||
void log(void *obj, int level, char *str)
|
||||
{
|
||||
printf("%s\n", str);
|
||||
}
|
||||
|
||||
unsigned int bodypos = 0;
|
||||
|
||||
apr_status_t readbody(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos)
|
||||
{
|
||||
int j = event_file_blocks['C'];
|
||||
|
||||
if(j < 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
j++;
|
||||
|
||||
if(event_file_lines[j][0] == 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int l = strlen(event_file_lines[j]);
|
||||
unsigned int size = length;
|
||||
|
||||
if(bodypos + size > l)
|
||||
size = l - bodypos;
|
||||
|
||||
memcpy(buf, &event_file_lines[j][bodypos], size);
|
||||
|
||||
bodypos += size;
|
||||
*readcnt = size;
|
||||
|
||||
if(bodypos == l)
|
||||
{
|
||||
*is_eos = 1;
|
||||
}
|
||||
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int responsepos = 0;
|
||||
|
||||
apr_status_t readresponse(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos)
|
||||
{
|
||||
int j = event_file_blocks['G'];
|
||||
|
||||
if(j < 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
j++;
|
||||
|
||||
if(event_file_lines[j][0] == 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int l = strlen(event_file_lines[j]);
|
||||
unsigned int size = length;
|
||||
|
||||
if(responsepos + size > l)
|
||||
size = l - responsepos;
|
||||
|
||||
memcpy(buf, &event_file_lines[j][responsepos], size);
|
||||
|
||||
responsepos += size;
|
||||
*readcnt = size;
|
||||
|
||||
if(responsepos == l)
|
||||
*is_eos = 1;
|
||||
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
void main(int argc, char *argv[])
|
||||
{
|
||||
directory_config *config;
|
||||
conn_rec *c;
|
||||
request_rec *r;
|
||||
|
||||
parseargs(argc, argv);
|
||||
|
||||
if(config_file == NULL || argc < 3)
|
||||
{
|
||||
printf("Usage:\n");
|
||||
printf("standalone.exe -c <config_file> [-u <text_file_with_urls>] <event_file1> [<event_file2> <event_file3> ...]\n");
|
||||
return;
|
||||
}
|
||||
|
||||
modsecSetLogHook(NULL, log);
|
||||
|
||||
modsecSetReadBody(readbody);
|
||||
modsecSetReadResponse(readresponse);
|
||||
|
||||
modsecInit();
|
||||
|
||||
modsecStartConfig();
|
||||
|
||||
config = modsecGetDefaultConfig();
|
||||
|
||||
const char * err = modsecProcessConfig(config, config_file, "c:\\inetpub\\wwwroot");
|
||||
|
||||
if(err != NULL)
|
||||
{
|
||||
printf("%s\n", err);
|
||||
}
|
||||
|
||||
modsecFinalizeConfig();
|
||||
|
||||
modsecInitProcess();
|
||||
|
||||
if(url_file != NULL)
|
||||
{
|
||||
FILE *fr = fopen(url_file, "rb");
|
||||
int i = 0;
|
||||
|
||||
while(fgets(urls[i],4096,fr) != NULL)
|
||||
{
|
||||
urls[i][4095] = 0;
|
||||
|
||||
int l = strlen(urls[i]) - 1;
|
||||
|
||||
if(l < 8)
|
||||
continue;
|
||||
|
||||
while(urls[i][l] == 10 || urls[i][l] == 13)
|
||||
l--;
|
||||
|
||||
urls[i++][l + 1] = 0;
|
||||
}
|
||||
|
||||
url_cnt = i;
|
||||
fclose(fr);
|
||||
}
|
||||
|
||||
for(int i = 0; i < event_file_cnt; i++)
|
||||
{
|
||||
if(url_cnt == 0)
|
||||
{
|
||||
urls[0][0] = 0;
|
||||
url_cnt = 1;
|
||||
}
|
||||
|
||||
for(int ui = 0; ui < url_cnt; ui++)
|
||||
{
|
||||
readeventfile(event_files[i]);
|
||||
parseeventfile();
|
||||
|
||||
bodypos = 0;
|
||||
responsepos = 0;
|
||||
|
||||
c = modsecNewConnection();
|
||||
|
||||
modsecProcessConnection(c);
|
||||
|
||||
r = modsecNewRequest(c, config);
|
||||
|
||||
int j = event_file_blocks['B'];
|
||||
|
||||
if(j < 0)
|
||||
continue;
|
||||
|
||||
j++;
|
||||
|
||||
if(event_file_lines[j][0] == 0)
|
||||
continue;
|
||||
|
||||
char *method = event_file_lines[j];
|
||||
char *url = strchr(method, 32);
|
||||
char *proto = strchr(url + 1, 32);
|
||||
|
||||
if(url == NULL || proto == NULL)
|
||||
continue;
|
||||
|
||||
*url++=0;
|
||||
*proto++=0;
|
||||
|
||||
if(urls[ui][0] != 0)
|
||||
{
|
||||
url = urls[ui];
|
||||
}
|
||||
|
||||
#define SETMETHOD(m) if(strcmp(method,#m) == 0){ r->method = method; r->method_number = M_##m; }
|
||||
|
||||
r->method = "INVALID";
|
||||
r->method_number = M_INVALID;
|
||||
|
||||
SETMETHOD(OPTIONS)
|
||||
SETMETHOD(GET)
|
||||
SETMETHOD(POST)
|
||||
SETMETHOD(PUT)
|
||||
SETMETHOD(DELETE)
|
||||
SETMETHOD(TRACE)
|
||||
SETMETHOD(CONNECT)
|
||||
SETMETHOD(MOVE)
|
||||
SETMETHOD(COPY)
|
||||
SETMETHOD(PROPFIND)
|
||||
SETMETHOD(PROPPATCH)
|
||||
SETMETHOD(MKCOL)
|
||||
SETMETHOD(LOCK)
|
||||
SETMETHOD(UNLOCK)
|
||||
|
||||
r->protocol = proto;
|
||||
|
||||
while(event_file_lines[++j][0] != 0)
|
||||
{
|
||||
char *value = strchr(event_file_lines[j], ':');
|
||||
|
||||
if(value == NULL)
|
||||
break;
|
||||
|
||||
*value++ = 0;
|
||||
|
||||
while(*value <=32 && *value != 0)
|
||||
value++;
|
||||
|
||||
apr_table_setn(r->headers_in, event_file_lines[j], value);
|
||||
}
|
||||
|
||||
r->content_encoding = apr_table_get(r->headers_in, "Content-Encoding");
|
||||
r->content_type = apr_table_get(r->headers_in, "Content-Type");
|
||||
r->hostname = apr_table_get(r->headers_in, "Host");
|
||||
r->path_info = url;
|
||||
|
||||
char *query = strchr(url, '?');
|
||||
char *rawurl = url;
|
||||
|
||||
if(query != NULL)
|
||||
{
|
||||
rawurl = (char *)apr_palloc(r->pool, strlen(url) + 1);
|
||||
strcpy(rawurl, url);
|
||||
*query++ = 0;
|
||||
r->args = query;
|
||||
}
|
||||
|
||||
const char *lng = apr_table_get(r->headers_in, "Content-Languages");
|
||||
|
||||
if(lng != NULL)
|
||||
{
|
||||
r->content_languages = apr_array_make(r->pool, 1, sizeof(const char *));
|
||||
|
||||
*(const char **)apr_array_push(r->content_languages) = lng;
|
||||
}
|
||||
|
||||
r->request_time = apr_time_now();
|
||||
|
||||
r->parsed_uri.scheme = "http";
|
||||
r->parsed_uri.path = r->path_info;
|
||||
r->parsed_uri.hostname = (char *)r->hostname;
|
||||
r->parsed_uri.is_initialized = 1;
|
||||
r->parsed_uri.port = 80;
|
||||
r->parsed_uri.port_str = "80";
|
||||
r->parsed_uri.query = r->args;
|
||||
r->parsed_uri.dns_looked_up = 0;
|
||||
r->parsed_uri.dns_resolved = 0;
|
||||
r->parsed_uri.password = NULL;
|
||||
r->parsed_uri.user = NULL;
|
||||
r->parsed_uri.fragment = NULL;
|
||||
|
||||
r->unparsed_uri = rawurl;
|
||||
r->uri = r->unparsed_uri;
|
||||
|
||||
r->the_request = (char *)apr_palloc(r->pool, strlen(r->method) + 1 + strlen(r->uri) + 1 + strlen(r->protocol) + 1);
|
||||
|
||||
strcpy(r->the_request, r->method);
|
||||
strcat(r->the_request, " ");
|
||||
strcat(r->the_request, r->uri);
|
||||
strcat(r->the_request, " ");
|
||||
strcat(r->the_request, r->protocol);
|
||||
|
||||
apr_table_setn(r->subprocess_env, "UNIQUE_ID", "1");
|
||||
|
||||
modsecProcessRequest(r);
|
||||
modsecProcessResponse(r);
|
||||
modsecFinishRequest(r);
|
||||
}
|
||||
}
|
||||
|
||||
modsecTerminate();
|
||||
getch();
|
||||
}
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
//#undef inline
|
||||
#define inline inline
|
||||
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include "api.h"
|
||||
|
||||
|
||||
char *config_file = NULL;
|
||||
char *url_file = NULL;
|
||||
char *event_files[1024];
|
||||
int event_file_cnt;
|
||||
char *event_file = NULL;
|
||||
int event_file_len = 0;
|
||||
char **event_file_lines;
|
||||
int event_line_cnt = 0;
|
||||
int event_file_blocks[256];
|
||||
|
||||
#define EVENT_FILE_MAX_SIZE (16*1024*1024)
|
||||
|
||||
#define MAX_URLS 4096
|
||||
|
||||
char urls[MAX_URLS][4096];
|
||||
int url_cnt = 0;
|
||||
|
||||
void readeventfile(char *name)
|
||||
{
|
||||
if(event_file == NULL)
|
||||
{
|
||||
event_file = (char *)malloc(EVENT_FILE_MAX_SIZE);
|
||||
event_file_lines = (char **)malloc(EVENT_FILE_MAX_SIZE);
|
||||
}
|
||||
|
||||
event_file_len = 0;
|
||||
event_line_cnt = 0;
|
||||
memset(event_file_blocks, -1, sizeof(int) * 256);
|
||||
|
||||
FILE *fr = fopen(name, "rb");
|
||||
|
||||
if(fr == NULL)
|
||||
return;
|
||||
|
||||
event_file_len = fread(event_file, 1, EVENT_FILE_MAX_SIZE - 1, fr);
|
||||
|
||||
fclose(fr);
|
||||
|
||||
event_file[event_file_len] = 0;
|
||||
}
|
||||
|
||||
void parseeventfile()
|
||||
{
|
||||
if(event_file_len == 0 || event_file == NULL)
|
||||
return;
|
||||
|
||||
char *t = event_file;
|
||||
char *e = event_file + event_file_len;
|
||||
int nocrlf = 1;
|
||||
|
||||
while(t < e)
|
||||
{
|
||||
event_file_lines[event_line_cnt++] = t;
|
||||
|
||||
while(t < e && *t != 10 && *t != 13)
|
||||
t++;
|
||||
|
||||
char ct = *t;
|
||||
*t = 0;
|
||||
int i = event_line_cnt - 1;
|
||||
|
||||
int l = strlen(event_file_lines[i]);
|
||||
|
||||
if(l == 14 && event_file_lines[i][0] == '-' && event_file_lines[i][1] == '-' && event_file_lines[i][l-2] == '-' && event_file_lines[i][l-1] == '-')
|
||||
{
|
||||
char blk = event_file_lines[i][l-3];
|
||||
|
||||
event_file_blocks[blk] = i;
|
||||
|
||||
if(blk == 'C' || blk == 'G')
|
||||
{
|
||||
nocrlf = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
nocrlf = 1;
|
||||
}
|
||||
}
|
||||
*t = ct;
|
||||
|
||||
if(nocrlf)
|
||||
while(t < e && (*t == 10 || *t == 13))
|
||||
*t++ = 0;
|
||||
else
|
||||
while(t < e && (*t == 10 || *t == 13))
|
||||
t++;
|
||||
}
|
||||
}
|
||||
|
||||
void parseargs(int argc, char *argv[])
|
||||
{
|
||||
int i = 1;
|
||||
|
||||
event_file_cnt = 0;
|
||||
|
||||
while(i < argc)
|
||||
{
|
||||
if(argv[i][0] == '-')
|
||||
{
|
||||
if(argv[i][1] == 'c' && i < argc - 1)
|
||||
{
|
||||
config_file = argv[i + 1];
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
if(argv[i][1] == 'u' && i < argc - 1)
|
||||
{
|
||||
url_file = argv[i + 1];
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if(event_file_cnt == 1024)
|
||||
{
|
||||
fprintf(stderr, "Too many input files! (limit 1024)\n");
|
||||
break;
|
||||
}
|
||||
|
||||
event_files[event_file_cnt++] = argv[i++];
|
||||
}
|
||||
}
|
||||
|
||||
void log(void *obj, int level, char *str)
|
||||
{
|
||||
printf("%s\n", str);
|
||||
}
|
||||
|
||||
unsigned int bodypos = 0;
|
||||
|
||||
apr_status_t readbody(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos)
|
||||
{
|
||||
int j = event_file_blocks['C'];
|
||||
|
||||
if(j < 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
j++;
|
||||
|
||||
if(event_file_lines[j][0] == 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int l = strlen(event_file_lines[j]);
|
||||
unsigned int size = length;
|
||||
|
||||
if(bodypos + size > l)
|
||||
size = l - bodypos;
|
||||
|
||||
memcpy(buf, &event_file_lines[j][bodypos], size);
|
||||
|
||||
bodypos += size;
|
||||
*readcnt = size;
|
||||
|
||||
if(bodypos == l)
|
||||
{
|
||||
*is_eos = 1;
|
||||
}
|
||||
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int responsepos = 0;
|
||||
|
||||
apr_status_t readresponse(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos)
|
||||
{
|
||||
int j = event_file_blocks['G'];
|
||||
|
||||
if(j < 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
j++;
|
||||
|
||||
if(event_file_lines[j][0] == 0)
|
||||
{
|
||||
*is_eos = 1;
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned int l = strlen(event_file_lines[j]);
|
||||
unsigned int size = length;
|
||||
|
||||
if(responsepos + size > l)
|
||||
size = l - responsepos;
|
||||
|
||||
memcpy(buf, &event_file_lines[j][responsepos], size);
|
||||
|
||||
responsepos += size;
|
||||
*readcnt = size;
|
||||
|
||||
if(responsepos == l)
|
||||
*is_eos = 1;
|
||||
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
void main(int argc, char *argv[])
|
||||
{
|
||||
directory_config *config;
|
||||
conn_rec *c;
|
||||
request_rec *r;
|
||||
|
||||
parseargs(argc, argv);
|
||||
|
||||
if(config_file == NULL || argc < 3)
|
||||
{
|
||||
printf("Usage:\n");
|
||||
printf("standalone.exe -c <config_file> [-u <text_file_with_urls>] <event_file1> [<event_file2> <event_file3> ...]\n");
|
||||
return;
|
||||
}
|
||||
|
||||
modsecSetLogHook(NULL, log);
|
||||
|
||||
modsecSetReadBody(readbody);
|
||||
modsecSetReadResponse(readresponse);
|
||||
|
||||
modsecInit();
|
||||
|
||||
modsecStartConfig();
|
||||
|
||||
config = modsecGetDefaultConfig();
|
||||
|
||||
const char * err = modsecProcessConfig(config, config_file, "c:\\inetpub\\wwwroot");
|
||||
|
||||
if(err != NULL)
|
||||
{
|
||||
printf("%s\n", err);
|
||||
}
|
||||
|
||||
modsecFinalizeConfig();
|
||||
|
||||
modsecInitProcess();
|
||||
|
||||
if(url_file != NULL)
|
||||
{
|
||||
FILE *fr = fopen(url_file, "rb");
|
||||
int i = 0;
|
||||
|
||||
while(fgets(urls[i],4096,fr) != NULL)
|
||||
{
|
||||
urls[i][4095] = 0;
|
||||
|
||||
int l = strlen(urls[i]) - 1;
|
||||
|
||||
if(l < 8)
|
||||
continue;
|
||||
|
||||
while(urls[i][l] == 10 || urls[i][l] == 13)
|
||||
l--;
|
||||
|
||||
urls[i++][l + 1] = 0;
|
||||
}
|
||||
|
||||
url_cnt = i;
|
||||
fclose(fr);
|
||||
}
|
||||
|
||||
for(int i = 0; i < event_file_cnt; i++)
|
||||
{
|
||||
if(url_cnt == 0)
|
||||
{
|
||||
urls[0][0] = 0;
|
||||
url_cnt = 1;
|
||||
}
|
||||
|
||||
for(int ui = 0; ui < url_cnt; ui++)
|
||||
{
|
||||
readeventfile(event_files[i]);
|
||||
parseeventfile();
|
||||
|
||||
bodypos = 0;
|
||||
responsepos = 0;
|
||||
|
||||
c = modsecNewConnection();
|
||||
|
||||
modsecProcessConnection(c);
|
||||
|
||||
r = modsecNewRequest(c, config);
|
||||
|
||||
int j = event_file_blocks['B'];
|
||||
|
||||
if(j < 0)
|
||||
continue;
|
||||
|
||||
j++;
|
||||
|
||||
if(event_file_lines[j][0] == 0)
|
||||
continue;
|
||||
|
||||
char *method = event_file_lines[j];
|
||||
char *url = strchr(method, 32);
|
||||
char *proto = strchr(url + 1, 32);
|
||||
|
||||
if(url == NULL || proto == NULL)
|
||||
continue;
|
||||
|
||||
*url++=0;
|
||||
*proto++=0;
|
||||
|
||||
if(urls[ui][0] != 0)
|
||||
{
|
||||
url = urls[ui];
|
||||
}
|
||||
|
||||
#define SETMETHOD(m) if(strcmp(method,#m) == 0){ r->method = method; r->method_number = M_##m; }
|
||||
|
||||
r->method = "INVALID";
|
||||
r->method_number = M_INVALID;
|
||||
|
||||
SETMETHOD(OPTIONS)
|
||||
SETMETHOD(GET)
|
||||
SETMETHOD(POST)
|
||||
SETMETHOD(PUT)
|
||||
SETMETHOD(DELETE)
|
||||
SETMETHOD(TRACE)
|
||||
SETMETHOD(CONNECT)
|
||||
SETMETHOD(MOVE)
|
||||
SETMETHOD(COPY)
|
||||
SETMETHOD(PROPFIND)
|
||||
SETMETHOD(PROPPATCH)
|
||||
SETMETHOD(MKCOL)
|
||||
SETMETHOD(LOCK)
|
||||
SETMETHOD(UNLOCK)
|
||||
|
||||
r->protocol = proto;
|
||||
|
||||
while(event_file_lines[++j][0] != 0)
|
||||
{
|
||||
char *value = strchr(event_file_lines[j], ':');
|
||||
|
||||
if(value == NULL)
|
||||
break;
|
||||
|
||||
*value++ = 0;
|
||||
|
||||
while(*value <=32 && *value != 0)
|
||||
value++;
|
||||
|
||||
apr_table_setn(r->headers_in, event_file_lines[j], value);
|
||||
}
|
||||
|
||||
r->content_encoding = apr_table_get(r->headers_in, "Content-Encoding");
|
||||
r->content_type = apr_table_get(r->headers_in, "Content-Type");
|
||||
r->hostname = apr_table_get(r->headers_in, "Host");
|
||||
r->path_info = url;
|
||||
|
||||
char *query = strchr(url, '?');
|
||||
char *rawurl = url;
|
||||
|
||||
if(query != NULL)
|
||||
{
|
||||
rawurl = (char *)apr_palloc(r->pool, strlen(url) + 1);
|
||||
strcpy(rawurl, url);
|
||||
*query++ = 0;
|
||||
r->args = query;
|
||||
}
|
||||
|
||||
const char *lng = apr_table_get(r->headers_in, "Content-Languages");
|
||||
|
||||
if(lng != NULL)
|
||||
{
|
||||
r->content_languages = apr_array_make(r->pool, 1, sizeof(const char *));
|
||||
|
||||
*(const char **)apr_array_push(r->content_languages) = lng;
|
||||
}
|
||||
|
||||
r->request_time = apr_time_now();
|
||||
|
||||
r->parsed_uri.scheme = "http";
|
||||
r->parsed_uri.path = r->path_info;
|
||||
r->parsed_uri.hostname = (char *)r->hostname;
|
||||
r->parsed_uri.is_initialized = 1;
|
||||
r->parsed_uri.port = 80;
|
||||
r->parsed_uri.port_str = "80";
|
||||
r->parsed_uri.query = r->args;
|
||||
r->parsed_uri.dns_looked_up = 0;
|
||||
r->parsed_uri.dns_resolved = 0;
|
||||
r->parsed_uri.password = NULL;
|
||||
r->parsed_uri.user = NULL;
|
||||
r->parsed_uri.fragment = NULL;
|
||||
|
||||
r->unparsed_uri = rawurl;
|
||||
r->uri = r->unparsed_uri;
|
||||
|
||||
r->the_request = (char *)apr_palloc(r->pool, strlen(r->method) + 1 + strlen(r->uri) + 1 + strlen(r->protocol) + 1);
|
||||
|
||||
strcpy(r->the_request, r->method);
|
||||
strcat(r->the_request, " ");
|
||||
strcat(r->the_request, r->uri);
|
||||
strcat(r->the_request, " ");
|
||||
strcat(r->the_request, r->protocol);
|
||||
|
||||
apr_table_setn(r->subprocess_env, "UNIQUE_ID", "1");
|
||||
|
||||
modsecProcessRequest(r);
|
||||
modsecProcessResponse(r);
|
||||
modsecFinishRequest(r);
|
||||
}
|
||||
}
|
||||
|
||||
modsecTerminate();
|
||||
getch();
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1,162 +1,162 @@
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
|
||||
static apr_status_t regex_cleanup(void *preg)
|
||||
{
|
||||
ap_regfree((ap_regex_t *) preg);
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_regex_t *) ap_pregcomp(apr_pool_t *p, const char *pattern,
|
||||
int cflags)
|
||||
{
|
||||
ap_regex_t *preg = apr_palloc(p, sizeof *preg);
|
||||
|
||||
if (ap_regcomp(preg, pattern, cflags)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
apr_pool_cleanup_register(p, (void *) preg, regex_cleanup,
|
||||
apr_pool_cleanup_null);
|
||||
|
||||
return preg;
|
||||
}
|
||||
|
||||
AP_DECLARE(void) ap_regfree(ap_regex_t *preg)
|
||||
{
|
||||
(pcre_free)(preg->re_pcre);
|
||||
}
|
||||
|
||||
AP_DECLARE(int) ap_regcomp(ap_regex_t *preg, const char *pattern, int cflags)
|
||||
{
|
||||
const char *errorptr;
|
||||
int erroffset;
|
||||
int options = 0;
|
||||
int nsub = 0;
|
||||
|
||||
if ((cflags & AP_REG_ICASE) != 0) options |= PCRE_CASELESS;
|
||||
if ((cflags & AP_REG_NEWLINE) != 0) options |= PCRE_MULTILINE;
|
||||
|
||||
preg->re_pcre = pcre_compile(pattern, options, &errorptr, &erroffset, NULL);
|
||||
preg->re_erroffset = erroffset;
|
||||
|
||||
if (preg->re_pcre == NULL) return AP_REG_INVARG;
|
||||
|
||||
pcre_fullinfo((const pcre *)preg->re_pcre, NULL, PCRE_INFO_CAPTURECOUNT, &nsub);
|
||||
preg->re_nsub = nsub;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef POSIX_MALLOC_THRESHOLD
|
||||
#define POSIX_MALLOC_THRESHOLD (10)
|
||||
#endif
|
||||
|
||||
AP_DECLARE(int) ap_regexec(const ap_regex_t *preg, const char *string,
|
||||
apr_size_t nmatch, ap_regmatch_t pmatch[],
|
||||
int eflags)
|
||||
{
|
||||
int rc;
|
||||
int options = 0;
|
||||
int *ovector = NULL;
|
||||
int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
|
||||
int allocated_ovector = 0;
|
||||
|
||||
if ((eflags & AP_REG_NOTBOL) != 0) options |= PCRE_NOTBOL;
|
||||
if ((eflags & AP_REG_NOTEOL) != 0) options |= PCRE_NOTEOL;
|
||||
|
||||
((ap_regex_t *)preg)->re_erroffset = (apr_size_t)(-1); /* Only has meaning after compile */
|
||||
|
||||
if (nmatch > 0)
|
||||
{
|
||||
if (nmatch <= POSIX_MALLOC_THRESHOLD)
|
||||
{
|
||||
ovector = &(small_ovector[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
ovector = (int *)malloc(sizeof(int) * nmatch * 3);
|
||||
if (ovector == NULL) return AP_REG_ESPACE;
|
||||
allocated_ovector = 1;
|
||||
}
|
||||
}
|
||||
|
||||
rc = pcre_exec((const pcre *)preg->re_pcre, NULL, string, (int)strlen(string),
|
||||
0, options, ovector, nmatch * 3);
|
||||
|
||||
if (rc == 0) rc = nmatch; /* All captured slots were filled in */
|
||||
|
||||
if (rc >= 0)
|
||||
{
|
||||
apr_size_t i;
|
||||
for (i = 0; i < (apr_size_t)rc; i++)
|
||||
{
|
||||
pmatch[i].rm_so = ovector[i*2];
|
||||
pmatch[i].rm_eo = ovector[i*2+1];
|
||||
}
|
||||
if (allocated_ovector) free(ovector);
|
||||
for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (allocated_ovector) free(ovector);
|
||||
switch(rc)
|
||||
{
|
||||
case PCRE_ERROR_NOMATCH: return AP_REG_NOMATCH;
|
||||
case PCRE_ERROR_NULL: return AP_REG_INVARG;
|
||||
case PCRE_ERROR_BADOPTION: return AP_REG_INVARG;
|
||||
case PCRE_ERROR_BADMAGIC: return AP_REG_INVARG;
|
||||
case PCRE_ERROR_UNKNOWN_NODE: return AP_REG_ASSERT;
|
||||
case PCRE_ERROR_NOMEMORY: return AP_REG_ESPACE;
|
||||
#ifdef PCRE_ERROR_MATCHLIMIT
|
||||
case PCRE_ERROR_MATCHLIMIT: return AP_REG_ESPACE;
|
||||
#endif
|
||||
#ifdef PCRE_ERROR_BADUTF8
|
||||
case PCRE_ERROR_BADUTF8: return AP_REG_INVARG;
|
||||
#endif
|
||||
#ifdef PCRE_ERROR_BADUTF8_OFFSET
|
||||
case PCRE_ERROR_BADUTF8_OFFSET: return AP_REG_INVARG;
|
||||
#endif
|
||||
default: return AP_REG_ASSERT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
||||
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "http_core.h"
|
||||
#include "http_request.h"
|
||||
|
||||
#include "modsecurity.h"
|
||||
#include "apache2.h"
|
||||
#include "http_main.h"
|
||||
#include "http_connection.h"
|
||||
|
||||
#include "apr_optional.h"
|
||||
#include "mod_log_config.h"
|
||||
|
||||
#include "msc_logging.h"
|
||||
#include "msc_util.h"
|
||||
|
||||
#include "ap_mpm.h"
|
||||
#include "scoreboard.h"
|
||||
|
||||
#include "apr_version.h"
|
||||
|
||||
#include "apr_lib.h"
|
||||
#include "ap_config.h"
|
||||
#include "http_config.h"
|
||||
|
||||
|
||||
static apr_status_t regex_cleanup(void *preg)
|
||||
{
|
||||
ap_regfree((ap_regex_t *) preg);
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
|
||||
AP_DECLARE(ap_regex_t *) ap_pregcomp(apr_pool_t *p, const char *pattern,
|
||||
int cflags)
|
||||
{
|
||||
ap_regex_t *preg = apr_palloc(p, sizeof *preg);
|
||||
|
||||
if (ap_regcomp(preg, pattern, cflags)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
apr_pool_cleanup_register(p, (void *) preg, regex_cleanup,
|
||||
apr_pool_cleanup_null);
|
||||
|
||||
return preg;
|
||||
}
|
||||
|
||||
AP_DECLARE(void) ap_regfree(ap_regex_t *preg)
|
||||
{
|
||||
(pcre_free)(preg->re_pcre);
|
||||
}
|
||||
|
||||
AP_DECLARE(int) ap_regcomp(ap_regex_t *preg, const char *pattern, int cflags)
|
||||
{
|
||||
const char *errorptr;
|
||||
int erroffset;
|
||||
int options = 0;
|
||||
int nsub = 0;
|
||||
|
||||
if ((cflags & AP_REG_ICASE) != 0) options |= PCRE_CASELESS;
|
||||
if ((cflags & AP_REG_NEWLINE) != 0) options |= PCRE_MULTILINE;
|
||||
|
||||
preg->re_pcre = pcre_compile(pattern, options, &errorptr, &erroffset, NULL);
|
||||
preg->re_erroffset = erroffset;
|
||||
|
||||
if (preg->re_pcre == NULL) return AP_REG_INVARG;
|
||||
|
||||
pcre_fullinfo((const pcre *)preg->re_pcre, NULL, PCRE_INFO_CAPTURECOUNT, &nsub);
|
||||
preg->re_nsub = nsub;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef POSIX_MALLOC_THRESHOLD
|
||||
#define POSIX_MALLOC_THRESHOLD (10)
|
||||
#endif
|
||||
|
||||
AP_DECLARE(int) ap_regexec(const ap_regex_t *preg, const char *string,
|
||||
apr_size_t nmatch, ap_regmatch_t pmatch[],
|
||||
int eflags)
|
||||
{
|
||||
int rc;
|
||||
int options = 0;
|
||||
int *ovector = NULL;
|
||||
int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
|
||||
int allocated_ovector = 0;
|
||||
|
||||
if ((eflags & AP_REG_NOTBOL) != 0) options |= PCRE_NOTBOL;
|
||||
if ((eflags & AP_REG_NOTEOL) != 0) options |= PCRE_NOTEOL;
|
||||
|
||||
((ap_regex_t *)preg)->re_erroffset = (apr_size_t)(-1); /* Only has meaning after compile */
|
||||
|
||||
if (nmatch > 0)
|
||||
{
|
||||
if (nmatch <= POSIX_MALLOC_THRESHOLD)
|
||||
{
|
||||
ovector = &(small_ovector[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
ovector = (int *)malloc(sizeof(int) * nmatch * 3);
|
||||
if (ovector == NULL) return AP_REG_ESPACE;
|
||||
allocated_ovector = 1;
|
||||
}
|
||||
}
|
||||
|
||||
rc = pcre_exec((const pcre *)preg->re_pcre, NULL, string, (int)strlen(string),
|
||||
0, options, ovector, nmatch * 3);
|
||||
|
||||
if (rc == 0) rc = nmatch; /* All captured slots were filled in */
|
||||
|
||||
if (rc >= 0)
|
||||
{
|
||||
apr_size_t i;
|
||||
for (i = 0; i < (apr_size_t)rc; i++)
|
||||
{
|
||||
pmatch[i].rm_so = ovector[i*2];
|
||||
pmatch[i].rm_eo = ovector[i*2+1];
|
||||
}
|
||||
if (allocated_ovector) free(ovector);
|
||||
for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (allocated_ovector) free(ovector);
|
||||
switch(rc)
|
||||
{
|
||||
case PCRE_ERROR_NOMATCH: return AP_REG_NOMATCH;
|
||||
case PCRE_ERROR_NULL: return AP_REG_INVARG;
|
||||
case PCRE_ERROR_BADOPTION: return AP_REG_INVARG;
|
||||
case PCRE_ERROR_BADMAGIC: return AP_REG_INVARG;
|
||||
case PCRE_ERROR_UNKNOWN_NODE: return AP_REG_ASSERT;
|
||||
case PCRE_ERROR_NOMEMORY: return AP_REG_ESPACE;
|
||||
#ifdef PCRE_ERROR_MATCHLIMIT
|
||||
case PCRE_ERROR_MATCHLIMIT: return AP_REG_ESPACE;
|
||||
#endif
|
||||
#ifdef PCRE_ERROR_BADUTF8
|
||||
case PCRE_ERROR_BADUTF8: return AP_REG_INVARG;
|
||||
#endif
|
||||
#ifdef PCRE_ERROR_BADUTF8_OFFSET
|
||||
case PCRE_ERROR_BADUTF8_OFFSET: return AP_REG_INVARG;
|
||||
#endif
|
||||
default: return AP_REG_ASSERT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,26 +1,26 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "standalone", "standalone.vcxproj", "{20EC871F-B6A0-4398-9B67-A33598A796E8}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|x64.Build.0 = Debug|x64
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|Win32.Build.0 = Release|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|x64.ActiveCfg = Release|x64
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "standalone", "standalone.vcxproj", "{20EC871F-B6A0-4398-9B67-A33598A796E8}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Debug|x64.Build.0 = Debug|x64
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|Win32.Build.0 = Release|Win32
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|x64.ActiveCfg = Release|x64
|
||||
{20EC871F-B6A0-4398-9B67-A33598A796E8}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
Binary file not shown.
@ -1,216 +1,216 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{20EC871F-B6A0-4398-9B67-A33598A796E8}</ProjectGuid>
|
||||
<RootNamespace>standalone</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{20EC871F-B6A0-4398-9B67-A33598A796E8}</ProjectGuid>
|
||||
<RootNamespace>standalone</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2;c:\work\httpd-2.2.24\include</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_STANDALONE</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4244;4018</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\x86</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4244;4018</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\amd64</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\x86</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\amd64</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\apache2\acmp.c" />
|
||||
<ClCompile Include="..\apache2\apache2_config.c" />
|
||||
<ClCompile Include="..\apache2\apache2_io.c" />
|
||||
<ClCompile Include="..\apache2\apache2_util.c" />
|
||||
<ClCompile Include="..\apache2\modsecurity.c" />
|
||||
<ClCompile Include="..\apache2\mod_security2.c" />
|
||||
<ClCompile Include="..\apache2\msc_crypt.c" />
|
||||
<ClCompile Include="..\apache2\msc_geo.c" />
|
||||
<ClCompile Include="..\apache2\msc_gsb.c" />
|
||||
<ClCompile Include="..\apache2\msc_logging.c" />
|
||||
<ClCompile Include="..\apache2\msc_lua.c" />
|
||||
<ClCompile Include="..\apache2\msc_multipart.c" />
|
||||
<ClCompile Include="..\apache2\msc_parsers.c" />
|
||||
<ClCompile Include="..\apache2\msc_pcre.c" />
|
||||
<ClCompile Include="..\apache2\msc_release.c" />
|
||||
<ClCompile Include="..\apache2\msc_reqbody.c" />
|
||||
<ClCompile Include="..\apache2\msc_tree.c" />
|
||||
<ClCompile Include="..\apache2\msc_unicode.c" />
|
||||
<ClCompile Include="..\apache2\msc_util.c" />
|
||||
<ClCompile Include="..\apache2\msc_xml.c" />
|
||||
<ClCompile Include="..\apache2\persist_dbm.c" />
|
||||
<ClCompile Include="..\apache2\re.c" />
|
||||
<ClCompile Include="..\apache2\re_actions.c" />
|
||||
<ClCompile Include="..\apache2\re_operators.c" />
|
||||
<ClCompile Include="..\apache2\re_tfns.c" />
|
||||
<ClCompile Include="..\apache2\re_variables.c" />
|
||||
<ClCompile Include="api.c" />
|
||||
<ClCompile Include="buckets.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="config.c" />
|
||||
<ClCompile Include="filters.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hooks.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="regex.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="server.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\apache2\acmp.h" />
|
||||
<ClInclude Include="..\apache2\apache2.h" />
|
||||
<ClInclude Include="..\apache2\modsecurity.h" />
|
||||
<ClInclude Include="..\apache2\modsecurity_config.h" />
|
||||
<ClInclude Include="..\apache2\modsecurity_config_auto.h" />
|
||||
<ClInclude Include="..\apache2\msc_crypt.h" />
|
||||
<ClInclude Include="..\apache2\msc_geo.h" />
|
||||
<ClInclude Include="..\apache2\msc_gsb.h" />
|
||||
<ClInclude Include="..\apache2\msc_logging.h" />
|
||||
<ClInclude Include="..\apache2\msc_lua.h" />
|
||||
<ClInclude Include="..\apache2\msc_multipart.h" />
|
||||
<ClInclude Include="..\apache2\msc_parsers.h" />
|
||||
<ClInclude Include="..\apache2\msc_pcre.h" />
|
||||
<ClInclude Include="..\apache2\msc_release.h" />
|
||||
<ClInclude Include="..\apache2\msc_tree.h" />
|
||||
<ClInclude Include="..\apache2\msc_unicode.h" />
|
||||
<ClInclude Include="..\apache2\msc_util.h" />
|
||||
<ClInclude Include="..\apache2\msc_xml.h" />
|
||||
<ClInclude Include="..\apache2\persist_dbm.h" />
|
||||
<ClInclude Include="..\apache2\re.h" />
|
||||
<ClInclude Include="..\apache2\utf8tables.h" />
|
||||
<ClInclude Include="api.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_STANDALONE</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4244;4018</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\x86</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4244;4018</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\amd64</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\x86</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;%(AdditionalDependencies);libapr-1.lib;libaprutil-1.lib;pcre.lib;libxml2.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>c:\drop\amd64</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\apache2\acmp.c" />
|
||||
<ClCompile Include="..\apache2\apache2_config.c" />
|
||||
<ClCompile Include="..\apache2\apache2_io.c" />
|
||||
<ClCompile Include="..\apache2\apache2_util.c" />
|
||||
<ClCompile Include="..\apache2\modsecurity.c" />
|
||||
<ClCompile Include="..\apache2\mod_security2.c" />
|
||||
<ClCompile Include="..\apache2\msc_crypt.c" />
|
||||
<ClCompile Include="..\apache2\msc_geo.c" />
|
||||
<ClCompile Include="..\apache2\msc_gsb.c" />
|
||||
<ClCompile Include="..\apache2\msc_logging.c" />
|
||||
<ClCompile Include="..\apache2\msc_lua.c" />
|
||||
<ClCompile Include="..\apache2\msc_multipart.c" />
|
||||
<ClCompile Include="..\apache2\msc_parsers.c" />
|
||||
<ClCompile Include="..\apache2\msc_pcre.c" />
|
||||
<ClCompile Include="..\apache2\msc_release.c" />
|
||||
<ClCompile Include="..\apache2\msc_reqbody.c" />
|
||||
<ClCompile Include="..\apache2\msc_tree.c" />
|
||||
<ClCompile Include="..\apache2\msc_unicode.c" />
|
||||
<ClCompile Include="..\apache2\msc_util.c" />
|
||||
<ClCompile Include="..\apache2\msc_xml.c" />
|
||||
<ClCompile Include="..\apache2\persist_dbm.c" />
|
||||
<ClCompile Include="..\apache2\re.c" />
|
||||
<ClCompile Include="..\apache2\re_actions.c" />
|
||||
<ClCompile Include="..\apache2\re_operators.c" />
|
||||
<ClCompile Include="..\apache2\re_tfns.c" />
|
||||
<ClCompile Include="..\apache2\re_variables.c" />
|
||||
<ClCompile Include="api.c" />
|
||||
<ClCompile Include="buckets.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="config.c" />
|
||||
<ClCompile Include="filters.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hooks.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="regex.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ClCompile Include="server.c">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\apache2\acmp.h" />
|
||||
<ClInclude Include="..\apache2\apache2.h" />
|
||||
<ClInclude Include="..\apache2\modsecurity.h" />
|
||||
<ClInclude Include="..\apache2\modsecurity_config.h" />
|
||||
<ClInclude Include="..\apache2\modsecurity_config_auto.h" />
|
||||
<ClInclude Include="..\apache2\msc_crypt.h" />
|
||||
<ClInclude Include="..\apache2\msc_geo.h" />
|
||||
<ClInclude Include="..\apache2\msc_gsb.h" />
|
||||
<ClInclude Include="..\apache2\msc_logging.h" />
|
||||
<ClInclude Include="..\apache2\msc_lua.h" />
|
||||
<ClInclude Include="..\apache2\msc_multipart.h" />
|
||||
<ClInclude Include="..\apache2\msc_parsers.h" />
|
||||
<ClInclude Include="..\apache2\msc_pcre.h" />
|
||||
<ClInclude Include="..\apache2\msc_release.h" />
|
||||
<ClInclude Include="..\apache2\msc_tree.h" />
|
||||
<ClInclude Include="..\apache2\msc_unicode.h" />
|
||||
<ClInclude Include="..\apache2\msc_util.h" />
|
||||
<ClInclude Include="..\apache2\msc_xml.h" />
|
||||
<ClInclude Include="..\apache2\persist_dbm.h" />
|
||||
<ClInclude Include="..\apache2\re.h" />
|
||||
<ClInclude Include="..\apache2\utf8tables.h" />
|
||||
<ClInclude Include="api.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,192 +1,192 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="ModSecurity Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="ModSecurity Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Standalone Sources">
|
||||
<UniqueIdentifier>{2d4a2f57-e994-4dad-888a-e61a65029abf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\apache2\acmp.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\apache2_config.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\apache2_io.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\apache2_util.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\mod_security2.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\modsecurity.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_geo.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_gsb.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_logging.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_lua.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_multipart.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_parsers.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_pcre.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_release.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_reqbody.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_unicode.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_util.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_xml.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\persist_dbm.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_actions.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_operators.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_tfns.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_variables.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="filters.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hooks.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="buckets.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="regex.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="server.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="config.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="api.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_crypt.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_tree.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\apache2\acmp.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\apache2.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\modsecurity.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\modsecurity_config.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\modsecurity_config_auto.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_geo.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_gsb.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_logging.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_lua.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_multipart.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_parsers.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_pcre.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_release.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_unicode.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_util.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_xml.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\persist_dbm.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\re.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\utf8tables.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="api.h">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_crypt.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_tree.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="ModSecurity Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="ModSecurity Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Standalone Sources">
|
||||
<UniqueIdentifier>{2d4a2f57-e994-4dad-888a-e61a65029abf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\apache2\acmp.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\apache2_config.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\apache2_io.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\apache2_util.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\mod_security2.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\modsecurity.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_geo.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_gsb.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_logging.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_lua.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_multipart.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_parsers.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_pcre.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_release.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_reqbody.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_unicode.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_util.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_xml.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\persist_dbm.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_actions.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_operators.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_tfns.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\re_variables.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="filters.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hooks.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="buckets.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="regex.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="server.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="config.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="api.c">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_crypt.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\apache2\msc_tree.c">
|
||||
<Filter>ModSecurity Sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\apache2\acmp.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\apache2.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\modsecurity.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\modsecurity_config.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\modsecurity_config_auto.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_geo.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_gsb.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_logging.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_lua.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_multipart.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_parsers.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_pcre.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_release.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_unicode.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_util.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_xml.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\persist_dbm.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\re.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\utf8tables.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="api.h">
|
||||
<Filter>Standalone Sources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_crypt.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\apache2\msc_tree.h">
|
||||
<Filter>ModSecurity Headers</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LocalDebuggerCommandArguments>-c d:\temp\antixss.conf -u d:\temp\modsec_urls.txt d:\temp\test1.dat</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerCommand>$(TargetPath)</LocalDebuggerCommand>
|
||||
<LocalDebuggerAttach>false</LocalDebuggerAttach>
|
||||
<LocalDebuggerDebuggerType>NativeOnly</LocalDebuggerDebuggerType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LocalDebuggerCommandArguments>-c d:\xss.conf d:\test.dat</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LocalDebuggerCommandArguments>-c d:\temp\antixss.conf -u d:\temp\modsec_urls.txt d:\temp\test1.dat</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerCommand>$(TargetPath)</LocalDebuggerCommand>
|
||||
<LocalDebuggerAttach>false</LocalDebuggerAttach>
|
||||
<LocalDebuggerDebuggerType>NativeOnly</LocalDebuggerDebuggerType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LocalDebuggerCommandArguments>-c d:\xss.conf d:\test.dat</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
</Project>
|
12
v3wkqlls.fht.txt
Normal file
12
v3wkqlls.fht.txt
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
# Please enter the commit message for your changes. Lines starting
|
||||
# with '#' will be ignored, and an empty message aborts the commit.
|
||||
# On branch master
|
||||
# Your branch is ahead of 'origin/master' by 1 commit.
|
||||
#
|
||||
# Changes to be committed:
|
||||
# (use "git reset HEAD <file>..." to unstage)
|
||||
#
|
||||
# deleted: standalone/standalone.sdf
|
||||
#
|
||||
|
Loading…
x
Reference in New Issue
Block a user