Merge branch 'release_2_7_6-rc2'

Release 2.7.6 ready.
This commit is contained in:
Felipe Zimmerle 2013-12-16 07:10:24 -08:00
commit 4a7d439de5
84 changed files with 3908 additions and 20487 deletions

207
CHANGES
View File

@ -1,3 +1,210 @@
16 Dec 2013 - 2.7.6
-------------------
Improvements:
- Organizes all Makefile.am - 1cde4d2dd9d96747536c1c25d06ba0677069477f
Now using one file per line (sorted). This is the better way to handle it, since it reduces the possibility of merge conflicts.
- nginx: generates config file using configure input. - 351b9cc357d439e30ebd61d89a9e38ecf55c6827
The nginx config file was looking for depedencies by its own, by doing that it was ignoring the options that were passed to configure script. This commit deletes this config file and adds a meta-config which is populated by configure whenever the standalone-module is enabled.
- nginx: adds lua support - da16d9e5d51d4ef8734687514a4e1368e7fb4284
- iis: Cosmetics fixies on sqli. - 5046c8327ea21c69b4c0d0c0057c692b05b09fef
This is needed to get it compiled with VS2011 on Windows8
- Regression tests: makes configuration compatible with 2.2 and 2.4 (try 2) - ae252ee8767069363906e5a611dff487b799b839
- nginx: Trying apxs and apxs2 while compiling nginx module - 65d9272fdc353e1263567b60604542d377d19672
- nginx: Trying apxs and apxs2 while compiling nginx module - 35fd75d859e4a8873b8843da1db13e04a1b08140
- macos: Using glibtoolize instead of libtoolize - 751a9f4e45213cd69f00c62c71edc9d7ad99b82d
- regression-tests: makes configuration compatible with 2.2 and 2.4 - 6fc4cac37ab1be8d1232140042b58fe4bd93ee17
- Regression test: get it working with apache 2.4 - e9813cd0d9bfc5b0c9aa5832634ec1b39b805108
Changes in httpd.conf.in to get it working with apache 2.4
- Code cosmetics. - 7366f35c1d80772d739b35da8faa972f92a72b97
Changed to reduce the number of possible fails during Build Bot compilation.
- iis: Waiting for 5 seconds before move curl directory - 9bf2959c919587ebc63f5a1b8c0785da8927bff5
Testing buildbot.
- Redefines unixd_set_global_mutex_perms on tests - f70f6f4281b806627e0cf0dbb9c84ae5864bdb16
Avoding conflicts with the standalone implementation
- Adds verbose quality check - 388943440cc9b8c6fdea09f5e365a2e5a3e792e2
Vera++ and ccpcheck are not outputing to the stderr instead stdout allowing the buildbot to extract some numbers about it.
- Adds support for coding style and quality check - b77e90152d119609ac78a7028383c3b79898b2cf
Initial effort to get the code on shape. This will be executed by the buildbots as soon as they get ready for it.
- iis: New improvements on the Wix installer - 2ea5a74a7bfb00f21312e51e48aa6dac03d84600
* Now the installation is divided in modules: ModSecurity and CRS.
* Added default configuration
* Configuration was moved to "Program Files" folder
* Build_msi script now using candle available in %PATH%
- iis: Removes the installer helper dependency - 1a12648c9f6028f251af0f03c889397c7954b74c
Now using appcmd directly with WiX instead of calling the installer helper.
- iis: Remove readme.html - 550d5aae21cba696cac1ce75ab8113e5255d5a59
This HTML is about "Creating a Native Module for IIS7" not straight related to ModSecurity itself.
- iis: Adds batch script to compile Wix - a2c5fc831baf0b324ebb66b0f878dacf1ec2f808
This batch script can be used to generate our msi installer.
- iis: Adds Wix installer resources - 3604763e15a665eb7a6ecae1f7e7c65cebbb1d17
This is all about cosmetic changes.
- iss: Removes Post-Build event. - 28bbde1bb218b004654cb865fc8563d69b848dc2
There was a copy on Post-Build event using a hard coded path. This patch removes this Post-Build event.
- iis: Relative paths on the VS project file - 368617ddb2443f9b6036f80a648d467d07c9a054
There are a ModSecurityIIS solution and project files, those were using hard coded paths to meet the dependencies. As consequence of the last update in our build scripts, now we are able to built the dependencies and load it to our Visual Studio project using relative paths.
- iis: Adds release script - 9477118903861ce80c4c27cb581bf3462315e98e
- iis: fixies the Installer.cpp coding style - 79875b1af8e8571098345b91557bab9c06eb7c88
- iis: Removes AppWizard remade file - 91738f93bcc82b6ab756c550a66b6cf6af2fa9f8
Apparently the AppWizard was used to generate part of this Installer, the ReadMe.txt created by the AppWizard was removed by this commit
- iss: Removes pre-compiled headers - adfbeb85dcfa9466b72eebb8d1bd8eb7728bab79
No need to use the pre-compiled headers in InstallerHelper, removing it, in order to keep the project lean.
- iis: Moves installer to InstallerHelper - 6adf25667dd4bfa33010bd6d8ae3d35046a69967
To organize the folder the Installer application was renamed to installer helper. It is not the real installer, it is just an helper which is executed during the installation phase.
- iss: Removes fart dependencies - 8c3b8d81b613aaa38f28472af1eb26c90c7fc9da
This commit removes the dependency of the fart.exe utility. The utility was responsible to rename contents inside some dependencies build files. Those modifications are not longer needed.
- iss: Better err handling in build scripts. - 192599bf63b6ae5aa08e4536a90d5d0a17f969f7
Now checking for errors in every step of the build phase
- iis: Moves build_module.bat to build_modsecurity.bat - e25c6b2e85ced7beba4d41867dbdf30e9c1286d3
The build_modsecurity.bat is now on the iis sub-directory, not in the dependencies anymore. Its content was also changed fixing all the paths.
- iis: Identifies arch before unzip apache - cf5de78dfb9fffd21edf17af9e1db8f2fd83c804
Currently we need the Apache binary which could be used in 32 or 64 bits. This patch makes usage of 'cl' to identify which architecture is set.
- iis: Renamves winbuild to dependencies - 1447766e816a896e88c9c8f053fcc3f62797bac1
Since the directory becomes all about dependencies there is no need to call it winbuild anymore.
- iis: Removes unnecessary files from winbuild dir - 9f8cbf6ed8034ba42aa4967699308df09864fd18
Those .mak files seems to be part of an old build system. Since the script are now working fine, this commit removes all those .mac files and also a CMakeList.txt and the Makefile.win.
- iis: Improves the iis build system - b277e538f28c87c81c1b50925dd8b82996b88294
Now checking for common errors while building. Refactoring on the build scripts, now there is this build_dependencies.bat script on the iis sub-folder. By calling this script all the dependencies should be build under the winbuild/. This commit also removes build scripts that were not needed anymore.
- iis: Fixes the vcxproj file - a946a163f0ad822c760af80ca32dda61f0e6b2a9
Versions of the dependencies were changed, as long as the version of the Visual Studio, now 12.
- iis: Removes unecessary files from the build system - 26738d2e34bcc7620047bd23180e0e26a64c71ee
The following files were removed:
* VCVarsQueryRegistry.bat
* vcvars64.bat
* vsvars32.bat
The visual studio files can be called direcltly, not necessary to distribute those files, at least in VS12.
- iss: Changes httpd version 2.4.6 - 0a772cb0748aa51a01800e0473309b9de792b456
Apache version was changed to 2.4.6 to sync with the current apache lounge version.
- iis: Changes the version of the dependencies - 3e6fb41d36b7a5e98a55d8f52b88b29d1bd50b64
* pcre from 8.30 to 8.33
* zlib from 1.2.7 to 1.2.8
* libxml2 from 2.7.7 to 2.9.1
* curl from 7.24 to 7.33.0
- Removes standalone/Makefile.in - e3c19d53d23c48fea337aae76a87b2a85c36a1f1
Makefile.in is recommended to be in the repository whenever it is edit manually, in our case the automatically generated Makefile.in is ok.
Bug Fixes:
- test: Avoids conflict of fuctions definition - cef72855e4106ce29e1d39103ebf9eb9ab28f17e
- test: Makes the unit tests to work again - cc982ae42ec86c79a67be1a01c6ee35fb06c272c
The unit tests was not working due to lack update. This patch adds the necessary stuff to have it work again.
- iis: Avoids directory link while building - ad330a44bfa39430cf6340cb52971568cccdf1d6
Build scripts was creating links allowing the project to be loaded into Visual Studio without care about the dependencies versions. Sometimes windows refuse to delete those links leading the script to fail. This patch moves the sources directories instead of create links to it.
- QA: Avoids the utilization of 3rd filedescriptor - 69c5ccac662f4e11a6eefd54a3e912583c067b9d
No need to use a 3rd description on the quality check scripts. Stderr is now redirected to stdout and filtered as needed.
- Supports WarningCountingShellCommand in cppcheck and vera - baaf502363e68c3240b60adb7f7c91f5b4f0ba03
WarningCountingShellCommand allow us to have some measurements on the buildbot waterfall.
- iis: Using base_rules instead of activated_rules - 7b1537058fa451e0df7098cd907ef19f04102f9d
- iis: Fix inet_pton build problem - a4202146b8d26b6615bbab986383fe0afae60d77
There is a function named inet_pton on windows API, with different signature. This patch just override the windows function and point the inet_pton to our implementation.
- iis: Adds Wix installer xml file.c - b32cb7d9ab397160f0154aa4bd4e9638658b41e6
This commit adds the Wix template to our git repository.
- iis: build_modsecurity.bat fixies - 7e03e3f840375ed682c35a5bb67932461cc77013
This commit enable a cleanup on the mod_security build directory avoiding symbols with different architectures.
- iis: Fix mlogc build on windows - 9b7663fa79377a0685130a019916d810f31e7478
The libcurl path was not pointing to the correct directory
- Fix #154, Uses addn instead of apr_table_setn - 1734221d9d3a78f9aafd68e35717da9ee1a4fe51
The headers are represented in the format of an apr_table, which is able to handle elements with the same key, however the function apr_table_setn checks if the key exists before add the element, if so it replaces the old value with the new one. This was making our implementation to just keep the last added Cookie. The apr_table_addn function, which is now used, just add a new item without check for olders one.
- Merge pull request #579 from zimmerle/revert_139 - 61e54f2067ae760808359926ff91d57275df1aac
Revert merge request #139
- Revert "Merge pull request #139 from chaizhenhua/remotes/trunk" - 7f7d00fa2c364716691df1b45779304b24a0debb
This reverts commit 10fd40fb0d06f6c577d870b6f15d2f6e2a3a5b1b, reversing changes made to 414033aafa94cd50c9b310afd3f164740caccc94.
- Merge pull request #578 from client9/remotes/trunk - b0c3977845f60747b15ae10531b7d20355a22627
libinjection sync to v3.8.0
- libinjection sync - a5f175d79fac1e69124da4e1e227b622e7e233d7
- Merge pull request #152 from client9/remotes/trunk - 88ebf8a0bdbc4db1be76f3a2e70df77cc52a5925
Sync to libinjection v3.7.1
- libinjection sync - fcb6dc13ed6efb066fb9b70405eecab8b83a2d96
- libinjection sync - f52242a013f301ca5c17e59b662124833cb7cc6d
- Merge pull request #148 from zimmerle/bugfix_charset_missing_string_terminator - b76e26d81ddafc2b99bffad53d1426f8fd33080a
Bugfix: missing string terminator while mounting the charset (nginx)
- Bugfix: missing string terminator while mounting the charset (nginx) - ff19dcd5c53d4af61d0a9397d4616f47f80ee207
The charset in headers is mounted using ngx_snprintf which does not place the string terminator. This patch adds the terminator at the end of the string. The size was correctly allocated, just missing the terminator.
- Merge pull request #141 from client9/remotes/trunk - 9a630eea23a7ead4e77617c86dc937fd7a421a57
libinjection sync to v3.6.0
- libinjection sync - 11217207e8f2e0cf15742273836399866971071a
- Fix Chunked string case sensitive issue - CVE-2013-5705 - f8d441cd25172fdfe5b613442fedfc0da3cc333d
- Revert "Fix Chuncked string case sensitive issue" - 3901128f17e0763ac1a260106b79859d2aad6d90
This reverts commit 16a815a3c2735f62238ef99af26090a2b8430d3d.
- Fix Chuncked string case sensitive issue - 16a815a3c2735f62238ef99af26090a2b8430d3d
- Merge pull request #139 from chaizhenhua/remotes/trunk - 10fd40fb0d06f6c577d870b6f15d2f6e2a3a5b1b
Fixed fd leackage after reload
- Merge pull request #138 from client9/remotes/trunk - 414033aafa94cd50c9b310afd3f164740caccc94
libinjection sync
- Fixed fd leackage after reload - e0993fcd7a166ce9e1a279a47d050af1311d9001
- libinjection sync - 2268626c20260e88cab9b7830f8a06101fa7172a
- Fix logical disjunction and conjunction issues - 7e0a9ecf7d492e85650671a0cfcfd53e5f15df2c
23 Jul 2013 - 2.7.5
-------------------
Improvements:

View File

@ -5,35 +5,44 @@ CLEANFILES =
MAINTAINERCLEANFILES =
CLEANFILES += tests/regression/server_root/conf/*.t_*.conf \
   tests/regression/server_root/logs/*.log
tests/regression/server_root/logs/*.log
MAINTAINERCLEANFILES += $(CLEANFILES) \
Makefile.in \
aclocal.m4 \
alp2/Makefile.in \
apache2/Makefile.in \
build/config.guess \
build/config.sub \
build/depcomp \
build/libtool.m4 \
build/ltmain.sh \
build/ltoptions.m4 \
build/ltsugar.m4 \
build/ltversion.m4 \
build/lt~obsolete.m4 \
build/missing \
configure \
ext/Makefile.in \
mlogc/Makefile.in \
modsecurity_config_auto.h.in~ \
config.log \
Makefile \
config.status
aclocal.m4 \
alp2/Makefile.in \
apache2/Makefile.in \
build/config.guess \
build/config.sub \
build/depcomp \
build/libtool.m4 \
build/ltmain.sh \
build/lt~obsolete.m4 \
build/ltoptions.m4 \
build/ltsugar.m4 \
build/ltversion.m4 \
build/missing \
config.log \
config.status \
configure \
ext/Makefile.in \
Makefile \
Makefile.in \
mlogc/Makefile.in \
modsecurity_config_auto.h.in~
# Alias for "check"
test: check
test-regression:
(cd tests && $(MAKE) test-regression)
cppcheck:
cppcheck . --enable=all --force 2>&1 | sed 's/^/warning: /g' 1>&2;
check-coding-style:
for i in `(find . -iname "*.c" ; find . -iname "*.h")`; \
do echo $$i...; \
vera++ -rule L004 -param max-line-length=80 $$i 2>&1 | sed 's/^/warning: /g' 1>&2; \
vera++ -rule L001 $$i 2>&1 | sed 's/^/warning: /g' 1>&2; \
done;
.PHONY: test

View File

@ -1,6 +1,13 @@
lib_LTLIBRARIES = libalp2.la
include_HEADERS = alp2.h alp2_pp.h
libalp2_la_SOURCES = alp2.c alp2_pp.c
libalp2_la_CFLAGS = @APR_CFLAGS@ @APU_CFLAGS@
libalp2_la_LDFLAGS = @APR_LDFLAGS@ @APU_LDFLAGS@
include_HEADERS = alp2.h \
alp2_pp.h
libalp2_la_SOURCES = alp2.c \
alp2_pp.c
libalp2_la_CFLAGS = @APR_CFLAGS@ \
@APU_CFLAGS@
libalp2_la_LDFLAGS = @APR_LDFLAGS@ \
@APU_LDFLAGS@

View File

@ -1,70 +1,132 @@
pkglibdir = $(prefix)/lib
pkglib_LTLIBRARIES = mod_security2.la
#include_HEADERS = re.h modsecurity.h msc_logging.h msc_multipart.h \
# msc_parsers.h msc_pcre.h msc_util.h msc_xml.h \
# persist_dbm.h apache2.h msc_geo.h acmp.h utf8tables.h \
# msc_lua.h msc_release.h
mod_security2_la_SOURCES = mod_security2.c \
apache2_config.c apache2_io.c apache2_util.c \
re.c re_operators.c re_actions.c re_tfns.c \
re_variables.c msc_logging.c msc_xml.c \
msc_multipart.c modsecurity.c msc_parsers.c \
msc_util.c msc_pcre.c persist_dbm.c msc_reqbody.c \
msc_geo.c msc_gsb.c msc_crypt.c msc_tree.c msc_unicode.c acmp.c msc_lua.c msc_release.c \
libinjection/libinjection_sqli.c
mod_security2_la_SOURCES = acmp.c \
apache2_config.c \
apache2_io.c \
apache2_util.c \
libinjection/libinjection_sqli.c \
mod_security2.c \
modsecurity.c \
msc_crypt.c \
msc_geo.c \
msc_gsb.c \
msc_logging.c \
msc_lua.c \
msc_multipart.c \
msc_parsers.c \
msc_pcre.c \
msc_release.c \
msc_reqbody.c \
msc_tree.c \
msc_unicode.c \
msc_util.c \
msc_xml.c \
persist_dbm.c \
re_actions.c \
re.c \
re_operators.c \
re_tfns.c \
re_variables.c
mod_security2_la_CFLAGS = @APXS_CFLAGS@ @APR_CFLAGS@ @APU_CFLAGS@ \
@PCRE_CFLAGS@ @LIBXML2_CFLAGS@ @LUA_CFLAGS@ @MODSEC_EXTRA_CFLAGS@ @CURL_CFLAGS@
mod_security2_la_CPPFLAGS = @APR_CPPFLAGS@ @PCRE_CPPFLAGS@ @LIBXML2_CPPFLAGS@
mod_security2_la_LIBADD = @APR_LDADD@ @APU_LDADD@ @PCRE_LDADD@ @LIBXML2_LDADD@ @LUA_LDADD@
mod_security2_la_CFLAGS = @APR_CFLAGS@ \
@APU_CFLAGS@ \
@APXS_CFLAGS@ \
@CURL_CFLAGS@ \
@LIBXML2_CFLAGS@ \
@LUA_CFLAGS@ \
@MODSEC_EXTRA_CFLAGS@ \
@PCRE_CFLAGS@
mod_security2_la_CPPFLAGS = @APR_CPPFLAGS@ \
@LIBXML2_CPPFLAGS@ \
@PCRE_CPPFLAGS@
mod_security2_la_LIBADD = @APR_LDADD@ \
@APU_LDADD@ \
@LIBXML2_LDADD@ \
@LUA_LDADD@ \
@PCRE_LDADD@
if AIX
mod_security2_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if HPUX
mod_security2_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if MACOSX
mod_security2_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if SOLARIS
mod_security2_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if LINUX
mod_security2_la_LDFLAGS = -no-undefined -module -avoid-version -R @PCRE_LD_PATH@ \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if FREEBSD
mod_security2_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if OPENBSD
mod_security2_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if NETBSD
mod_security2_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if LINUX

View File

@ -14,13 +14,6 @@
extern "C" {
#endif
/*
* Version info.
* See python's normalized version
* http://www.python.org/dev/peps/pep-0386/#normalizedversion
*/
#define LIBINJECTION_VERSION "3.4.1"
/**
* Libinjection's sqli module makes a "normalized"
* value of the token. This is the maximum size
@ -37,6 +30,13 @@ extern "C" {
#define LIBINJECTION_SQLI_MAX_TOKENS 5
#endif
#if LIBINJECTION_SQLI_MAX_TOKENS >= 8
#define LIBINJECTION_SQLI_BUFFER_SZ (LIBINJECTION_SQLI_MAX_TOKENS + 1)
#else
#define LIBINJECTION_SQLI_BUFFER_SZ 8
#endif
enum lookup_type {
FLAG_NONE = 0,
FLAG_QUOTE_NONE = 1 << 1,
@ -52,7 +52,7 @@ enum lookup_type {
LOOKUP_FINGERPRINT
};
typedef struct {
struct libinjection_sqli_token {
#ifdef SWIG
%immutable;
#endif
@ -74,8 +74,9 @@ typedef struct {
int count;
char val[LIBINJECTION_SQLI_TOKEN_SIZE];
} stoken_t;
};
typedef struct libinjection_sqli_token stoken_t;
/**
* Pointer to function, takes cstr input,
@ -84,7 +85,7 @@ typedef struct {
struct libinjection_sqli_state;
typedef char (*ptr_lookup_fn)(struct libinjection_sqli_state*, int lookuptype, const char* word, size_t len);
typedef struct libinjection_sqli_state {
struct libinjection_sqli_state {
#ifdef SWIG
%immutable;
#endif
@ -116,21 +117,26 @@ typedef struct libinjection_sqli_state {
*/
size_t pos;
#ifndef SWIG
/* for SWIG.. don't use this.. use functional API instead */
/* MAX TOKENS + 1 since we use one extra token
* to determine the type of the previous token
*/
stoken_t tokenvec[LIBINJECTION_SQLI_MAX_TOKENS + 1];
struct libinjection_sqli_token tokenvec[LIBINJECTION_SQLI_BUFFER_SZ];
#endif
/*
* Pointer to token position in tokenvec, above
*/
stoken_t *current;
struct libinjection_sqli_token *current;
/*
* fingerprint pattern c-string
* +1 for ending null
* Mimimum of 8 bytes to add gcc's -fstack-protector to work
*/
char fingerprint[LIBINJECTION_SQLI_MAX_TOKENS + 1];
char fingerprint[LIBINJECTION_SQLI_BUFFER_SZ];
/*
* Line number of code that said decided if the input was SQLi or
@ -181,12 +187,32 @@ typedef struct libinjection_sqli_state {
*/
int stats_tokens;
} sfilter;
};
struct libinjection_sqli_token* libinjection_sqli_get_token(
struct libinjection_sqli_state* sqlistate, int i);
typedef struct libinjection_sqli_state sfilter;
/*
* Version info.
*
* This is moved into a function to allow SWIG and other auto-generated
* binding to not be modified during minor release changes. We change
* change the version number in the c source file, and not regenerated
* the binding
*
* See python's normalized version
* http://www.python.org/dev/peps/pep-0386/#normalizedversion
*/
const char* libinjection_version();
/**
*
*/
void libinjection_sqli_init(sfilter* sql_state,
void libinjection_sqli_init(struct libinjection_sqli_state* sql_state,
const char* s, size_t slen,
int flags);
@ -204,18 +230,21 @@ void libinjection_sqli_init(sfilter* sql_state,
*
* \return 1 (true) if SQLi, 0 (false) if benign
*/
int libinjection_is_sqli(sfilter * sql_state);
int libinjection_is_sqli(struct libinjection_sqli_state* sql_state);
/* FOR H@CKERS ONLY
*
*/
void libinjection_sqli_callback(sfilter* sql_state, ptr_lookup_fn fn, void* userdata);
void libinjection_sqli_callback(struct libinjection_sqli_state* sql_state,
ptr_lookup_fn fn,
void* userdata);
/*
* Resets state, but keeps initial string and callbacks
*/
void libinjection_sqli_reset(sfilter* sql_state, int flags);
void libinjection_sqli_reset(struct libinjection_sqli_state* sql_state,
int flags);
/**
*
@ -231,14 +260,17 @@ void libinjection_sqli_reset(sfilter* sql_state, int flags);
* do not free!
*
*/
const char* libinjection_sqli_fingerprint(sfilter * sql_state, int flags);
const char* libinjection_sqli_fingerprint(struct libinjection_sqli_state* sql_state,
int flags);
/**
* The default "word" to token-type or fingerprint function. This
* uses a ASCII case-insensitive binary tree.
*/
char libinjection_sqli_lookup_word(sfilter *sql_state, int lookup_type,
const char* s, size_t slen);
char libinjection_sqli_lookup_word(struct libinjection_sqli_state* sql_state,
int lookup_type,
const char* s,
size_t slen);
/* Streaming tokenization interface.
*
@ -247,13 +279,13 @@ char libinjection_sqli_lookup_word(sfilter *sql_state, int lookup_type,
* \returns 1, has a token, keep going, or 0 no tokens
*
*/
int libinjection_sqli_tokenize(sfilter * sql_state);
int libinjection_sqli_tokenize(struct libinjection_sqli_state * sql_state);
/**
* parses and folds input, up to 5 tokens
*
*/
int libinjection_sqli_fold(sfilter * sql_state);
int libinjection_sqli_fold(struct libinjection_sqli_state * sql_state);
/** The built-in default function to match fingerprints
* and do false negative/positive analysis. This calls the following
@ -264,20 +296,20 @@ int libinjection_sqli_fold(sfilter * sql_state);
*
* \param sql_state should be filled out after libinjection_sqli_fingerprint is called
*/
int libinjection_sqli_check_fingerprint(sfilter *sql_state);
int libinjection_sqli_check_fingerprint(struct libinjection_sqli_state * sql_state);
/* Given a pattern determine if it's a SQLi pattern.
*
* \return TRUE if sqli, false otherwise
*/
int libinjection_sqli_blacklist(sfilter* sql_state);
int libinjection_sqli_blacklist(struct libinjection_sqli_state* sql_state);
/* Given a positive match for a pattern (i.e. pattern is SQLi), this function
* does additional analysis to reduce false positives.
*
* \return TRUE if sqli, false otherwise
*/
int libinjection_sqli_not_whitelist(sfilter* sql_state);
int libinjection_sqli_not_whitelist(struct libinjection_sqli_state * sql_state);
#ifdef __cplusplus
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -297,7 +297,7 @@ apr_status_t modsecurity_tx_init(modsec_rec *msr) {
if (msr->request_content_length == -1) {
/* There's no C-L, but is chunked encoding used? */
char *transfer_encoding = (char *)apr_table_get(msr->request_headers, "Transfer-Encoding");
if ((transfer_encoding != NULL)&&(strstr(transfer_encoding, "chunked") != NULL)) {
if ((transfer_encoding != NULL)&&(m_strcasestr(transfer_encoding, "chunked") != NULL)) {
msr->reqbody_should_exist = 1;
msr->reqbody_chunked = 1;
}

View File

@ -110,7 +110,7 @@ static int unicode_map_create(directory_config *dcfg, char **error_msg)
ucode = apr_strtok(mapping,":", &hmap);
sscanf(ucode,"%x",&Code);
sscanf(hmap,"%x",&Map);
if(Code >= 0 || Code <= 65535) {
if(Code >= 0 && Code <= 65535) {
unicode_map_table[Code] = Map;
}

View File

@ -836,7 +836,7 @@ char *m_strcasestr(const char *haystack, const char *needle) {
}
#ifdef WIN32
int inet_pton(int family, const char *src, void *dst) {
int my_inet_pton(int family, const char *src, void *dst) {
struct addrinfo addr;
struct sockaddr_in *in = NULL;
#if APR_HAVE_IPV6

View File

@ -50,6 +50,9 @@ int DSOLOCAL inet_pton(int family, const char *src, void *dst);
int DSOLOCAL swap_int32(int x);
#endif
#ifdef WIN32
#define inet_pton(x, y, z) my_inet_pton(x, y, z)
#endif
char DSOLOCAL *utf8_unicode_inplace_ex(apr_pool_t *mp, unsigned char *input, long int input_len, int *changed);

View File

@ -7,7 +7,8 @@
rm -rf autom4te.cache
rm -f aclocal.m4
libtoolize --force --copy
case `uname` in Darwin*) glibtoolize --force --copy ;;
*) libtoolize --force --copy ;; esac
autoreconf --install
autoheader
automake --add-missing --foreign --copy --force-missing

View File

@ -707,6 +707,7 @@ AC_CONFIG_FILES([apache2/Makefile])
fi
if test "$build_standalone_module" -ne 0; then
AC_CONFIG_FILES([standalone/Makefile])
AC_CONFIG_FILES([nginx/modsecurity/config])
fi
if test "$build_extentions" -ne 0; then
AC_CONFIG_FILES([ext/Makefile])

View File

@ -1,17 +1,32 @@
EXT_CFLAGS = -I../apache2 \
@APXS_CFLAGS@ @APR_CFLAGS@ @APU_CFLAGS@ \
@LIBXML2_CFLAGS@ @LUA_CFLAGS@
EXT_CPPFLAGS = @APR_CPPFLAGS@ @LIBXML2_CPPFLAGS@
EXT_LIBADD = @APR_LDADD@ @APU_LDADD@ @LIBXML2_LDADD@ @LUA_LDADD@
@APR_CFLAGS@ \
@APU_CFLAGS@ \
@APXS_CFLAGS@ \
@LIBXML2_CFLAGS@ \
@LUA_CFLAGS@
EXT_CPPFLAGS = @APR_CPPFLAGS@ \
@LIBXML2_CPPFLAGS@
EXT_LIBADD = @APR_LDADD@ \
@APU_LDADD@ \
@LIBXML2_LDADD@ \
@LUA_LDADD@
EXT_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@
pkglibdir = $(prefix)/lib
pkglib_LTLIBRARIES = mod_op_strstr.la \
mod_tfn_reverse.la \
mod_var_remote_addr_port.la \
mod_reqbody_example.la
mod_tfn_reverse.la \
mod_var_remote_addr_port.la \
mod_reqbody_example.la
mod_op_strstr_la_SOURCES = mod_op_strstr.c
mod_op_strstr_la_CFLAGS = $(EXT_CFLAGS)

View File

@ -1,6 +1,8 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2013 for Windows Desktop
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModSecurityIIS", "ModSecurityIIS.vcxproj", "{D1F7201F-064B-48AB-868C-FED22464841C}"
EndProject
Global

53
iis/ModSecurityIIS.vcxproj Normal file → Executable file
View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@ -26,15 +26,19 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@ -79,7 +83,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\work\apache24\include;..\apache2;..\standalone</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;dependencies\build_dir\apache24\include;..\apache2;..\standalone</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_IIS</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
@ -89,18 +93,17 @@
<Link>
<ModuleDefinitionFile>mymodule.def</ModuleDefinitionFile>
<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);C:\work\apache24\lib\libapr-1.lib;C:\work\apache24\lib\libaprutil-1.lib;C:\work\pcre-8.30\pcre.lib;C:\work\libxml2-2.7.7\win32\bin.msvc\libxml2.lib</AdditionalDependencies>
<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);dependencies\build_dir\apache24\lib\libapr-1.lib;dependencies\build_dir\apache24\lib\libaprutil-1.lib;dependencies\build_dir\pcre\pcre.lib;dependencies\build_dir\libxml2\win32\bin.msvc\libxml2.lib</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy /y $(TargetPath) c:\drop\$(PlatformShortName)
copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
</Command>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<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;..\standalone;c:\work\apache24\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone;dependencies\build_dir\apache24\include</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
@ -110,47 +113,46 @@ copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
<Link>
<ModuleDefinitionFile>mymodule.def</ModuleDefinitionFile>
<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>
<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);dependencies\build_dir\apache24\lib\libapr-1.lib;dependencies\build_dir\apache24\lib\libaprutil-1.lib;dependencies\build_dir\pcre\pcre.lib;dependencies\build_dir\libxml2\win32\bin.msvc\libxml2.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>C:\core__\ModSecurity\iis\release\x64</AdditionalLibraryDirectories>
<AdditionalOptions> /LIBPATH:"C:\core__\ModSecurity\iis\release\x64" %(AdditionalOptions)</AdditionalOptions>
</Link>
<PostBuildEvent>
<Command>copy /y $(TargetPath) c:\drop\$(PlatformShortName)
copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
</Command>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_IIS</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2;..\standalone</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<ModuleDefinitionFile>mymodule.def</ModuleDefinitionFile>
<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);C:\apache22\lib\libapr-1.lib;C:\apache22\lib\libaprutil-1.lib;C:\work\pcre-8.30\pcre.lib;C:\work\libxml2-2.7.7\win32\bin.msvc\libxml2.lib</AdditionalDependencies>
<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);dependencies\build_dir\apache24\lib\libapr-1.lib;dependencies\build_dir\apache24\lib\libaprutil-1.lib;dependencies\build_dir\pcre\pcre.lib;dependencies\build_dir\libxml2\win32\bin.msvc\libxml2.lib</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy /y $(TargetPath) c:\drop\$(PlatformShortName)
copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
</Command>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>C:\work\pcre-8.30\include;C:\work\pcre-8.30;C:\work\libxml2-2.7.7\include;C:\apache22\include;..\apache2;..\standalone</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone;dependencies\build_dir\apache24\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<ModuleDefinitionFile>mymodule.def</ModuleDefinitionFile>
<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>
<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);dependencies\build_dir\apache24\lib\libapr-1.lib;dependencies\build_dir\apache24\lib\libaprutil-1.lib;dependencies\build_dir\pcre\pcre.lib;dependencies\build_dir\libxml2\win32\bin.msvc\libxml2.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
</Link>
<PostBuildEvent>
<Command>copy /y $(TargetPath) c:\drop\$(PlatformShortName)
copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
</Command>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
@ -158,6 +160,7 @@ copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
<ClCompile Include="..\apache2\apache2_config.c" />
<ClCompile Include="..\apache2\apache2_io.c" />
<ClCompile Include="..\apache2\apache2_util.c" />
<ClCompile Include="..\apache2\libinjection\libinjection_sqli.c" />
<ClCompile Include="..\apache2\modsecurity.c" />
<ClCompile Include="..\apache2\mod_security2.c" />
<ClCompile Include="..\apache2\msc_crypt.c" />
@ -203,6 +206,8 @@ copy /y $(TargetDir)$(TargetName).pdb c:\drop\$(PlatformShortName)
<ItemGroup>
<ClInclude Include="..\apache2\acmp.h" />
<ClInclude Include="..\apache2\apache2.h" />
<ClInclude Include="..\apache2\libinjection\libinjection.h" />
<ClInclude Include="..\apache2\libinjection\libinjection_sqli_data.h" />
<ClInclude Include="..\apache2\modsecurity.h" />
<ClInclude Include="..\apache2\modsecurity_config.h" />
<ClInclude Include="..\apache2\modsecurity_config_auto.h" />

3
iis/ModSecurityIIS.vcxproj.filters Normal file → Executable file
View File

@ -103,6 +103,7 @@
<ClCompile Include="..\apache2\msc_tree.c">
<Filter>ModSecurity</Filter>
</ClCompile>
<ClCompile Include="..\apache2\libinjection\libinjection_sqli.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="moduleconfig.h" />
@ -174,6 +175,8 @@
<ClInclude Include="..\apache2\msc_tree.h">
<Filter>ModSecurity</Filter>
</ClInclude>
<ClInclude Include="..\apache2\libinjection\libinjection.h" />
<ClInclude Include="..\apache2\libinjection\libinjection_sqli_data.h" />
</ItemGroup>
<ItemGroup>
<None Include="ModSecurity.xml" />

File diff suppressed because it is too large Load Diff

View File

@ -1,96 +0,0 @@
<?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="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{990BB195-6716-4DE3-B5E4-DCFCB1BD7D9C}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>Installer</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc>
</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 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>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>ole32.lib;oleaut32.lib;advapi32.lib</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="XUnzip.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Installer.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="XUnzip.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<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>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="XUnzip.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Installer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="XUnzip.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerCommandArguments>"c:\Program Files (x86)\ModSecurity IIS" </LocalDebuggerCommandArguments>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@ -1,40 +0,0 @@
========================================================================
CONSOLE APPLICATION : Installer Project Overview
========================================================================
AppWizard has created this Installer application for you.
This file contains a summary of what you will find in each of the files that
make up your Installer application.
Installer.vcxproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
Installer.vcxproj.filters
This is the filters file for VC++ projects generated using an Application Wizard.
It contains information about the association between the files in your project
and the filters. This association is used in the IDE to show grouping of files with
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
"Source Files" filter).
Installer.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named Installer.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

File diff suppressed because it is too large Load Diff

View File

@ -1,382 +0,0 @@
// XUnzip.h Version 1.3
//
// Authors: Mark Adler et al. (see below)
//
// Modified by: Lucian Wischik
// lu@wischik.com
//
// Version 1.0 - Turned C files into just a single CPP file
// - Made them compile cleanly as C++ files
// - Gave them simpler APIs
// - Added the ability to zip/unzip directly in memory without
// any intermediate files
//
// Modified by: Hans Dietrich
// hdietrich@gmail.com
//
///////////////////////////////////////////////////////////////////////////////
//
// Lucian Wischik's comments:
// --------------------------
// THIS FILE is almost entirely based upon code by info-zip.
// It has been modified by Lucian Wischik.
// The original code may be found at http://www.info-zip.org
// The original copyright text follows.
//
///////////////////////////////////////////////////////////////////////////////
//
// Original authors' comments:
// ---------------------------
// This is version 2002-Feb-16 of the Info-ZIP copyright and license. The
// definitive version of this document should be available at
// ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely.
//
// Copyright (c) 1990-2002 Info-ZIP. All rights reserved.
//
// For the purposes of this copyright and license, "Info-ZIP" is defined as
// the following set of individuals:
//
// Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
// Jean-loup Gailly, Hunter Goatley, Ian Gorman, Chris Herborth, Dirk Haase,
// Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
// David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
// Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
// Kai Uwe Rommel, Steve Salisbury, Dave Smith, Christian Spieler,
// Antoine Verheijen, Paul von Behren, Rich Wales, Mike White
//
// This software is provided "as is", without warranty of any kind, express
// or implied. In no event shall Info-ZIP or its contributors be held liable
// for any direct, indirect, incidental, special or consequential damages
// arising out of the use of or inability to use this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. Redistributions of source code must retain the above copyright notice,
// definition, disclaimer, and this list of conditions.
//
// 2. Redistributions in binary form (compiled executables) must reproduce
// the above copyright notice, definition, disclaimer, and this list of
// conditions in documentation and/or other materials provided with the
// distribution. The sole exception to this condition is redistribution
// of a standard UnZipSFX binary as part of a self-extracting archive;
// that is permitted without inclusion of this license, as long as the
// normal UnZipSFX banner has not been removed from the binary or disabled.
//
// 3. Altered versions--including, but not limited to, ports to new
// operating systems, existing ports with new graphical interfaces, and
// dynamic, shared, or static library versions--must be plainly marked
// as such and must not be misrepresented as being the original source.
// Such altered versions also must not be misrepresented as being
// Info-ZIP releases--including, but not limited to, labeling of the
// altered versions with the names "Info-ZIP" (or any variation thereof,
// including, but not limited to, different capitalizations),
// "Pocket UnZip", "WiZ" or "MacZip" without the explicit permission of
// Info-ZIP. Such altered versions are further prohibited from
// misrepresentative use of the Zip-Bugs or Info-ZIP e-mail addresses or
// of the Info-ZIP URL(s).
//
// 4. Info-ZIP retains the right to use the names "Info-ZIP", "Zip", "UnZip",
// "UnZipSFX", "WiZ", "Pocket UnZip", "Pocket Zip", and "MacZip" for its
// own source and binary releases.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef XUNZIP_H
#define XUNZIP_H
#ifndef XZIP_H
DECLARE_HANDLE(HZIP); // An HZIP identifies a zip file that has been opened
#endif
typedef DWORD ZRESULT;
// return codes from any of the zip functions. Listed later.
#define ZIP_HANDLE 1
#define ZIP_FILENAME 2
#define ZIP_MEMORY 3
typedef struct
{ int index; // index of this file within the zip
char name[MAX_PATH]; // filename within the zip
DWORD attr; // attributes, as in GetFileAttributes.
FILETIME atime,ctime,mtime;// access, create, modify filetimes
long comp_size; // sizes of item, compressed and uncompressed. These
long unc_size; // may be -1 if not yet known (e.g. being streamed in)
} ZIPENTRY;
typedef struct
{ int index; // index of this file within the zip
TCHAR name[MAX_PATH]; // filename within the zip
DWORD attr; // attributes, as in GetFileAttributes.
FILETIME atime,ctime,mtime;// access, create, modify filetimes
long comp_size; // sizes of item, compressed and uncompressed. These
long unc_size; // may be -1 if not yet known (e.g. being streamed in)
} ZIPENTRYW;
///////////////////////////////////////////////////////////////////////////////
//
// OpenZip()
//
// Purpose: Open an existing zip archive file
//
// Parameters: z - archive file name if flags is ZIP_FILENAME; for other
// uses see below
// len - for memory (ZIP_MEMORY) should be the buffer size;
// for other uses, should be 0
// flags - indicates usage, see below; for files, this will be
// ZIP_FILENAME
//
// Returns: HZIP - non-zero if zip archive opened ok, otherwise 0
//
HZIP OpenZip(void *rd, void *z, unsigned int len, DWORD flags);
// OpenZip - opens a zip file and returns a handle with which you can
// subsequently examine its contents. You can open a zip file from:
// from a pipe: OpenZip(hpipe_read,0, ZIP_HANDLE);
// from a file (by handle): OpenZip(hfile,0, ZIP_HANDLE);
// from a file (by name): OpenZip("c:\\test.zip",0, ZIP_FILENAME);
// from a memory block: OpenZip(bufstart, buflen, ZIP_MEMORY);
// If the file is opened through a pipe, then items may only be
// accessed in increasing order, and an item may only be unzipped once,
// although GetZipItem can be called immediately before and after unzipping
// it. If it's opened i n any other way, then full random access is possible.
// Note: pipe input is not yet implemented.
///////////////////////////////////////////////////////////////////////////////
//
// GetZipItem()
//
// Purpose: Get information about an item in an open zip archive
//
// Parameters: hz - handle of open zip archive
// index - index number (0 based) of item in zip
// ze - pointer to a ZIPENTRY (if ANSI) or ZIPENTRYW struct
// (if Unicode)
//
// Returns: ZRESULT - ZR_OK if success, otherwise some other value
//
#ifdef _UNICODE
#define GetZipItem GetZipItemW
#else
#define GetZipItem GetZipItemA
#endif
ZRESULT GetZipItemA(HZIP hz, int index, ZIPENTRY *ze);
ZRESULT GetZipItemW(HZIP hz, int index, ZIPENTRYW *ze);
// GetZipItem - call this to get information about an item in the zip.
// If index is -1 and the file wasn't opened through a pipe,
// then it returns information about the whole zipfile
// (and in particular ze.index returns the number of index items).
// Note: the item might be a directory (ze.attr & FILE_ATTRIBUTE_DIRECTORY)
// See below for notes on what happens when you unzip such an item.
// Note: if you are opening the zip through a pipe, then random access
// is not possible and GetZipItem(-1) fails and you can't discover the number
// of items except by calling GetZipItem on each one of them in turn,
// starting at 0, until eventually the call fails. Also, in the event that
// you are opening through a pipe and the zip was itself created into a pipe,
// then then comp_size and sometimes unc_size as well may not be known until
// after the item has been unzipped.
///////////////////////////////////////////////////////////////////////////////
//
// FindZipItem()
//
// Purpose: Find item by name and return information about it
//
// Parameters: hz - handle of open zip archive
// name - name of file to look for inside zip archive
// ic - TRUE = case insensitive
// index - pointer to index number returned, or -1
// ze - pointer to a ZIPENTRY (if ANSI) or ZIPENTRYW struct
// (if Unicode)
//
// Returns: ZRESULT - ZR_OK if success, otherwise some other value
//
#ifdef _UNICODE
#define FindZipItem FindZipItemW
#else
#define FindZipItem FindZipItemA
#endif
ZRESULT FindZipItemA(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRY *ze);
ZRESULT FindZipItemW(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRYW *ze);
// FindZipItem - finds an item by name. ic means 'insensitive to case'.
// It returns the index of the item, and returns information about it.
// If nothing was found, then index is set to -1 and the function returns
// an error code.
///////////////////////////////////////////////////////////////////////////////
//
// UnzipItem()
//
// Purpose: Find item by index and unzip it
//
// Parameters: hz - handle of open zip archive
// index - index number of file to unzip
// dst - target file name of unzipped file
// len - for memory (ZIP_MEMORY. length of buffer;
// otherwise 0
// flags - indicates usage, see below; for files, this will be
// ZIP_FILENAME
//
// Returns: ZRESULT - ZR_OK if success, otherwise some other value
//
ZRESULT UnzipItem(HZIP hz, int index, void *dst, unsigned int len, DWORD flags);
// UnzipItem - given an index to an item, unzips it. You can unzip to:
// to a pipe: UnzipItem(hz,i, hpipe_write,0,ZIP_HANDLE);
// to a file (by handle): UnzipItem(hz,i, hfile,0,ZIP_HANDLE);
// to a file (by name): UnzipItem(hz,i, ze.name,0,ZIP_FILENAME);
// to a memory block: UnzipItem(hz,i, buf,buflen,ZIP_MEMORY);
// In the final case, if the buffer isn't large enough to hold it all,
// then the return code indicates that more is yet to come. If it was
// large enough, and you want to know precisely how big, GetZipItem.
// Note: zip files are normally stored with relative pathnames. If you
// unzip with ZIP_FILENAME a relative pathname then the item gets created
// relative to the current directory - it first ensures that all necessary
// subdirectories have been created. Also, the item may itself be a directory.
// If you unzip a directory with ZIP_FILENAME, then the directory gets created.
// If you unzip it to a handle or a memory block, then nothing gets created
// and it emits 0 bytes.
///////////////////////////////////////////////////////////////////////////////
//
// CloseZip()
//
// Purpose: Close an open zip archive
//
// Parameters: hz - handle to an open zip archive
//
// Returns: ZRESULT - ZR_OK if success, otherwise some other value
//
ZRESULT CloseZip(HZIP hz);
// CloseZip - the zip handle must be closed with this function.
unsigned int FormatZipMessage(ZRESULT code, char *buf,unsigned int len);
// FormatZipMessage - given an error code, formats it as a string.
// It returns the length of the error message. If buf/len points
// to a real buffer, then it also writes as much as possible into there.
// These are the result codes:
#define ZR_OK 0x00000000 // nb. the pseudo-code zr-recent is never returned,
#define ZR_RECENT 0x00000001 // but can be passed to FormatZipMessage.
// The following come from general system stuff (e.g. files not openable)
#define ZR_GENMASK 0x0000FF00
#define ZR_NODUPH 0x00000100 // couldn't duplicate the handle
#define ZR_NOFILE 0x00000200 // couldn't create/open the file
#define ZR_NOALLOC 0x00000300 // failed to allocate some resource
#define ZR_WRITE 0x00000400 // a general error writing to the file
#define ZR_NOTFOUND 0x00000500 // couldn't find that file in the zip
#define ZR_MORE 0x00000600 // there's still more data to be unzipped
#define ZR_CORRUPT 0x00000700 // the zipfile is corrupt or not a zipfile
#define ZR_READ 0x00000800 // a general error reading the file
// The following come from mistakes on the part of the caller
#define ZR_CALLERMASK 0x00FF0000
#define ZR_ARGS 0x00010000 // general mistake with the arguments
#define ZR_NOTMMAP 0x00020000 // tried to ZipGetMemory, but that only works on mmap zipfiles, which yours wasn't
#define ZR_MEMSIZE 0x00030000 // the memory size is too small
#define ZR_FAILED 0x00040000 // the thing was already failed when you called this function
#define ZR_ENDED 0x00050000 // the zip creation has already been closed
#define ZR_MISSIZE 0x00060000 // the indicated input file size turned out mistaken
#define ZR_PARTIALUNZ 0x00070000 // the file had already been partially unzipped
#define ZR_ZMODE 0x00080000 // tried to mix creating/opening a zip
// The following come from bugs within the zip library itself
#define ZR_BUGMASK 0xFF000000
#define ZR_NOTINITED 0x01000000 // initialisation didn't work
#define ZR_SEEK 0x02000000 // trying to seek in an unseekable file
#define ZR_NOCHANGE 0x04000000 // changed its mind on storage, but not allowed
#define ZR_FLATE 0x05000000 // an internal error in the de/inflation code
// e.g.
//
// SetCurrentDirectory("c:\\docs\\stuff");
// HZIP hz = OpenZip("c:\\stuff.zip",0,ZIP_FILENAME);
// ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
// for (int i=0; i<numitems; i++)
// { GetZipItem(hz,i,&ze);
// UnzipItem(hz,i,ze.name,0,ZIP_FILENAME);
// }
// CloseZip(hz);
//
//
// HRSRC hrsrc = FindResource(hInstance,MAKEINTRESOURCE(1),RT_RCDATA);
// HANDLE hglob = LoadResource(hInstance,hrsrc);
// void *zipbuf=LockResource(hglob);
// unsigned int ziplen=SizeofResource(hInstance,hrsrc);
// HZIP hz = OpenZip(zipbuf, ziplen, ZIP_MEMORY);
// - unzip to a membuffer -
// ZIPENTRY ze; int i; FindZipItem(hz,"file.dat",&i,&ze);
// char *ibuf = new char[ze.unc_size];
// UnzipItem(hz,i, ibuf, ze.unc_size,ZIP_MEMORY);
// delete[] buf;
// - unzip to a fixed membuff -
// ZIPENTRY ze; int i; FindZipItem(hz,"file.dat",&i,&ze);
// char ibuf[1024]; ZIPRESULT zr=ZR_MORE; unsigned long totsize=0;
// while (zr==ZR_MORE)
// { zr = UnzipItem(hz,i, ibuf,1024,ZIP_MEMORY);
// unsigned long bufsize=1024; if (zr==ZR_OK) bufsize=ze.unc_size-totsize;
// totsize+=bufsize;
// }
// - unzip to a pipe -
// HANDLE hthread=CreateWavReaderThread(&hread,&hwrite);
// FindZipItem(hz,"sound.wav",&i,&ze);
// UnzipItem(hz,i, hwrite,0,ZIP_HANDLE);
// CloseHandle(hwrite);
// WaitForSingleObject(hthread,INFINITE);
// CloseHandle(hread); CloseHandle(hthread);
// - finished -
// CloseZip(hz);
// // note: no need to free resources obtained through Find/Load/LockResource
//
//
// SetCurrentDirectory("c:\\docs\\pipedzipstuff");
// HANDLE hread,hwrite; CreatePipe(&hread,&hwrite);
// CreateZipWriterThread(hwrite);
// HZIP hz = OpenZip(hread,0,ZIP_HANDLE);
// for (int i=0; ; i++)
// { ZIPENTRY ze; ZRESULT res = GetZipItem(hz,i,&ze);
// if (res!=ZE_OK) break; // no more
// UnzipItem(hz,i, ze.name,0,ZIP_FILENAME);
// }
// CloseZip(hz);
//
// Now we indulge in a little skullduggery so that the code works whether
// the user has included just zip or both zip and unzip.
// Idea: if header files for both zip and unzip are present, then presumably
// the cpp files for zip and unzip are both present, so we will call
// one or the other of them based on a dynamic choice. If the header file
// for only one is present, then we will bind to that particular one.
HZIP OpenZipU(void *rd, void *z,unsigned int len,DWORD flags);
ZRESULT CloseZipU(HZIP hz);
unsigned int FormatZipMessageU(ZRESULT code, char *buf,unsigned int len);
bool IsZipHandleU(HZIP hz);
#define OpenZip OpenZipU
#ifdef XZIP_H
#undef CloseZip
#define CloseZip(hz) (IsZipHandleU(hz)?CloseZipU(hz):CloseZipZ(hz))
#else
#define CloseZip CloseZipU
#define FormatZipMessage FormatZipMessageU
#endif
#endif //XUNZIP_H

View File

@ -1,8 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// Installer.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

View File

@ -1,15 +0,0 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here

View File

@ -1,8 +0,0 @@
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>

115
iis/build_dependencies.bat Normal file
View File

@ -0,0 +1,115 @@
:: Those variable should be edited as needed.
:: Use full paths.
:: General paths
@set WORK_DIR=%cd%\dependencies\build_dir
@set OUTPUT_DIR=%cd%\dependencies\release_files
@set SOURCE_DIR=%USERPROFILE%\Downloads
:: Aditional paths.
@set PATH=%PATH%;c:\work\cmake-2.8.7-win32-x86\bin;"c:\program files\7-zip"
@set PCRE=pcre-8.33.zip
@set ZLIB=zlib-1.2.8.tar.gz
@set LIBXML2=libxml2-2.9.1.tar.gz
@set LUA=lua-5.1.5.tar.gz
@set CURL=curl-7.33.0.zip
@set APACHE_SRC=httpd-2.4.6.tar.gz
@set APACHE_BIN32=httpd-2.4.6-win32-VC11.zip
@set APACHE_BIN64=httpd-2.4.6-win64-VC11.zip
:: @set VCARGS32="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
:: @set VCARGS64="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat"
:: Do not edit bellow this line.
@set CURRENT_DIR=%cd%
@echo Cleaning directories...
if EXIST "%WORK_DIR%" @rmdir /s /q "%WORK_DIR%"
if EXIST "%OUTPUT_DIR%" @rmdir /s /q "%OUTPUT_DIR%"
@mkdir "%WORK_DIR%"
@if NOT (%ERRORLEVEL%) == (0) goto failed_to_cleanup
@mkdir "%OUTPUT_DIR%"
@if NOT (%ERRORLEVEL%) == (0) goto failed_to_cleanup
@echo Checking for vcargs... %1
@if NOT (%1) == "" call %1
@if (%ERRORLEVEL%) == (1) goto build_wrong_vcargs
set APACHE_BIN=%APACHE_BIN32%
call cl 2>&1 | findstr /C:"x64"
@if (%ERRORLEVEL%) == (0) set APACHE_BIN=%APACHE_BIN64%
@echo Starting with the depdendencies...
@echo # Apache - %HTTPD%/%APACHE24_ZIP%
@call dependencies/build_apache.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_apache
@cd "%CURRENT_DIR%"
echo "c"
@echo # pcre. - %PCRE%
@call dependencies/build_pcre.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_pcre
@cd "%CURRENT_DIR%"
echo "b"
@echo # zlib - %ZLIB%
@call dependencies/build_zlib.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_zlib
@cd "%CURRENT_DIR%"
@echo # libxml2 - %LIBXML2%
@call dependencies/build_libxml2.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_libxml2
@cd "%CURRENT_DIR%"
@echo # lua - %LUA%
@call dependencies/build_lua.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_lua
@cd "%CURRENT_DIR%"
@echo # curl - %CURL%
@call dependencies/build_curl.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_curl
@cd "%CURRENT_DIR%"
@echo All dependencies were built successfully.
@cd "%CURRENT_DIR%"
@exit /B 0
:failed_to_cleanup
@echo Failed to cleanup
@goto failed
:build_wrong_vcargs
@echo Please specify a valid vcargs
@goto failed
:build_failed_apache
@echo Failed to setup %HTTPD%/%APACHE24_ZIP%...
@goto failed
:build_failed_pcre
@echo Failed to setup %PCRE%...
@goto failed
:build_failed_zlib
@echo Failed to setup %ZLIB%...
@goto failed
:build_failed_libxml2
@echo Failed to setup %LIBXML2%...
@goto failed
:build_failed_lua
@echo Failed to setup %LUA%...
@goto failed
:build_failed_curl
@echo Failed to setup %CURL%...
@goto failed
:failed
@cd %CURRENT_DIR%
@exit /B 1

55
iis/build_modsecurity.bat Normal file
View File

@ -0,0 +1,55 @@
set DEPENDENCIES_DIR=dependencies\build_dir
set OUTPUT_DIR=dependencies\release_files
set CURRENT_DIR=%cd%
@echo Checking for vcargs... %1
@if NOT (%1) == "" call %1
@if (%ERRORLEVEL%) == (1) goto build_wrong_vcarg
@echo Deleting old stuff...
@del *.obj *.dll *.lib
@echo apache2...
cd ..\apache2
del *.obj *.dll *.lib
del libinjection\*.obj libinjection\*.dll libinjection\*.lib
NMAKE -f Makefile.win APACHE=..\iis\%DEPENDENCIES_DIR%\Apache24 PCRE=..\iis\%DEPENDENCIES_DIR%\pcre LIBXML2=..\iis\%DEPENDENCIES_DIR%\libxml2 LUA=..\iis\%DEPENDENCIES_DIR%\lua\src VERSION=VERSION_IIS
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
@echo mlogc...
cd ..\mlogc
del *.obj *.dll *.lib
nmake -f Makefile.win clean
nmake -f Makefile.win APACHE=..\iis\%DEPENDENCIES_DIR%\Apache24 PCRE=..\iis\%DEPENDENCIES_DIR%\pcre CURL=..\iis\%DEPENDENCIES_DIR%\curl VERSION=VERSION_IIS
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
@echo iis...
cd ..\iis
del *.obj *.dll *.lib
nmake -f Makefile.win clean
NMAKE -f Makefile.win APACHE=..\iis\%DEPENDENCIES_DIR%\Apache24 PCRE=..\iis\%DEPENDENCIES_DIR%\pcre LIBXML2=..\iis\%DEPENDENCIES_DIR%\libxml2 LUA=..\iis\%DEPENDENCIES_DIR%\lua\src VERSION=VERSION_IIS
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd %CURRENT_DIR%
@echo Copy...
copy /y ..\mlogc\mlogc.exe %OUTPUT_DIR%
copy /y ..\iis\modsecurityiis.dll %OUTPUT_DIR%
copy /y ..\iis\modsecurityiis.pdb %OUTPUT_DIR%
exit /B 0
:build_wrong_vcargs
@echo Please specify a valid vcargs
@goto failed
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@cd %CURRENT_DIR%
@exit /B 1

29
iis/build_msi.bat Normal file
View File

@ -0,0 +1,29 @@
set PATH="%PATH%;C:\Program Files (x86)\WiX Toolset v3.8\bin;C:\Program Files (x86)\WiX Toolset v3.7\bin;"
set CURRENT_DIR=%cd%
del installer.wix*
"candle.exe" -ext WixUtilExtension -ext WixUIExtension "%CURRENT_DIR%\installer.wxs" -out "%CURRENT_DIR%\installer.wixobj" -dPlatform="x64"
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
"light.exe" -ext WixUtilExtension -ext WixUIExtension "%CURRENT_DIR%\installer.wixobj" -out "%CURRENT_DIR%\installer-64.msi" -dPlatform="x64"
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
"candle.exe" -ext WixUtilExtension -ext WixUIExtension "%CURRENT_DIR%\installer.wxs" -out "%CURRENT_DIR%\installer.wixobj" -dPlatform="x86"
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
"light.exe" -ext WixUtilExtension -ext WixUIExtension "%CURRENT_DIR%\installer.wixobj" -out "%CURRENT_DIR%\installer-32.msi" -dPlatform="x86"
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
exit /B 0
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@cd %CURRENT_DIR%
@exit /B 1

69
iis/build_release.bat Normal file
View File

@ -0,0 +1,69 @@
echo "Building release..."
set RELEASE_DIR=release
set OUTPUT_DIR=%cd%\dependencies\release_files
set CURRENT_DIR=%cd%
set AMD64=%RELEASE_DIR%\amd64
set X86=%RELEASE_DIR%\x86
mkdir "%RELEASE_DIR%"
mkdir "%AMD64%"
mkdir "%X86%"
set VCARGS32="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
set VCARGS64="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat"
call build_dependencies.bat %VCARGS64%
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
call build_modsecurity.bat %VCARGS64%
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
copy "%OUTPUT_DIR%\libapr-1.dll" "%AMD64%"
copy "%OUTPUT_DIR%\libapriconv-1.dll" "%AMD64%"
copy "%OUTPUT_DIR%\libaprutil-1.dll" "%AMD64%"
copy "%OUTPUT_DIR%\libcurl.dll" "%AMD64%"
copy "%OUTPUT_DIR%\libxml2.dll" "%AMD64%"
copy "%OUTPUT_DIR%\lua5.1.dll" "%AMD64%"
copy "%OUTPUT_DIR%\mlogc.exe" "%AMD64%"
copy "%OUTPUT_DIR%\ModSecurityIIS.dll" "%AMD64%"
copy "%OUTPUT_DIR%\pcre.dll" "%AMD64%"
copy "%OUTPUT_DIR%\zlib1.dll" "%AMD64%"
call build_dependencies.bat %VCARGS32%
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
call build_modsecurity.bat %VCARGS32%
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
copy "%OUTPUT_DIR%\libapr-1.dll" "%X86%"
copy "%OUTPUT_DIR%\libapriconv-1.dll" "%X86%"
copy "%OUTPUT_DIR%\libaprutil-1.dll" "%X86%"
copy "%OUTPUT_DIR%\libcurl.dll" "%X86%"
copy "%OUTPUT_DIR%\libxml2.dll" "%X86%"
copy "%OUTPUT_DIR%\lua5.1.dll" "%X86%"
copy "%OUTPUT_DIR%\mlogc.exe" "%X86%"
copy "%OUTPUT_DIR%\ModSecurityIIS.dll" "%X86%"
copy %OUTPUT_DIR%\pcre.dll "%X86%"
copy %OUTPUT_DIR%\zlib1.dll "%X86%"
:: copy %OUTPUT_DIR%\Installer.exe %RELEASE_DIR%
:: copy %OUTPUT_DIR%\ModSecurity.xml %RELEASE_DIR%
:: copy %OUTPUT_DIR%\owasp_csr.zip %RELEASE_DIR%
:: copy %OUTPUT_DIR%\README.txt %RELEASE_DIR%
exit /B 0
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@cd %CURRENT_DIR%
@exit /B 1

View File

@ -0,0 +1,47 @@
@cd "%WORK_DIR%"
@set APACHE=%WORK_DIR%\Apache24
@if NOT EXIST "%SOURCE_DIR%\%APACHE_BIN%" goto file_not_found_bin
@if NOT EXIST "%SOURCE_DIR%\%APACHE_SRC%" goto file_not_found_src
@7z.exe x "%SOURCE_DIR%\%APACHE_BIN%"
@if NOT (%ERRORLEVEL%) == (0) goto something_went_wrong
@7z.exe x "%SOURCE_DIR%\%APACHE_SRC%" -so | 7z.exe x -aoa -si -ttar
@if NOT (%ERRORLEVEL%) == (0) goto something_went_wrong
:: Missing: %APACHE%\bin\libapr-1.pdb %APACHE%\bin\libapr-1.lib ?
copy /y "%APACHE%\bin\libapr-1.dll" "%OUTPUT_DIR%"
@if NOT (%ERRORLEVEL%) == (0) goto something_went_wrong_copy
:: Missing: %APACHE%\bin\libapriconv-1.pdb %APACHE%\lib\libapriconv-1.lib ?
copy /y "%APACHE%\bin\libapriconv-1.dll" "%OUTPUT_DIR%"
@if NOT (%ERRORLEVEL%) == (0) goto something_went_wrong_copy
:: Missing: %APACHE%\bin\libaprutil-1.pdb %APACHE%\lib\libaprutil-1.lib ?
copy /y "%APACHE%\bin\libaprutil-1.dll" "%OUTPUT_DIR%"
@if NOT (%ERRORLEVEL%) == (0) goto something_went_wrong_copy
@cd "%WORK_DIR%"
@exit /B 0
:something_went_wrong_copy
@echo Something went wrong while trying to copy Apache binaries files.
@goto failed
:file_not_found_bin
@echo File not found: %SOURCE_DIR%\%APACHE_BIN%
@goto failed
:file_not_found_src
@echo File not found: %SOURCE_DIR%\%APACHE_SRC%
@goto failed
:something_went_wrong
@echo Something went wrong while unzip Apache files.
@goto failed
:failed
@exit /B 1

View File

@ -0,0 +1,39 @@
cd "%WORK_DIR%"
@if NOT EXIST "%SOURCE_DIR%\%CURL%" goto file_not_found_bin
echo "7z..."
7z.exe x "%SOURCE_DIR%\%CURL%"
echo "Timeout..."
timeout 5
echo "Curl..."
set CURL_DIR=%CURL:~0,-4%
echo "Move..."
move "%CURL_DIR%" "curl"
echo "Cd..."
:: copy /y CMakeLists.txt "curl"
CD "curl"
echo "Cmake..."
CMAKE -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=True -DCURL_ZLIB=True
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
:: "%WORK_DIR%\fart.exe" -r -C "%WORK_DIR%\curl\include\curl\curlbuild.h" LLU ULL
NMAKE
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd "%WORK_DIR%"
copy /y "%WORK_DIR%\curl\lib\libcurl.dll" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\curl\lib\libcurl.pdb" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\curl\lib\libcurl_imp.lib" "%OUTPUT_DIR%"
exit /B 0
:file_not_found_bin
@echo File not found: "%SOURCE_DIR%\%CURL%"
@goto failed
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@exit /B 1

View File

@ -0,0 +1,35 @@
cd "%WORK_DIR%"
@if NOT EXIST "%SOURCE_DIR%\%LIBXML2%" goto file_not_found_bin
@7z.exe x "%SOURCE_DIR%\%LIBXML2%" -so | 7z.exe x -aoa -si -ttar
set LIBXML2_DIR=%LIBXML2:~0,-7%
move "%LIBXML2_DIR%" "libxml2"
:: fart.exe -r -i -C "%WORK_DIR%\%LIBXML2_DIR%\win32\*.*" \x2Fopt:nowin98 " "
cd "libxml2\win32"
CSCRIPT configure.js iconv=no vcmanifest=yes zlib=yes
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
NMAKE -f Makefile.msvc
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd "%WORK%"
copy /y "%WORK_DIR%\libxml2\win32\bin.msvc\libxml2.dll" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\libxml2\win32\bin.msvc\libxml2.lib" "%OUTPUT_DIR%"
@exit /B 0
:file_not_found_bin
@echo File not found: "%SOURCE_DIR%\%LIBXML2%"
@goto failed
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@exit /B 1

View File

@ -0,0 +1,39 @@
cd "%WORK_DIR%"
@if NOT EXIST "%SOURCE_DIR%\%LUA%" goto file_not_found_bin
@7z.exe x "%SOURCE_DIR%\%LUA%" -so | 7z.exe x -aoa -si -ttar
set LUA_DIR=%LUA:~0,-7%
move "%LUA_DIR%" "lua"
cd "lua\src"
CL /Ox /arch:SSE2 /GF /GL /Gy /FD /EHsc /MD /Zi /TC /wd4005 /D "_MBCS" /D "LUA_CORE" /D "LUA_BUILD_AS_DLL" /D "_CRT_SECURE_NO_WARNINGS" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_WIN32" /D "_WINDLL" /c *.c
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
DEL lua.obj luac.obj
LINK /DLL /LTCG /DEBUG /OUT:lua5.1.dll *.obj
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
IF EXIST lua5.1.dll.manifest MT -manifest lua5.1.dll.manifest -outputresource:lua5.1.dll;2
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd "%WORK_DIR%"
copy /y "%WORK_DIR%\lua\src\lua5.1.dll" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\lua\src\lua5.1.pdb" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\lua\src\lua5.1.lib" "%OUTPUT_DIR%"
@exit /B 0
:file_not_found_bin
@echo File not found: "%SOURCE_DIR%\%LUA%"
@goto failed
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@exit /B 1

View File

@ -0,0 +1,32 @@
cd "%WORK_DIR%"
@if NOT EXIST "%SOURCE_DIR%\%APACHE_BIN%" goto file_not_found_bin
7z.exe x "%SOURCE_DIR%\%PCRE%"
set PCRE_DIR=%PCRE:~0,-4%
move "%PCRE_DIR%" "pcre"
cd "pcre"
CMAKE -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=True
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
NMAKE
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd "%WORK%"
copy /y "%WORK_DIR%\pcre\pcre.dll" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\pcre\pcre.pdb" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\pcre\pcre.lib" "%OUTPUT_DIR%"
echo "a"
@exit /B 0
:file_not_found_bin
@echo File not found: "%SOURCE_DIR%\%PCRE%"
@goto failed
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@exit /B 1

View File

@ -0,0 +1,34 @@
cd "%WORK_DIR%"
@if NOT EXIST "%SOURCE_DIR%\%ZLIB%" goto file_not_found_bin
@7z.exe x "%SOURCE_DIR%\%ZLIB%" -so | 7z.exe x -aoa -si -ttar
set ZLIB_DIR=%ZLIB:~0,-7%
move "%ZLIB_DIR%" "zlib"
cd "zlib"
nmake -f win32\Makefile.msc
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
SET INCLUDE=%INCLUDE%;%WORK_DIR%\zlib
SET LIB=%LIB%;%WORK_DIR%\zlib
cd "%WORK_DIR%"
copy /y "%WORK_DIR%\zlib\zlib1.dll" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\zlib\zlib1.pdb" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\zlib\zdll.lib" "%OUTPUT_DIR%"
@exit /B 0
:file_not_found_bin
@echo File not found: "%SOURCE_DIR%\%ZLIB%"
@goto failed
:build_failed
@echo Problems during the building phase
@goto failed
:failed
@exit /B 1

View File

@ -1,44 +1,44 @@
WARNING!
Building ModSecurityIIS on Windows is a relatively complicated process. Understanding it requires advanced knowledge of Windows and Unix environments.
Using the same versions of libraries as listed below is strongly recommended.
--------------------------------------
Tested on:
Windows 7 x64
Vistual Studio 2010 Ultimate SP1
IIS enabled/installed
cmake 2.8.7
curl 7.24.0
apache 2.2.22 or apache 2.4.3
libxml2 2.7.7
lua 5.1.5
pcre 8.30
zlib 1.2.7
7-Zip
--------------------------------------
1. Create working directory c:\work and drop directory c:\drop
2. Sync SVN ModSecurity branch to c:\work\mod_security
3. Copy files from c:\work\mod_security\iis\winbuild to c:\work
4. Download and install cmake (unpack to c:\work\cmake-2.8.7-win32-x86)
5. Download and install 7-Zip
6. Adjust paths in c:\work\init.bat accordingly if needed
7. Download curl, apache, libxml2, lua, pcre and zlib, place them in zip files in c:\work
curl-7.24.0.zip
httpd-2.2.22-win32-src.zip or (httpd-2.4.3.zip (source) and httpd-2.4.3-win32.zip + httpd-2.4.3-win64.zip (binaries))
libxml2-2.7.7.zip
lua-5.1.5.zip
pcre-8.30.zip
zlib-1.2.7.zip
Modify c:\work\build.bat accordingly (if other versions were used)
8. Open cmd.exe window, go to c:\work and run buildall.bat
9. When done, the binaries, lib and pdb files should appear under c:\drop\x86 (32-bit) and c:\drop\amd64 (64-bit)
10. Open the VS ModSecurity IIS installer project
11. Copy new binaries to the installer's x86 and amd64 directories
12. Build installer from within VS
WARNING!
Building ModSecurityIIS on Windows is a relatively complicated process. Understanding it requires advanced knowledge of Windows and Unix environments.
Using the same versions of libraries as listed below is strongly recommended.
--------------------------------------
Tested on:
Windows 7 x64
Vistual Studio 2010 Ultimate SP1
IIS enabled/installed
cmake 2.8.7
curl 7.24.0
apache 2.2.22 or apache 2.4.3
libxml2 2.7.7
lua 5.1.5
pcre 8.30
zlib 1.2.7
7-Zip
--------------------------------------
1. Create working directory c:\work and drop directory c:\drop
2. Sync SVN ModSecurity branch to c:\work\mod_security
3. Copy files from c:\work\mod_security\iis\winbuild to c:\work
4. Download and install cmake (unpack to c:\work\cmake-2.8.7-win32-x86)
5. Download and install 7-Zip
6. Adjust paths in c:\work\init.bat accordingly if needed
7. Download curl, apache, libxml2, lua, pcre and zlib, place them in zip files in c:\work
curl-7.24.0.zip
httpd-2.2.22-win32-src.zip or (httpd-2.4.3.zip (source) and httpd-2.4.3-win32.zip + httpd-2.4.3-win64.zip (binaries))
libxml2-2.7.7.zip
lua-5.1.5.zip
pcre-8.30.zip
zlib-1.2.7.zip
Modify c:\work\build.bat accordingly (if other versions were used)
8. Open cmd.exe window, go to c:\work and run buildall.bat
9. When done, the binaries, lib and pdb files should appear under c:\drop\x86 (32-bit) and c:\drop\amd64 (64-bit)
10. Open the VS ModSecurity IIS installer project
11. Copy new binaries to the installer's x86 and amd64 directories
12. Build installer from within VS

750
iis/installer.wxs Normal file
View File

@ -0,0 +1,750 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
# This comment is generated by WixEdit, the specific commandline
# arguments for the WiX Toolset are stored here.
candleArgs: -nologo "<projectfile>" -out "<projectname>.wixobj" -ext WixUtilExtension -ext WixUIExtension -dPlatform="x64"
lightArgs:
-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="22B04FDB-9BAB-46B0-87B8-A39544ECECD3" Name="ModSecurity IIS" Language="1033" Version="2.7.6" Manufacturer="ModSecurity" UpgradeCode="82F09489-1678-4C38-ADCB-08C3757653DB">
<Package Description="ModSecurityISS" Comments="none" InstallerVersion="200" Compressed="yes" InstallPrivileges="elevated" InstallScope="perMachine" Platform="$(var.Platform)" />
<?if $(var.Platform) = x64 ?>
<?define ProductName = "ModSecuirty IIS (64 bit)" ?>
<?define Win64 = "yes" ?>
<!--<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>-->
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?else ?>
<?define ProductName = "ModSecuirty IIS" ?>
<?define Win64 = "no" ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
<Property Id="IIS">
<RegistrySearch Id="IISInstalledVersion" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Type="raw" Name="MajorVersion" />
</Property>
<Property Id="FILEEXISTS" Secure="yes">
<DirectorySearch Id="CheckFileDir1" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile1" Name="ModSecurityIIS.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir2" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile2" Name="libapr-1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir3" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile3" Name="libapriconv-1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir4" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile4" Name="libaprutil-1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir5" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile5" Name="libcurl.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir6" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile6" Name="libxml2.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir7" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile7" Name="lua5.1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir8" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile8" Name="pcre.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir9" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile9" Name="zlib1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir10" Path="C:\Windows\SysWOW64\inetsrv" Depth="0">
<FileSearch Id="CheckFile10" Name="ModSecurityIIS.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir11" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile11" Name="libapr-1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir12" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile12" Name="libapriconv-1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir13" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile13" Name="libaprutil-1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir14" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile14" Name="libcurl.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir15" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile15" Name="libxml2.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir16" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile16" Name="lua5.1.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir17" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile17" Name="pcre.dll" />
</DirectorySearch>
<DirectorySearch Id="CheckFileDir18" Path="C:\Windows\System32\inetsrv" Depth="0">
<FileSearch Id="CheckFile18" Name="zlib1.dll" />
</DirectorySearch>
</Property>
<Property Id="WWWROOT">
<RegistrySearch Id="FindInetPubFolder" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Name="PathWWWRoot" Type="directory" />
</Property>
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
<Condition Message="This setup requires IIS 6.0, 7.0 or 8.0 is installed."><![CDATA[(IIS="#7") OR (IIS="#6") OR (IIS="#8")]]></Condition>
<!-- Version 2.7.6 had an uninstall issue that leaves some files behind. Asking the user to manually hash this out. -->
<Condition Message="A older version of ModSecurityIIS was found in your computer. Please complete uninstall by removing the following file: [FILEEXISTS]. You may have to remove ModSecurity module from IIS, use the IIS Manager to do so."><![CDATA[(NOT FILEEXISTS) OR (Installed)]]></Condition>
<!--
Won't necessary. We can install 32bits stuff in a 64 machine. If IIS is proper
configured it will work like a charm.
<Condition Message="64-bit operating system was detected, please use the 64-bit installer.">
<?if $(var.Win64) = "yes" ?>
VersionNT64
<?else?>
NOT VersionNT64
<?endif?>
</Condition>
-->
<Media Id="1" Cabinet="simple.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="SystemFolder" Name="SystemFolder">
<Directory Id="inetsrv" Name="inetsrv"/>
</Directory>
<Directory Id="$(var.PlatformProgramFilesFolder)">
<Directory Id="INSTALLFOLDER" Name="ModSecurity IIS">
<!-- </Directory>
<Directory Id="WWWROOT" Name="[WWWROOT]"> -->
<Directory Id="OWASP_CRS" Name="owasp_crs">
<Component Id="_.GITIGNORE" DiskId="1" Guid="64629082-F6A2-4675-9E3E-4EA363CD6502">
<File Id="_.GITIGNORE" Name=".gitignore" Source="release\owasp_crs\.gitignore" />
</Component>
<Component Id="CHANGES" DiskId="1" Guid="F392B5B3-5703-4FB8-9578-BBF7454DA7DA">
<File Id="CHANGES" Name="CHANGES" Source="release\owasp_crs\CHANGES" />
</Component>
<Component Id="INSTALL" DiskId="1" Guid="BCC0CA30-22B6-4D32-90EF-0E4BD688865F">
<File Id="INSTALL" Name="INSTALL" Source="release\owasp_crs\INSTALL" />
</Component>
<Component Id="LICENSE" DiskId="1" Guid="32DBDBCC-B2AC-4FA4-82AB-BFD7F9F2F089">
<File Id="LICENSE" Name="LICENSE" Source="release\owasp_crs\LICENSE" />
</Component>
<Component Id="MODSECURITY_CRS_10_SETUP.CONF.EXAMPLE" DiskId="1" Guid="6A87F473-6E1F-4F85-9A03-CC4F6CB7F826">
<File Id="MODSECURITY_CRS_10_SETUP.CONF.EXAMPLE" Name="modsecurity_crs_10_setup.conf.example" Source="release\owasp_crs\modsecurity_crs_10_setup.conf.example" />
</Component>
<Component Id="README.MD" DiskId="1" Guid="BED770B8-BEC9-4326-AF04-7B75E319B899">
<File Id="README.MD" Name="README.md" Source="release\owasp_crs\README.md" />
</Component>
<Directory Id="ACTIVATED_RULES" Name="activated_rules">
<Component Id="README" DiskId="1" Guid="F06FC044-52E6-412E-80E6-6644486A522B">
<File Id="README" Name="README" Source="release\owasp_crs\activated_rules\README" />
</Component>
</Directory>
<Directory Id="BASE_RULES" Name="base_rules">
<Component Id="MODSECURITY_35_BAD_ROBOTS.DATA" DiskId="1" Guid="66EB7DE9-E12D-4360-B096-75CAB0498E88">
<File Id="MODSECURITY_35_BAD_ROBOTS.DATA" Name="modsecurity_35_bad_robots.data" Source="release\owasp_crs\base_rules\modsecurity_35_bad_robots.data" />
</Component>
<Component Id="MODSECURITY_35_SCANNERS.DATA" DiskId="1" Guid="CA206BA2-F54C-41A9-8B13-EA07C0A2CA89">
<File Id="MODSECURITY_35_SCANNERS.DATA" Name="modsecurity_35_scanners.data" Source="release\owasp_crs\base_rules\modsecurity_35_scanners.data" />
</Component>
<Component Id="MODSECURITY_40_GENERIC_ATTACKS.DATA" DiskId="1" Guid="23BBF95B-D4B7-4ECA-AB52-B563DD112027">
<File Id="MODSECURITY_40_GENERIC_ATTACKS.DATA" Name="modsecurity_40_generic_attacks.data" Source="release\owasp_crs\base_rules\modsecurity_40_generic_attacks.data" />
</Component>
<Component Id="MODSECURITY_50_OUTBOUND.DATA" DiskId="1" Guid="EA0D5FBB-69E5-4A42-A64D-F12F528CE3A6">
<File Id="MODSECURITY_50_OUTBOUND.DATA" Name="modsecurity_50_outbound.data" Source="release\owasp_crs\base_rules\modsecurity_50_outbound.data" />
</Component>
<Component Id="MODSECURITY_50_OUTBOUND_MALWARE.DATA" DiskId="1" Guid="97BC0C05-6487-4389-A042-D840F12F5C67">
<File Id="MODSECURITY_50_OUTBOUND_MALWARE.DATA" Name="modsecurity_50_outbound_malware.data" Source="release\owasp_crs\base_rules\modsecurity_50_outbound_malware.data" />
</Component>
<Component Id="MODSECURITY_CRS_20_PROTOCOL_VIOLATIONS.CONF" DiskId="1" Guid="634C707B-27E0-46D2-A24C-1EC60BF94840">
<File Id="MODSECURITY_CRS_20_PROTOCOL_VIOLATIONS.CONF" Name="modsecurity_crs_20_protocol_violations.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_20_protocol_violations.conf" />
</Component>
<Component Id="MODSECURITY_CRS_21_PROTOCOL_ANOMALIES.CONF" DiskId="1" Guid="BF6CA903-978F-4FEC-90C6-310C9DB00F9C">
<File Id="MODSECURITY_CRS_21_PROTOCOL_ANOMALIES.CONF" Name="modsecurity_crs_21_protocol_anomalies.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_21_protocol_anomalies.conf" />
</Component>
<Component Id="MODSECURITY_CRS_23_REQUEST_LIMITS.CONF" DiskId="1" Guid="BB32F9E8-90D0-4C6D-8B81-66E82232260E">
<File Id="MODSECURITY_CRS_23_REQUEST_LIMITS.CONF" Name="modsecurity_crs_23_request_limits.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_23_request_limits.conf" />
</Component>
<Component Id="MODSECURITY_CRS_30_HTTP_POLICY.CONF" DiskId="1" Guid="B396E825-30CE-47FD-9B8B-C4120C08C573">
<File Id="MODSECURITY_CRS_30_HTTP_POLICY.CONF" Name="modsecurity_crs_30_http_policy.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_30_http_policy.conf" />
</Component>
<Component Id="MODSECURITY_CRS_35_BAD_ROBOTS.CONF" DiskId="1" Guid="F4443062-8C25-44B6-90F4-07D3AA264119">
<File Id="MODSECURITY_CRS_35_BAD_ROBOTS.CONF" Name="modsecurity_crs_35_bad_robots.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_35_bad_robots.conf" />
</Component>
<Component Id="MODSECURITY_CRS_40_GENERIC_ATTACKS.CONF" DiskId="1" Guid="F9CBEF9D-0623-46FC-9ED1-7CEB6797F632">
<File Id="MODSECURITY_CRS_40_GENERIC_ATTACKS.CONF" Name="modsecurity_crs_40_generic_attacks.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_40_generic_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_41_SQL_INJECTION_ATTACKS.CONF" DiskId="1" Guid="A3750D66-5EBF-4A4B-A022-BD8A960B25C6">
<File Id="MODSECURITY_CRS_41_SQL_INJECTION_ATTACKS.CONF" Name="modsecurity_crs_41_sql_injection_attacks.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_41_sql_injection_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_41_XSS_ATTACKS.CONF" DiskId="1" Guid="0B1E8868-FEAD-4957-95F8-BDB9A6883E60">
<File Id="MODSECURITY_CRS_41_XSS_ATTACKS.CONF" Name="modsecurity_crs_41_xss_attacks.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_41_xss_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_42_TIGHT_SECURITY.CONF" DiskId="1" Guid="2B0AB195-55A3-4518-8CAE-DB6327AE13C9">
<File Id="MODSECURITY_CRS_42_TIGHT_SECURITY.CONF" Name="modsecurity_crs_42_tight_security.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_42_tight_security.conf" />
</Component>
<Component Id="MODSECURITY_CRS_45_TROJANS.CONF" DiskId="1" Guid="E365E9B9-00A2-49EE-88BC-62C4F3FF4B6E">
<File Id="MODSECURITY_CRS_45_TROJANS.CONF" Name="modsecurity_crs_45_trojans.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_45_trojans.conf" />
</Component>
<Component Id="MODSECURITY_CRS_47_COMMON_EXCEPTIONS.CONF" DiskId="1" Guid="B0AFBC61-47D6-48F2-9930-B1625207650F">
<File Id="MODSECURITY_CRS_47_COMMON_EXCEPTIONS.CONF" Name="modsecurity_crs_47_common_exceptions.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_47_common_exceptions.conf" />
</Component>
<Component Id="MODSECURITY_CRS_48_LOCAL_EXCEPTIONS.CONF.EXAMPLE" DiskId="1" Guid="0529CA91-785B-4FBA-A22C-DC0CFAAB2AE3">
<File Id="MODSECURITY_CRS_48_LOCAL_EXCEPTIONS.CONF.EXAMPLE" Name="modsecurity_crs_48_local_exceptions.conf.example" Source="release\owasp_crs\base_rules\modsecurity_crs_48_local_exceptions.conf.example" />
</Component>
<Component Id="MODSECURITY_CRS_49_INBOUND_BLOCKING.CONF" DiskId="1" Guid="8708633A-3D28-4F93-AE12-27F3E7494D2C">
<File Id="MODSECURITY_CRS_49_INBOUND_BLOCKING.CONF" Name="modsecurity_crs_49_inbound_blocking.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_49_inbound_blocking.conf" />
</Component>
<Component Id="MODSECURITY_CRS_50_OUTBOUND.CONF" DiskId="1" Guid="A59F553E-0AB8-46C8-B3AE-D4356C2331B0">
<File Id="MODSECURITY_CRS_50_OUTBOUND.CONF" Name="modsecurity_crs_50_outbound.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_50_outbound.conf" />
</Component>
<Component Id="MODSECURITY_CRS_59_OUTBOUND_BLOCKING.CONF" DiskId="1" Guid="14D6B456-B9E6-4F4E-996B-2306FA72F1B4">
<File Id="MODSECURITY_CRS_59_OUTBOUND_BLOCKING.CONF" Name="modsecurity_crs_59_outbound_blocking.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_59_outbound_blocking.conf" />
</Component>
<Component Id="MODSECURITY_CRS_60_CORRELATION.CONF" DiskId="1" Guid="F5A97EA0-80CC-4ECD-AA3A-822780B0064A">
<File Id="MODSECURITY_CRS_60_CORRELATION.CONF" Name="modsecurity_crs_60_correlation.conf" Source="release\owasp_crs\base_rules\modsecurity_crs_60_correlation.conf" />
</Component>
</Directory>
<Directory Id="EXPERIMENTAL_RULES" Name="experimental_rules">
<Component Id="MODSECURITY_CRS_11_BRUTE_FORCE.CONF" DiskId="1" Guid="B2504C95-7338-49CA-9786-ACEF671ABB93">
<File Id="MODSECURITY_CRS_11_BRUTE_FORCE.CONF" Name="modsecurity_crs_11_brute_force.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_11_brute_force.conf" />
</Component>
<Component Id="MODSECURITY_CRS_11_DOS_PROTECTION.CONF" DiskId="1" Guid="B4B6224A-47DD-46B0-93FE-8BF2AA657525">
<File Id="MODSECURITY_CRS_11_DOS_PROTECTION.CONF" Name="modsecurity_crs_11_dos_protection.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_11_dos_protection.conf" />
</Component>
<Component Id="MODSECURITY_CRS_11_PROXY_ABUSE.CONF" DiskId="1" Guid="EFE8B978-7E08-4CC9-B54B-6E54FA40AFED">
<File Id="MODSECURITY_CRS_11_PROXY_ABUSE.CONF" Name="modsecurity_crs_11_proxy_abuse.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_11_proxy_abuse.conf" />
</Component>
<Component Id="MODSECURITY_CRS_11_SLOW_DOS_PROTECTION.CONF" DiskId="1" Guid="78C29C01-40D3-48D2-9ECA-FFF309AF5096">
<File Id="MODSECURITY_CRS_11_SLOW_DOS_PROTECTION.CONF" Name="modsecurity_crs_11_slow_dos_protection.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_11_slow_dos_protection.conf" />
</Component>
<Component Id="MODSECURITY_CRS_16_SCANNER_INTEGRATION.CONF" DiskId="1" Guid="F8B8A64D-0F7F-49A9-AE9C-38E323659BE1">
<File Id="MODSECURITY_CRS_16_SCANNER_INTEGRATION.CONF" Name="modsecurity_crs_16_scanner_integration.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_16_scanner_integration.conf" />
</Component>
<Component Id="MODSECURITY_CRS_25_CC_TRACK_PAN.CONF" DiskId="1" Guid="6C435FB6-4293-4297-9B59-72AA8F4664EC">
<File Id="MODSECURITY_CRS_25_CC_TRACK_PAN.CONF" Name="modsecurity_crs_25_cc_track_pan.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_25_cc_track_pan.conf" />
</Component>
<Component Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.0_SETUP.CONF" DiskId="1" Guid="3627E92F-ADF1-45E0-B249-E2DCC9587B50">
<File Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.0_SETUP.CONF" Name="modsecurity_crs_40_appsensor_detection_point_2.0_setup.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_40_appsensor_detection_point_2.0_setup.conf" />
</Component>
<Component Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.1_REQUEST_EXCEPTION.CONF" DiskId="1" Guid="F1A4BE30-699E-4892-B506-EB3FC9379C57">
<File Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.1_REQUEST_EXCEPTION.CONF" Name="modsecurity_crs_40_appsensor_detection_point_2.1_request_exception.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_40_appsensor_detection_point_2.1_request_exception.conf" />
</Component>
<Component Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.9_HONEYTRAP.CONF" DiskId="1" Guid="256EB87C-BAF5-4155-8392-5B0C8803882A">
<File Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.9_HONEYTRAP.CONF" Name="modsecurity_crs_40_appsensor_detection_point_2.9_honeytrap.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_40_appsensor_detection_point_2.9_honeytrap.conf" />
</Component>
<Component Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_3.0_END.CONF" DiskId="1" Guid="5B4D9A6B-F54B-4875-A64B-B4A2F74B1298">
<File Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_3.0_END.CONF" Name="modsecurity_crs_40_appsensor_detection_point_3.0_end.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_40_appsensor_detection_point_3.0_end.conf" />
</Component>
<Component Id="MODSECURITY_CRS_40_HTTP_PARAMETER_POLLUTION.CONF" DiskId="1" Guid="31C832E0-3E79-4F14-89BA-AFD1072F9A6D">
<File Id="MODSECURITY_CRS_40_HTTP_PARAMETER_POLLUTION.CONF" Name="modsecurity_crs_40_http_parameter_pollution.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_40_http_parameter_pollution.conf" />
</Component>
<Component Id="MODSECURITY_CRS_42_CSP_ENFORCEMENT.CONF" DiskId="1" Guid="9D853A58-A5A4-4EBD-990B-152AB4350326">
<File Id="MODSECURITY_CRS_42_CSP_ENFORCEMENT.CONF" Name="modsecurity_crs_42_csp_enforcement.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_42_csp_enforcement.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SCANNER_INTEGRATION.CONF" DiskId="1" Guid="01D4EBBD-F7DE-444D-89B4-848BC30B1233">
<File Id="MODSECURITY_CRS_46_SCANNER_INTEGRATION.CONF" Name="modsecurity_crs_46_scanner_integration.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_46_scanner_integration.conf" />
</Component>
<Component Id="MODSECURITY_CRS_48_BAYES_ANALYSIS.CONF" DiskId="1" Guid="6DD49981-2CAA-4AD9-943D-60E6C71E0CE1">
<File Id="MODSECURITY_CRS_48_BAYES_ANALYSIS.CONF" Name="modsecurity_crs_48_bayes_analysis.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_48_bayes_analysis.conf" />
</Component>
<Component Id="MODSECURITY_CRS_55_RESPONSE_PROFILING.CONF" DiskId="1" Guid="3FF3801E-C915-4C87-9741-48449ADBBB28">
<File Id="MODSECURITY_CRS_55_RESPONSE_PROFILING.CONF" Name="modsecurity_crs_55_response_profiling.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_55_response_profiling.conf" />
</Component>
<Component Id="MODSECURITY_CRS_56_PVI_CHECKS.CONF" DiskId="1" Guid="184CE6CF-9999-4D28-A70E-6762B96181FD">
<File Id="MODSECURITY_CRS_56_PVI_CHECKS.CONF" Name="modsecurity_crs_56_pvi_checks.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_56_pvi_checks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_61_IP_FORENSICS.CONF" DiskId="1" Guid="F7AF0FFB-2346-4159-BC72-19FE52487231">
<File Id="MODSECURITY_CRS_61_IP_FORENSICS.CONF" Name="modsecurity_crs_61_ip_forensics.conf" Source="release\owasp_crs\experimental_rules\modsecurity_crs_61_ip_forensics.conf" />
</Component>
</Directory>
<Directory Id="LUA" Name="lua">
<Component Id="ADVANCED_FILTER_CONVERTER.LUA" DiskId="1" Guid="BF9033A5-C9A4-4867-92CA-CDD174CBE420">
<File Id="ADVANCED_FILTER_CONVERTER.LUA" Name="advanced_filter_converter.lua" Source="release\owasp_crs\lua\advanced_filter_converter.lua" />
</Component>
<Component Id="APPSENSOR_REQUEST_EXCEPTION_ENFORCE.LUA" DiskId="1" Guid="108E0164-5221-4834-8004-A54A94DD26F9">
<File Id="APPSENSOR_REQUEST_EXCEPTION_ENFORCE.LUA" Name="appsensor_request_exception_enforce.lua" Source="release\owasp_crs\lua\appsensor_request_exception_enforce.lua" />
</Component>
<Component Id="APPSENSOR_REQUEST_EXCEPTION_PROFILE.LUA" DiskId="1" Guid="F7C270EA-2609-4C04-A4C6-0CB247B9C854">
<File Id="APPSENSOR_REQUEST_EXCEPTION_PROFILE.LUA" Name="appsensor_request_exception_profile.lua" Source="release\owasp_crs\lua\appsensor_request_exception_profile.lua" />
</Component>
<Component Id="ARACHNI_INTEGRATION.LUA" DiskId="1" Guid="93653BD0-2E5B-4798-B098-73428806865A">
<File Id="ARACHNI_INTEGRATION.LUA" Name="arachni_integration.lua" Source="release\owasp_crs\lua\arachni_integration.lua" />
</Component>
<Component Id="BAYES_CHECK_SPAM.LUA" DiskId="1" Guid="825D79AD-5A1A-416A-B905-AC686E9FC6D8">
<File Id="BAYES_CHECK_SPAM.LUA" Name="bayes_check_spam.lua" Source="release\owasp_crs\lua\bayes_check_spam.lua" />
</Component>
<Component Id="BAYES_TRAIN_HAM.LUA" DiskId="1" Guid="C61EDAAD-2F43-496D-A2C1-A89B6F3DEC68">
<File Id="BAYES_TRAIN_HAM.LUA" Name="bayes_train_ham.lua" Source="release\owasp_crs\lua\bayes_train_ham.lua" />
</Component>
<Component Id="BAYES_TRAIN_SPAM.LUA" DiskId="1" Guid="7D1816A3-9705-4146-AC9E-C835C2EA57CB">
<File Id="BAYES_TRAIN_SPAM.LUA" Name="bayes_train_spam.lua" Source="release\owasp_crs\lua\bayes_train_spam.lua" />
</Component>
<Component Id="GATHER_IP_DATA.LUA" DiskId="1" Guid="F317DF73-6461-4E85-B776-153F86526CDB">
<File Id="GATHER_IP_DATA.LUA" Name="gather_ip_data.lua" Source="release\owasp_crs\lua\gather_ip_data.lua" />
</Component>
<Component Id="OSVDB.LUA" DiskId="1" Guid="AEED3BB6-1132-43D4-BA19-6863AE3E08C3">
<File Id="OSVDB.LUA" Name="osvdb.lua" Source="release\owasp_crs\lua\osvdb.lua" />
</Component>
<Component Id="PROFILE_PAGE_SCRIPTS.LUA" DiskId="1" Guid="44D1B12B-3F51-4EC3-9DB5-D887F7B941CB">
<File Id="PROFILE_PAGE_SCRIPTS.LUA" Name="profile_page_scripts.lua" Source="release\owasp_crs\lua\profile_page_scripts.lua" />
</Component>
</Directory>
<Directory Id="OPTIONAL_RULES" Name="optional_rules">
<Component Id="MODSECURITY_42_COMMENT_SPAM.DATA" DiskId="1" Guid="8744C127-31F0-4C4E-85FB-D86BDEA3627B">
<File Id="MODSECURITY_42_COMMENT_SPAM.DATA" Name="modsecurity_42_comment_spam.data" Source="release\owasp_crs\optional_rules\modsecurity_42_comment_spam.data" />
</Component>
<Component Id="MODSECURITY_CRS_10_IGNORE_STATIC.CONF" DiskId="1" Guid="38C5BB11-D5CA-4D24-A1AD-A10014225B3E">
<File Id="MODSECURITY_CRS_10_IGNORE_STATIC.CONF" Name="modsecurity_crs_10_ignore_static.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_10_ignore_static.conf" />
</Component>
<Component Id="MODSECURITY_CRS_11_AVS_TRAFFIC.CONF" DiskId="1" Guid="A89C0F8A-72CE-450F-ABF6-7AA3BFEB83CA">
<File Id="MODSECURITY_CRS_11_AVS_TRAFFIC.CONF" Name="modsecurity_crs_11_avs_traffic.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_11_avs_traffic.conf" />
</Component>
<Component Id="MODSECURITY_CRS_13_XML_ENABLER.CONF" DiskId="1" Guid="1399D33C-70B7-48BF-B757-04B77F502DEB">
<File Id="MODSECURITY_CRS_13_XML_ENABLER.CONF" Name="modsecurity_crs_13_xml_enabler.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_13_xml_enabler.conf" />
</Component>
<Component Id="MODSECURITY_CRS_16_AUTHENTICATION_TRACKING.CONF" DiskId="1" Guid="E2D8C3F5-7D9B-4407-9D9F-F433F4E1F01B">
<File Id="MODSECURITY_CRS_16_AUTHENTICATION_TRACKING.CONF" Name="modsecurity_crs_16_authentication_tracking.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_16_authentication_tracking.conf" />
</Component>
<Component Id="MODSECURITY_CRS_16_SESSION_HIJACKING.CONF" DiskId="1" Guid="1E6A5036-CF10-4D48-8209-6B0FCBE4A24B">
<File Id="MODSECURITY_CRS_16_SESSION_HIJACKING.CONF" Name="modsecurity_crs_16_session_hijacking.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_16_session_hijacking.conf" />
</Component>
<Component Id="MODSECURITY_CRS_16_USERNAME_TRACKING.CONF" DiskId="1" Guid="028E96D3-8C3C-4CD1-BBE4-F57A6347B85D">
<File Id="MODSECURITY_CRS_16_USERNAME_TRACKING.CONF" Name="modsecurity_crs_16_username_tracking.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_16_username_tracking.conf" />
</Component>
<Component Id="MODSECURITY_CRS_25_CC_KNOWN.CONF" DiskId="1" Guid="450F7C2C-8B0D-4A59-9094-6971C54318DE">
<File Id="MODSECURITY_CRS_25_CC_KNOWN.CONF" Name="modsecurity_crs_25_cc_known.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_25_cc_known.conf" />
</Component>
<Component Id="MODSECURITY_CRS_42_COMMENT_SPAM.CONF" DiskId="1" Guid="35A7A16E-CE14-433B-9C55-4A319CF6243B">
<File Id="MODSECURITY_CRS_42_COMMENT_SPAM.CONF" Name="modsecurity_crs_42_comment_spam.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_42_comment_spam.conf" />
</Component>
<Component Id="MODSECURITY_CRS_43_CSRF_PROTECTION.CONF" DiskId="1" Guid="1782BFBE-8575-4914-9694-C1825BF3C83A">
<File Id="MODSECURITY_CRS_43_CSRF_PROTECTION.CONF" Name="modsecurity_crs_43_csrf_protection.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_43_csrf_protection.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_AV_SCANNING.CONF" DiskId="1" Guid="A9F1CE92-B4F5-485E-AA1E-D99184BD8F39">
<File Id="MODSECURITY_CRS_46_AV_SCANNING.CONF" Name="modsecurity_crs_46_av_scanning.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_46_av_scanning.conf" />
</Component>
<Component Id="MODSECURITY_CRS_47_SKIP_OUTBOUND_CHECKS.CONF" DiskId="1" Guid="80D6A043-50DC-4E84-AC1B-1F9DEE074D89">
<File Id="MODSECURITY_CRS_47_SKIP_OUTBOUND_CHECKS.CONF" Name="modsecurity_crs_47_skip_outbound_checks.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_47_skip_outbound_checks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_49_HEADER_TAGGING.CONF" DiskId="1" Guid="6FBEA0F5-94B5-447C-9F3D-230B5C9109FB">
<File Id="MODSECURITY_CRS_49_HEADER_TAGGING.CONF" Name="modsecurity_crs_49_header_tagging.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_49_header_tagging.conf" />
</Component>
<Component Id="MODSECURITY_CRS_55_APPLICATION_DEFECTS.CONF" DiskId="1" Guid="BB8BDC87-4B50-4CE6-9893-7C53AD3EC971">
<File Id="MODSECURITY_CRS_55_APPLICATION_DEFECTS.CONF" Name="modsecurity_crs_55_application_defects.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_55_application_defects.conf" />
</Component>
<Component Id="MODSECURITY_CRS_55_MARKETING.CONF" DiskId="1" Guid="90CDE413-E4B0-4609-83F1-210545203880">
<File Id="MODSECURITY_CRS_55_MARKETING.CONF" Name="modsecurity_crs_55_marketing.conf" Source="release\owasp_crs\optional_rules\modsecurity_crs_55_marketing.conf" />
</Component>
</Directory>
<Directory Id="SLR_RULES" Name="slr_rules">
<Component Id="MODSECURITY_46_SLR_ET_JOOMLA.DATA" DiskId="1" Guid="A880D035-8933-4A83-9D14-2FE010F4BF79">
<File Id="MODSECURITY_46_SLR_ET_JOOMLA.DATA" Name="modsecurity_46_slr_et_joomla.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_joomla.data" />
</Component>
<Component Id="MODSECURITY_46_SLR_ET_LFI.DATA" DiskId="1" Guid="8D276187-4464-4B1C-AAB7-BBBF04B235CF">
<File Id="MODSECURITY_46_SLR_ET_LFI.DATA" Name="modsecurity_46_slr_et_lfi.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_lfi.data" />
</Component>
<Component Id="MODSECURITY_46_SLR_ET_PHPBB.DATA" DiskId="1" Guid="4E0D55ED-B346-41E4-BA75-A1E008D5595B">
<File Id="MODSECURITY_46_SLR_ET_PHPBB.DATA" Name="modsecurity_46_slr_et_phpbb.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_phpbb.data" />
</Component>
<Component Id="MODSECURITY_46_SLR_ET_RFI.DATA" DiskId="1" Guid="437E4792-C537-49ED-990A-FB6980E414B7">
<File Id="MODSECURITY_46_SLR_ET_RFI.DATA" Name="modsecurity_46_slr_et_rfi.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_rfi.data" />
</Component>
<Component Id="MODSECURITY_46_SLR_ET_SQLI.DATA" DiskId="1" Guid="FD80B47F-D98E-4878-903A-15F1A971DE56">
<File Id="MODSECURITY_46_SLR_ET_SQLI.DATA" Name="modsecurity_46_slr_et_sqli.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_sqli.data" />
</Component>
<Component Id="MODSECURITY_46_SLR_ET_WORDPRESS.DATA" DiskId="1" Guid="A7BD059D-3C96-4C36-AC72-C1697A65CAAD">
<File Id="MODSECURITY_46_SLR_ET_WORDPRESS.DATA" Name="modsecurity_46_slr_et_wordpress.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_wordpress.data" />
</Component>
<Component Id="MODSECURITY_46_SLR_ET_XSS.DATA" DiskId="1" Guid="2B284399-9BBD-4F25-81B9-40D5FCF66576">
<File Id="MODSECURITY_46_SLR_ET_XSS.DATA" Name="modsecurity_46_slr_et_xss.data" Source="release\owasp_crs\slr_rules\modsecurity_46_slr_et_xss.data" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_JOOMLA_ATTACKS.CONF" DiskId="1" Guid="981DAB23-63E8-4BD0-9ABD-D719B4A3313B">
<File Id="MODSECURITY_CRS_46_SLR_ET_JOOMLA_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_joomla_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_joomla_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_LFI_ATTACKS.CONF" DiskId="1" Guid="AC8469DC-2DF7-49A8-9439-4F47253EAB90">
<File Id="MODSECURITY_CRS_46_SLR_ET_LFI_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_lfi_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_lfi_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_PHPBB_ATTACKS.CONF" DiskId="1" Guid="92B9316A-DA96-4CF6-964F-8AE9F8F7DDAD">
<File Id="MODSECURITY_CRS_46_SLR_ET_PHPBB_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_phpbb_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_phpbb_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_RFI_ATTACKS.CONF" DiskId="1" Guid="BBFCC3E1-0E62-4202-9BE8-3EA1DB0C2387">
<File Id="MODSECURITY_CRS_46_SLR_ET_RFI_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_rfi_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_rfi_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_SQLI_ATTACKS.CONF" DiskId="1" Guid="5106909C-0F9A-4E1A-88F5-93B27BFD33B8">
<File Id="MODSECURITY_CRS_46_SLR_ET_SQLI_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_sqli_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_sqli_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_WORDPRESS_ATTACKS.CONF" DiskId="1" Guid="E77E12C3-22DB-4F57-93FA-56256722F21A">
<File Id="MODSECURITY_CRS_46_SLR_ET_WORDPRESS_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_wordpress_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_wordpress_attacks.conf" />
</Component>
<Component Id="MODSECURITY_CRS_46_SLR_ET_XSS_ATTACKS.CONF" DiskId="1" Guid="456D8604-CE06-498D-BC2F-105D54C66CFB">
<File Id="MODSECURITY_CRS_46_SLR_ET_XSS_ATTACKS.CONF" Name="modsecurity_crs_46_slr_et_xss_attacks.conf" Source="release\owasp_crs\slr_rules\modsecurity_crs_46_slr_et_xss_attacks.conf" />
</Component>
</Directory>
<Directory Id="UTIL" Name="util">
<Component Id="README_1" DiskId="1" Guid="A95D50D7-4E87-4A87-BAD1-12370B8F5B9B">
<File Id="README_1" Name="README" Source="release\owasp_crs\util\README" />
</Component>
<Directory Id="AV_SCANNING" Name="av-scanning">
<Component Id="RUNAV.PL" DiskId="1" Guid="398B0257-F78A-4F8C-B313-90D0F61581A9">
<File Id="RUNAV.PL" Name="runav.pl" Source="release\owasp_crs\util\av-scanning\runav.pl" />
</Component>
<Directory Id="RUNAV" Name="runAV">
<Component Id="COMMON.C" DiskId="1" Guid="3EA0484E-5E42-43C3-B89B-71BCC89DBB4F">
<File Id="COMMON.C" Name="common.c" Source="release\owasp_crs\util\av-scanning\runAV\common.c" />
</Component>
<Component Id="COMMON.H" DiskId="1" Guid="29504C05-6147-4957-8390-60F039463FA9">
<File Id="COMMON.H" Name="common.h" Source="release\owasp_crs\util\av-scanning\runAV\common.h" />
</Component>
<Component Id="COMP" DiskId="1" Guid="CEB59BC0-C76D-4DBA-B0A0-42124A020FE4">
<File Id="COMP" Name="comp" Source="release\owasp_crs\util\av-scanning\runAV\comp" />
</Component>
<Component Id="RUNAV_CLAMD.C" DiskId="1" Guid="FB6785F2-D985-4E68-8D7C-CBB0CDB7044F">
<File Id="RUNAV_CLAMD.C" Name="runAV-clamd.c" Source="release\owasp_crs\util\av-scanning\runAV\runAV-clamd.c" />
</Component>
<Component Id="RUNAV.C" DiskId="1" Guid="6121CDE1-8E12-41A0-812D-E8CD0540FCB9">
<File Id="RUNAV.C" Name="runAV.c" Source="release\owasp_crs\util\av-scanning\runAV\runAV.c" />
</Component>
</Directory>
</Directory>
<Directory Id="BROWSER_TOOLS" Name="browser-tools">
<Component Id="JS_OVERRIDES.JS" DiskId="1" Guid="A81D4319-9C26-4E29-A0BD-FC2DED0045A7">
<File Id="JS_OVERRIDES.JS" Name="js-overrides.js" Source="release\owasp_crs\util\browser-tools\js-overrides.js" />
</Component>
</Directory>
<Directory Id="HONEYPOT_SENSOR" Name="honeypot-sensor">
<Component Id="MLOGC_HONEYPOT_SENSOR.CONF" DiskId="1" Guid="3D3DD51F-70FF-41CE-A756-2C2935A71BA8">
<File Id="MLOGC_HONEYPOT_SENSOR.CONF" Name="mlogc-honeypot-sensor.conf" Source="release\owasp_crs\util\honeypot-sensor\mlogc-honeypot-sensor.conf" />
</Component>
<Component Id="MODSECURITY_CRS_10_HONEYPOT.CONF" DiskId="1" Guid="5F643F1F-1AEA-404B-9261-2FBE34620C70">
<File Id="MODSECURITY_CRS_10_HONEYPOT.CONF" Name="modsecurity_crs_10_honeypot.conf" Source="release\owasp_crs\util\honeypot-sensor\modsecurity_crs_10_honeypot.conf" />
</Component>
<Component Id="README.MD_1" DiskId="1" Guid="35D1829A-13D8-4CC9-8706-6EC4EBB56C53">
<File Id="README.MD_1" Name="README.md" Source="release\owasp_crs\util\honeypot-sensor\README.md" />
</Component>
</Directory>
<Directory Id="REGRESSION_TESTS" Name="regression-tests">
<Component Id="INSTALL_1" DiskId="1" Guid="02AF3C5A-DCF9-4DB6-A1C8-B1EF140C8EBC">
<File Id="INSTALL_1" Name="INSTALL" Source="release\owasp_crs\util\regression-tests\INSTALL" />
</Component>
<Component Id="MODSECURITY_CRS_59_HEADER_TAGGING.CONF" DiskId="1" Guid="42C2D42E-DCAE-4212-8B43-ABA5F8467393">
<File Id="MODSECURITY_CRS_59_HEADER_TAGGING.CONF" Name="modsecurity_crs_59_header_tagging.conf" Source="release\owasp_crs\util\regression-tests\modsecurity_crs_59_header_tagging.conf" />
</Component>
<Component Id="README_2" DiskId="1" Guid="E4C933D0-810A-4CD7-9453-9D3CD91785B3">
<File Id="README_2" Name="README" Source="release\owasp_crs\util\regression-tests\README" />
</Component>
<Component Id="RULESTEST.CONF" DiskId="1" Guid="71B11439-F036-4BEB-9052-196E66C89815">
<File Id="RULESTEST.CONF" Name="rulestest.conf" Source="release\owasp_crs\util\regression-tests\rulestest.conf" />
</Component>
<Component Id="RULESTEST.PL" DiskId="1" Guid="B6F99088-BD50-4A1D-9C50-27178593D561">
<File Id="RULESTEST.PL" Name="rulestest.pl" Source="release\owasp_crs\util\regression-tests\rulestest.pl" />
</Component>
<Component Id="TESTSERVER.CGI" DiskId="1" Guid="F2DFC065-4342-4457-8A1D-EFC9229597FF">
<File Id="TESTSERVER.CGI" Name="testserver.cgi" Source="release\owasp_crs\util\regression-tests\testserver.cgi" />
</Component>
<Directory Id="TESTS" Name="tests">
<Component Id="MODSECURITY_CRS_20_PROTOCOL_VIOLATIONS.TESTS" DiskId="1" Guid="FCCBB8FE-4327-4AF0-AB5C-3120858EBB16">
<File Id="MODSECURITY_CRS_20_PROTOCOL_VIOLATIONS.TESTS" Name="modsecurity_crs_20_protocol_violations.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_20_protocol_violations.tests" />
</Component>
<Component Id="MODSECURITY_CRS_21_PROTOCOL_ANOMALIES.TESTS" DiskId="1" Guid="10EA8DFE-BEDC-46F6-8F42-6F9DB7E2BB91">
<File Id="MODSECURITY_CRS_21_PROTOCOL_ANOMALIES.TESTS" Name="modsecurity_crs_21_protocol_anomalies.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_21_protocol_anomalies.tests" />
</Component>
<Component Id="MODSECURITY_CRS_23_REQUEST_LIMITS.TESTS" DiskId="1" Guid="D6423225-9D55-44BF-8369-88F0A4169DEC">
<File Id="MODSECURITY_CRS_23_REQUEST_LIMITS.TESTS" Name="modsecurity_crs_23_request_limits.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_23_request_limits.tests" />
</Component>
<Component Id="MODSECURITY_CRS_30_HTTP_POLICY.TESTS" DiskId="1" Guid="AE373E10-4CF1-425A-AA71-826544A268F1">
<File Id="MODSECURITY_CRS_30_HTTP_POLICY.TESTS" Name="modsecurity_crs_30_http_policy.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_30_http_policy.tests" />
</Component>
<Component Id="MODSECURITY_CRS_35_BAD_ROBOTS.TESTS" DiskId="1" Guid="F8598994-3565-4900-BA68-62B4CF38079C">
<File Id="MODSECURITY_CRS_35_BAD_ROBOTS.TESTS" Name="modsecurity_crs_35_bad_robots.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_35_bad_robots.tests" />
</Component>
<Component Id="MODSECURITY_CRS_40_GENERIC_ATTACKS.TESTS" DiskId="1" Guid="F5ADA896-81BD-48BE-A2D6-07B8D6914602">
<File Id="MODSECURITY_CRS_40_GENERIC_ATTACKS.TESTS" Name="modsecurity_crs_40_generic_attacks.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_40_generic_attacks.tests" />
</Component>
<Component Id="MODSECURITY_CRS_41_SQL_INJECTION_ATTACKS.TESTS" DiskId="1" Guid="FA1A3FE9-CF6E-47C2-91FD-5CB4B7C38532">
<File Id="MODSECURITY_CRS_41_SQL_INJECTION_ATTACKS.TESTS" Name="modsecurity_crs_41_sql_injection_attacks.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_41_sql_injection_attacks.tests" />
</Component>
<Component Id="MODSECURITY_CRS_41_XSS_ATTACKS.TESTS" DiskId="1" Guid="371184B4-6F7C-4F5A-A7BC-CEA578FF18A5">
<File Id="MODSECURITY_CRS_41_XSS_ATTACKS.TESTS" Name="modsecurity_crs_41_xss_attacks.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_41_xss_attacks.tests" />
</Component>
<Component Id="MODSECURITY_CRS_50_OUTBOUND.TESTS" DiskId="1" Guid="5A55697D-5A14-4E45-B0A6-CD9475EA2C3D">
<File Id="MODSECURITY_CRS_50_OUTBOUND.TESTS" Name="modsecurity_crs_50_outbound.tests" Source="release\owasp_crs\util\regression-tests\tests\modsecurity_crs_50_outbound.tests" />
</Component>
<Component Id="RUBY.TESTS" DiskId="1" Guid="F3A13399-D449-4F90-8C0E-E9E5988D45AE">
<File Id="RUBY.TESTS" Name="ruby.tests" Source="release\owasp_crs\util\regression-tests\tests\ruby.tests" />
</Component>
</Directory>
</Directory>
<Directory Id="RULE_MANAGEMENT" Name="rule-management">
<Component Id="ID_RANGE" DiskId="1" Guid="0368949F-5721-4648-A789-1D5598F327F5">
<File Id="ID_RANGE" Name="id-range" Source="release\owasp_crs\util\rule-management\id-range" />
</Component>
<Component Id="REMOVE_2.7_ACTIONS.PL" DiskId="1" Guid="9624F10D-AFD5-4CC8-8C89-F9C969CDA31D">
<File Id="REMOVE_2.7_ACTIONS.PL" Name="remove-2.7-actions.pl" Source="release\owasp_crs\util\rule-management\remove-2.7-actions.pl" />
</Component>
<Component Id="VERIFY.RB" DiskId="1" Guid="4D4AB297-50DB-411E-8D12-E0205CCB53B4">
<File Id="VERIFY.RB" Name="verify.rb" Source="release\owasp_crs\util\rule-management\verify.rb" />
</Component>
</Directory>
<Directory Id="VIRTUAL_PATCHING" Name="virtual-patching">
<Component Id="ARACHNI2MODSEC.PL" DiskId="1" Guid="DDDD3A2B-CEC1-42B3-9984-2987CA5BA311">
<File Id="ARACHNI2MODSEC.PL" Name="arachni2modsec.pl" Source="release\owasp_crs\util\virtual-patching\arachni2modsec.pl" />
</Component>
<Component Id="ZAP2MODSEC.PL" DiskId="1" Guid="CADBD60B-235E-4B2D-94D3-7CA2E4E19D9C">
<File Id="ZAP2MODSEC.PL" Name="zap2modsec.pl" Source="release\owasp_crs\util\virtual-patching\zap2modsec.pl" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuDir" Name="ModSecurity IIS">
<Component Id="StartMenuShortcuts" Guid="43C26B13-C4D8-42F8-8715-3AF78E66C902">
<util:InternetShortcut Id="WebsiteShortcut" Name="ModSecurity" Target="http://www.modsecurity.org/" />
<util:InternetShortcut Id="CSR" Name="OWASP ModSecurity Core Rule Set" Target="http://spIderlabs.github.io/owasp-modsecurity-crs/" />
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" />
<Shortcut Id="UninstallProduct" Name="Uninstall" Description="Uninstalls the ModSecurity IIS" Target="[System64Folder]msiexec.exe" Arguments="/x [ProductCode]" />
<Shortcut Id="EULA" Name="EULA" Description="EULA" Target="[INSTALLFOLDER]EULA.rtf" WorkingDirectory="INSTALLFOLDER" />
<Shortcut Id="Readme" Name="EULA" Description="EULA" Target="[INSTALLFOLDER]README.TXT" WorkingDirectory="INSTALLFOLDER" />
</Component>
</Directory>
</Directory>
</Directory>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="README.TXT" DiskId="1" Guid="980270DF-81AB-469B-AB0E-64FA3BA160B6">
<File Id="README.TXT" Name="README.TXT" Source="wix\README.TXT" />
</Component>
<Component Id="EULA.RTF" DiskId="1" Guid="980270DF-81AB-469B-AB0E-64FA3BA160B1">
<File Id="EULA.RTF" Name="EULA.rtf" Source="wix\EULA.rtf" />
</Component>
<Component Id="modsecurity.conf" DiskId="1" Guid="980270DF-81AB-469B-AB0E-64FA3BA163B1">
<File Id="modsecurity.conf" Name="modsecurity.conf" Source="wix\modsecurity.conf" />
</Component>
<Component Id="modsecurity_iis.conf" DiskId="1" Guid="980270DF-81AB-469B-AB0E-64FA3BA161B1">
<File Id="modsecurity_iis.conf" Name="modsecurity_iis.conf" Source="wix\modsecurity_iis.conf" />
</Component>
<Component Id="modsecurity_crs_10_setup.conf" DiskId="1" Guid="980270DF-81AB-469B-AB0E-64FA3BA166B1">
<File Id="modsecurity_crs_10_setup.conf" Name="modsecurity_crs_10_setup.conf" Source="wix\modsecurity_crs_10_setup.conf" />
</Component>
</DirectoryRef>
<?if $(var.Win64) = "yes" ?>
<DirectoryRef Id="inetsrv">
<Component Id="LIBAPR_1.DLL" DiskId="1" Guid="514A81F0-2413-42EF-B19F-E2613125ECE0">
<File Id="LIBAPR_1.DLL" Name="libapr-1.dll" Source="Release\amd64\libapr-1.dll" />
</Component>
<Component Id="LIBAPRICONV_1.DLL" DiskId="1" Guid="BAB541D1-9B8E-4220-9112-4B2ED7FD119D">
<File Id="LIBAPRICONV_1.DLL" Name="libapriconv-1.dll" Source="Release\amd64\libapriconv-1.dll" />
</Component>
<Component Id="LIBAPRUTIL_1.DLL" DiskId="1" Guid="2B4762E0-FC6C-4156-A1CA-58504B2F0C8B">
<File Id="LIBAPRUTIL_1.DLL" Name="libaprutil-1.dll" Source="Release\amd64\libaprutil-1.dll" />
</Component>
<Component Id="LIBCURL.DLL" DiskId="1" Guid="7E3AFCBA-8E8E-4B75-9957-91932325CC69">
<File Id="LIBCURL.DLL" Name="libcurl.dll" Source="Release\amd64\libcurl.dll" />
</Component>
<Component Id="LIBXML2.DLL" DiskId="1" Guid="23562703-C4EE-4EF8-B6E4-1E35A2A6BDBB">
<File Id="LIBXML2.DLL" Name="libxml2.dll" Source="Release\amd64\libxml2.dll" />
</Component>
<Component Id="LUA5.1.DLL" DiskId="1" Guid="F2A09A92-F564-4C93-AB17-569A6FDA3A7C">
<File Id="LUA5.1.DLL" Name="lua5.1.dll" Source="Release\amd64\lua5.1.dll" />
</Component>
<Component Id="MLOGC.EXE" DiskId="1" Guid="49A1606F-F374-453F-B968-C22CF6FBF9FF">
<File Id="MLOGC.EXE" Name="mlogc.exe" Source="Release\amd64\mlogc.exe" />
</Component>
<Component Id="MODSECURITYIIS.DLL" DiskId="1" Guid="8EFD370B-D4D9-456C-A065-C8E9C81201A2">
<File Id="MODSECURITYIIS.DLL" Name="ModSecurityIIS.dll" Source="Release\amd64\ModSecurityIIS.dll" />
</Component>
<Component Id="PCRE.DLL" DiskId="1" Guid="F166E5BE-E2F8-47DB-9D17-3A4EB16C222F">
<File Id="PCRE.DLL" Name="pcre.dll" Source="Release\amd64\pcre.dll" />
</Component>
<Component Id="ZLIB1.DLL" DiskId="1" Guid="067F28EC-DD5A-4E18-9824-05C2C0CC8C59">
<File Id="ZLIB1.DLL" Name="zlib1.dll" Source="Release\amd64\zlib1.dll" />
</Component>
</DirectoryRef>
<?else ?>
<DirectoryRef Id="inetsrv">
<Component Id="LIBAPR_1.DLL" DiskId="1" Guid="514A81F0-2413-42EF-B19F-E2613125ECE1">
<File Id="LIBAPR_1.DLL" Name="libapr-1.dll" Source="Release\x86\libapr-1.dll" />
</Component>
<Component Id="LIBAPRICONV_1.DLL" DiskId="1" Guid="BAB541D1-9B8E-4220-9112-4B2ED7FD1191">
<File Id="LIBAPRICONV_1.DLL" Name="libapriconv-1.dll" Source="Release\x86\libapriconv-1.dll" />
</Component>
<Component Id="LIBAPRUTIL_1.DLL" DiskId="1" Guid="2B4762E0-FC6C-4156-A1CA-58504B2F0C81">
<File Id="LIBAPRUTIL_1.DLL" Name="libaprutil-1.dll" Source="Release\x86\libaprutil-1.dll" />
</Component>
<Component Id="LIBCURL.DLL" DiskId="1" Guid="7E3AFCBA-8E8E-4B75-9957-91932325CC61">
<File Id="LIBCURL.DLL" Name="libcurl.dll" Source="Release\x86\libcurl.dll" />
</Component>
<Component Id="LIBXML2.DLL" DiskId="1" Guid="23562703-C4EE-4EF8-B6E4-1E35A2A6BDB1">
<File Id="LIBXML2.DLL" Name="libxml2.dll" Source="Release\x86\libxml2.dll" />
</Component>
<Component Id="LUA5.1.DLL" DiskId="1" Guid="F2A09A92-F564-4C93-AB17-569A6FDA3A71">
<File Id="LUA5.1.DLL" Name="lua5.1.dll" Source="Release\x86\lua5.1.dll" />
</Component>
<Component Id="MLOGC.EXE" DiskId="1" Guid="49A1606F-F374-453F-B968-C22CF6FBF9F1">
<File Id="MLOGC.EXE" Name="mlogc.exe" Source="Release\x86\mlogc.exe" />
</Component>
<Component Id="MODSECURITYIIS.DLL" DiskId="1" Guid="8EFD370B-D4D9-456C-A065-C8E9C81201A1">
<File Id="MODSECURITYIIS.DLL" Name="ModSecurityIIS.dll" Source="Release\x86\ModSecurityIIS.dll" />
</Component>
<Component Id="PCRE.DLL" DiskId="1" Guid="F166E5BE-E2F8-47DB-9D17-3A4EB16C2221">
<File Id="PCRE.DLL" Name="pcre.dll" Source="Release\x86\pcre.dll" />
</Component>
<Component Id="ZLIB1.DLL" DiskId="1" Guid="067F28EC-DD5A-4E18-9824-05C2C0CC8C51">
<File Id="ZLIB1.DLL" Name="zlib1.dll" Source="Release\x86\zlib1.dll" />
</Component>
</DirectoryRef>
<?endif ?>
<Feature Id="DefaultFeature" Title="ModSecurity IIS" Level="1">
<ComponentRef Id="README.TXT" />
<ComponentRef Id="EULA.RTF" />
<ComponentRef Id="LIBAPR_1.DLL" />
<ComponentRef Id="LIBAPRICONV_1.DLL" />
<ComponentRef Id="LIBAPRUTIL_1.DLL" />
<ComponentRef Id="LIBCURL.DLL" />
<ComponentRef Id="LIBXML2.DLL" />
<ComponentRef Id="LUA5.1.DLL" />
<ComponentRef Id="MLOGC.EXE" />
<ComponentRef Id="MODSECURITYIIS.DLL" />
<ComponentRef Id="PCRE.DLL" />
<ComponentRef Id="ZLIB1.DLL" />
<ComponentRef Id="StartMenuShortcuts" />
<ComponentRef Id="modsecurity.conf" />
<ComponentRef Id="modsecurity_iis.conf" />
<ComponentRef Id="modsecurity_crs_10_setup.conf" />
<Feature Id="OWASP_ModSecurity_CRS_v2.2.8" Level="1" Title="OWASP ModSecurity CRS v2.2.8">
<ComponentRef Id="_.GITIGNORE" />
<ComponentRef Id="CHANGES" />
<ComponentRef Id="INSTALL" />
<ComponentRef Id="LICENSE" />
<ComponentRef Id="MODSECURITY_CRS_10_SETUP.CONF.EXAMPLE" />
<ComponentRef Id="README.MD" />
<ComponentRef Id="README" />
<ComponentRef Id="MODSECURITY_35_BAD_ROBOTS.DATA" />
<ComponentRef Id="MODSECURITY_35_SCANNERS.DATA" />
<ComponentRef Id="MODSECURITY_40_GENERIC_ATTACKS.DATA" />
<ComponentRef Id="MODSECURITY_50_OUTBOUND.DATA" />
<ComponentRef Id="MODSECURITY_50_OUTBOUND_MALWARE.DATA" />
<ComponentRef Id="MODSECURITY_CRS_20_PROTOCOL_VIOLATIONS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_21_PROTOCOL_ANOMALIES.CONF" />
<ComponentRef Id="MODSECURITY_CRS_23_REQUEST_LIMITS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_30_HTTP_POLICY.CONF" />
<ComponentRef Id="MODSECURITY_CRS_35_BAD_ROBOTS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_40_GENERIC_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_41_SQL_INJECTION_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_41_XSS_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_42_TIGHT_SECURITY.CONF" />
<ComponentRef Id="MODSECURITY_CRS_45_TROJANS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_47_COMMON_EXCEPTIONS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_48_LOCAL_EXCEPTIONS.CONF.EXAMPLE" />
<ComponentRef Id="MODSECURITY_CRS_49_INBOUND_BLOCKING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_50_OUTBOUND.CONF" />
<ComponentRef Id="MODSECURITY_CRS_59_OUTBOUND_BLOCKING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_60_CORRELATION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_11_BRUTE_FORCE.CONF" />
<ComponentRef Id="MODSECURITY_CRS_11_DOS_PROTECTION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_11_PROXY_ABUSE.CONF" />
<ComponentRef Id="MODSECURITY_CRS_11_SLOW_DOS_PROTECTION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_16_SCANNER_INTEGRATION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_25_CC_TRACK_PAN.CONF" />
<ComponentRef Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.0_SETUP.CONF" />
<ComponentRef Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.1_REQUEST_EXCEPTION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_2.9_HONEYTRAP.CONF" />
<ComponentRef Id="MODSECURITY_CRS_40_APPSENSOR_DETECTION_POINT_3.0_END.CONF" />
<ComponentRef Id="MODSECURITY_CRS_40_HTTP_PARAMETER_POLLUTION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_42_CSP_ENFORCEMENT.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SCANNER_INTEGRATION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_48_BAYES_ANALYSIS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_55_RESPONSE_PROFILING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_56_PVI_CHECKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_61_IP_FORENSICS.CONF" />
<ComponentRef Id="ADVANCED_FILTER_CONVERTER.LUA" />
<ComponentRef Id="APPSENSOR_REQUEST_EXCEPTION_ENFORCE.LUA" />
<ComponentRef Id="APPSENSOR_REQUEST_EXCEPTION_PROFILE.LUA" />
<ComponentRef Id="ARACHNI_INTEGRATION.LUA" />
<ComponentRef Id="BAYES_CHECK_SPAM.LUA" />
<ComponentRef Id="BAYES_TRAIN_HAM.LUA" />
<ComponentRef Id="BAYES_TRAIN_SPAM.LUA" />
<ComponentRef Id="GATHER_IP_DATA.LUA" />
<ComponentRef Id="OSVDB.LUA" />
<ComponentRef Id="PROFILE_PAGE_SCRIPTS.LUA" />
<ComponentRef Id="MODSECURITY_42_COMMENT_SPAM.DATA" />
<ComponentRef Id="MODSECURITY_CRS_10_IGNORE_STATIC.CONF" />
<ComponentRef Id="MODSECURITY_CRS_11_AVS_TRAFFIC.CONF" />
<ComponentRef Id="MODSECURITY_CRS_13_XML_ENABLER.CONF" />
<ComponentRef Id="MODSECURITY_CRS_16_AUTHENTICATION_TRACKING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_16_SESSION_HIJACKING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_16_USERNAME_TRACKING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_25_CC_KNOWN.CONF" />
<ComponentRef Id="MODSECURITY_CRS_42_COMMENT_SPAM.CONF" />
<ComponentRef Id="MODSECURITY_CRS_43_CSRF_PROTECTION.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_AV_SCANNING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_47_SKIP_OUTBOUND_CHECKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_49_HEADER_TAGGING.CONF" />
<ComponentRef Id="MODSECURITY_CRS_55_APPLICATION_DEFECTS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_55_MARKETING.CONF" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_JOOMLA.DATA" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_LFI.DATA" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_PHPBB.DATA" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_RFI.DATA" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_SQLI.DATA" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_WORDPRESS.DATA" />
<ComponentRef Id="MODSECURITY_46_SLR_ET_XSS.DATA" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_JOOMLA_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_LFI_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_PHPBB_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_RFI_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_SQLI_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_WORDPRESS_ATTACKS.CONF" />
<ComponentRef Id="MODSECURITY_CRS_46_SLR_ET_XSS_ATTACKS.CONF" />
<ComponentRef Id="README_1" />
<ComponentRef Id="RUNAV.PL" />
<ComponentRef Id="COMMON.C" />
<ComponentRef Id="COMMON.H" />
<ComponentRef Id="COMP" />
<ComponentRef Id="RUNAV_CLAMD.C" />
<ComponentRef Id="RUNAV.C" />
<ComponentRef Id="JS_OVERRIDES.JS" />
<ComponentRef Id="MLOGC_HONEYPOT_SENSOR.CONF" />
<ComponentRef Id="MODSECURITY_CRS_10_HONEYPOT.CONF" />
<ComponentRef Id="README.MD_1" />
<ComponentRef Id="INSTALL_1" />
<ComponentRef Id="MODSECURITY_CRS_59_HEADER_TAGGING.CONF" />
<ComponentRef Id="README_2" />
<ComponentRef Id="RULESTEST.CONF" />
<ComponentRef Id="RULESTEST.PL" />
<ComponentRef Id="TESTSERVER.CGI" />
<ComponentRef Id="MODSECURITY_CRS_20_PROTOCOL_VIOLATIONS.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_21_PROTOCOL_ANOMALIES.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_23_REQUEST_LIMITS.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_30_HTTP_POLICY.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_35_BAD_ROBOTS.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_40_GENERIC_ATTACKS.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_41_SQL_INJECTION_ATTACKS.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_41_XSS_ATTACKS.TESTS" />
<ComponentRef Id="MODSECURITY_CRS_50_OUTBOUND.TESTS" />
<ComponentRef Id="RUBY.TESTS" />
<ComponentRef Id="ID_RANGE" />
<ComponentRef Id="REMOVE_2.7_ACTIONS.PL" />
<ComponentRef Id="VERIFY.RB" />
<ComponentRef Id="ARACHNI2MODSEC.PL" />
<ComponentRef Id="ZAP2MODSEC.PL" />
</Feature>
</Feature>
<UIRef Id="WixUI_Mondo" />
<WixVariable Id="WixUILicenseRtf" Value="wix\EULA.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="wix\banner.jpg" />
<WixVariable Id="WixUIDialogBmp" Value="wix\dialog.jpg" />
<InstallExecuteSequence>
<Custom Action="InstallModule" Before="InstallFinalize"><![CDATA[NOT Installed]]></Custom>
<Custom Action="InstallConf" After="InstallModule"><![CDATA[NOT Installed]]></Custom>
<Custom Action="UninstallConf" Before="RemoveFiles"><![CDATA[Installed]]></Custom>
<Custom Action="UninstallModule" After="UninstallConf"><![CDATA[Installed]]></Custom>
</InstallExecuteSequence>
<CustomAction Id="InstallModule" Execute="deferred" Impersonate="no" Return="check" Directory="INSTALLFOLDER" ExeCommand="&quot;[SystemFolder]inetsrv\appcmd.exe&quot; install module /name:&quot;ModSecurity IIS&quot; /image:&quot;[SystemFolder]inetsrv\ModSecurityIIS.dll&quot;" />
<CustomAction Id="InstallConf" Execute="deferred" Impersonate="no" Return="check" Directory="INSTALLFOLDER" ExeCommand="&quot;[SystemFolder]inetsrv\appcmd.exe&quot; set config /section:&quot;system.webServer/ModSecurity&quot; /&quot;enabled:true&quot; /&quot;configFile:[INSTALLFOLDER]modsecurity_iis.conf&quot;" />
<CustomAction Id="UninstallModule" Execute="deferred" Impersonate="no" Return="check" Directory="INSTALLFOLDER" ExeCommand="&quot;[SystemFolder]inetsrv\appcmd.exe&quot; uninstall module /module.name:&quot;ModSecurity IIS&quot;" />
<CustomAction Id="UninstallConf" Execute="deferred" Impersonate="no" Return="check" Directory="INSTALLFOLDER" ExeCommand="&quot;[SystemFolder]inetsrv\appcmd.exe&quot; clear config -section:&quot;system.webServer/ModSecurity&quot;" />
<UI>
</UI>
</Product>
</Wix>

View File

@ -1,320 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Creating a Native Module for IIS7</title>
</head>
<body>
<h1>
Creating a Native Module for IIS7</h1>
<p>
To extend the server, IIS7 provides a new (C++) native core server API, which replaces
ISAPI filter and extension API from previous IIS releases. The new API features
object-oriented development with an intuitive object model, provides more control
over request processing, and uses simpler design patterns to help you write robust
code. Please visit <a target="_new" href="http://www.iis.net/default.aspx?tabid=2&subtabid=25&i=942">Developing a Native Module for IIS7</a> for more information about this sample.<br />
<br />
<strong>NOTE</strong>: The IIS7 native (C++) server API is declared in the Platform
SDK <strong>httpserv.h</strong> header file.&nbsp; <strong>You must obtain this SDK
and register it with Visual Studio in order to compile this module.</strong></p>
<p>
A native module is a Windows DLL that contains an the following:</p>
<ol>
<li><strong>RegisterModule</strong> exported function.&nbsp; This function is responsible
for creating a module factory, and registering the module for one or more server
events.<br />
<br />
<em>
This function is implemented in <strong>main.cpp</strong>.<br />
</em>
</li>
<li>Implementation of the module class inheriting from the <strong>CHttpModule</strong>
base class. &nbsp;This class is provides the main functionality of your module.
<br />
<br />
<em>
This class is declared in <strong>mymodule.h</strong>, with method implementations
in <strong>mymodule.cpp</strong>.<br />
</em>
</li>
<li>Implementation of the module factory class implementing the <strong>IHttpModuleFactory</strong>
interface.&nbsp; The class is responsible for creating instances of your module.<br />
<br />
<em>
This class is declared and implemented in <strong>mymodulefactory.h</strong>.</em></li></ol>
<h2>
0. Prerequisites</h2>
<p class="MsoNormal" style="margin: 0in 0in 0pt">
<span style="font-family: Verdana"><span style="font-size: 9pt">In order to compile
the module, you will need to install the Windows Platform SDK that contains the
required IIS header files.&nbsp;
<br />
<br />
After installing the SDK</span></span><span style="font-size: 9pt; font-family: Verdana;
mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-ansi-language: EN-US;
mso-fareast-language: EN-US; mso-bidi-language: AR-SA">, you will need to register
the SDK with Visual Studio 2005.<span style="mso-spacerun: yes">&nbsp; </span>You
can do this via <b style="mso-bidi-font-weight: normal">Start &gt; Programs &gt; Microsoft
Windows SDK &gt; Visual Studio Registration &gt; Register Windows SDK Directories
with Visual Studio</b>.</span></p>
<h2>
1. Implement RegisterModule entrypoint</h2>
<p>
A native module must export the RegisterModule function.&nbsp; This function will
be invoked by the server when the module DLL is loaded, so that your DLL can register
for the required server events, and provide a mechanism for the server to create
instances of your module class.<br />
<br />
<span style="font-size: 10pt; font-family: Courier New">__stdcall
<br />
HRESULT RegisterModule( DWORD dwServerVersion, IHttpModuleRegistrationInfo
* pModuleInfo, IHttpServer * pHttpServer );<br />
</span>
<br />
<em>This function is implemented for you in the <strong>main.cpp</strong> source file.&nbsp;
</em>
<br />
<br />
It does the following:</p>
<ol>
<li><strong>Create module factory</strong>.<strong>&nbsp; </strong>This is an instance
of your CMyModuleFactory class that implements
the IHttpModuleFactory inteface:<br />
<br />
<span style="font-family: Courier New"><span style="font-size: 10pt"><span style="color: #009900">
// step 2: create module factory</span><br />
pFactory = new CMyHttpModuleFactory();</span></span><br />
</li>
<li><strong>Register module factory for desired server events</strong>.&nbsp; This registers
the module factory for one or more server events that occur during request processing.&nbsp;
The server will use the factory to create an instance of your module class for each
request, and call the appropriate event handler method on your module instance for
each of the requested events:<br />
<br />
<span style="color: #000000;"><span style="font-family: Courier New"><span style="font-size: 10pt">
<span style="color: #009900">
// step 3: register for server events
<br />
// TODO: register for more server events here
<br />
</span>hr = pModuleInfo-&gt;SetRequestNotifications( pFactory, </span></span><span
style="font-family: Courier New"><span style="font-size: 10pt"><span style="color: #009900">
/* module factory */
<br />
</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RQ_ACQUIRE_REQUEST_STATE,
<span style="color: #009900">/* server event mask */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 <span style="color: #009900">
/* server post event mask */</span> );<br />
<br />
<span style="font-size: 12pt; font-family: Times New Roman">
The server event mask is a bit mask of one or more request processing event names
declared in </span>
</span></span><span style="font-family: Courier New"><span style="font-size: 10pt">
<strong><span style="font-size: 12pt; font-family: Times New Roman">httpserv.h:</span><br />
<br />
</strong><span style="color: #009900">//
<br />
// Request deterministic notifications
<br />
//
<br />
<br />
// request is beginning </span>
<br />
#define RQ_BEGIN_REQUEST 0x00000001
<br />
<span style="color: #009900">// request is being authenticated
<br />
</span>#define RQ_AUTHENTICATE_REQUEST 0x00000002
<br />
<span style="color: #009900">// request is being authorized </span>
<br />
#define RQ_AUTHORIZE_REQUEST 0x00000004
<br />
<span style="color: #009900">// satisfy request from cache </span>
<br />
#define RQ_RESOLVE_REQUEST_CACHE 0x00000008
<br />
<span style="color: #009900">// map handler for request</span>
<br />
#define RQ_MAP_REQUEST_HANDLER 0x00000010
<br />
<span style="color: #009900">// acquire request state</span>
<br />
#define RQ_ACQUIRE_REQUEST_STATE 0x00000020
<br />
<span style="color: #009900">// pre-execute handler</span>
<br />
#define RQ_PRE_EXECUTE_REQUEST_HANDLER 0x00000040
<br />
<span style="color: #009900">// execute handler</span>
<br />
#define RQ_EXECUTE_REQUEST_HANDLER 0x00000080
<br />
<span style="color: #009900">// release request state</span>
<br />
#define RQ_RELEASE_REQUEST_STATE 0x00000100
<br />
<span style="color: #009900">// update cache</span>
<br />
#define RQ_UPDATE_REQUEST_CACHE 0x00000200
<br />
<span style="color: #009900">// log request</span>
<br />
#define RQ_LOG_REQUEST 0x00000400
<br />
<span style="color: #009900">// end request</span>
<br />
#define RQ_END_REQUEST 0x00000800
<br />
<br />
<span style="color: #009900">//
<br />
// Request non-deterministic notifications
<br />
//</span>
<br />
<br />
<span style="color: #009900">// custom notification</span>
<br />
#define RQ_CUSTOM_NOTIFICATION 0x10000000
<br />
<span style="color: #009900">// send response</span>
<br />
#define RQ_SEND_RESPONSE 0x20000000
<br />
<span style="color: #009900">// read entity</span>
<br />
#define RQ_READ_ENTITY 0x40000000
<br />
<span style="color: #009900">// map a url to a physical path</span>
<br />
#define RQ_MAP_PATH 0x80000000<br />
<br />
<span style="font-size: 12pt; font-family: Times New Roman">
The post event mask is a bit mask of the same events, allowing to subscribe
to the post events for each of the specified events.<br />
</span>
</span></span>
</span></li>
</ol>
<h2>
</h2>
<h2>
2. Implement module factory class</h2>
<p>
The server requires a module factory class in order to obtain instances of your
module.&nbsp; The factory class must implement the IHttpModuleFactory interface
declared in the httpserv.h Windows SDK header file.<br />
<br />
<em>This factory is implemented for you in the <strong>mymodulefactory.h</strong> header
file.<br />
<br />
</em>The <strong>GetHttpModule</strong> method of the factory class is called at the beginning of
each request in order to obtain an instance of your module.&nbsp; The typical implementation
simply returns a new instance of your module class:<br />
<br />
<span style="font-family: Courier New; font-size: 10pt;">class CMyHttpModuleFactory : public IHttpModuleFactory
<br />
{
<br />
public:
<br />
&nbsp; &nbsp; virtual HRESULT GetHttpModule( OUT CHttpModule **ppModule, IN IModuleAllocator
* )
<br />
&nbsp; &nbsp; {&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ...<br />
&nbsp; &nbsp; &nbsp; &nbsp; pModule = new CMyHttpModule();&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ...<br />
&nbsp; &nbsp; &nbsp; &nbsp; *ppModule = pModule;&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ...<br />
&nbsp; &nbsp; }&nbsp;<br />
<br />
&nbsp; &nbsp; virtual void Terminate() { }<br />
}</span></p>
<p>
The <strong>Terminate</strong> method of the factory class is called during the
shutdown of the worker process, before your module DLL is unloaded.&nbsp; It typically
releases any resources you may have initialized inside the <strong>RegisterModule</strong>
function.</p>
<h2>
3. Implement module class</h2>
<p>
The module class inherits from the <strong>CHttpModule</strong> base class, which
defines an event handler method for each of the server events discussed earlier.&nbsp;
When the server executes each event during the processing of a request, it will
invoke the associated event handler method on each of the module instances that
have registered for that event.&nbsp;<br />
<br />
<em>This class is declared in the <strong>mymodule.h</strong> header file, and its event
handler methods are implemented in the <strong>mymodule.cpp</strong> source file.</em><br />
<br />
In order to provide processing for each server event, the module class MUST override
the corresponding method.&nbsp; The signature of each event handler method is the
following:<br />
<br />
<span style="font-size: 10pt; font-family: Courier New">REQUEST_NOTIFICATION_STATUS
On&lt;EVENT NAME&gt;(
IN IHttpContext * pHttpContext,
IN OUT IHttpEventProvider * pProvider
);
<br />
</span>
<br />
Where &lt;EVENT NAME&gt; is one of the server events we listed earlier.&nbsp; For
example, the module in this project initially overrides only the <strong>OnAcquireRequestState</strong> method since we register only for the <span style="font-size: 10pt;
font-family: Courier New"><strong>RQ_ACQUIRE_REQUEST_STATE</strong></span> event:<br />
<br />
<span style="font-size: 10pt; font-family: Courier New">class CMyHttpModule : public
CHttpModule
<br />
{
<br />
public:
<br />
<br />
<span style="color: #009900">&nbsp; &nbsp; // Implementation of the AcquireRequestState
event handler method. </span>
<br />
&nbsp; &nbsp; REQUEST_NOTIFICATION_STATUS OnAcquireRequestState( IN IHttpContext
* pHttpContext, IN OUT IHttpEventProvider * pProvider );
<br />
<br />
<span style="color: #009900">&nbsp; &nbsp; // TODO: override additional event handler
methods below. </span>
<br />
};</span><br />
<br />
The implementation of this method provides the module functionality desired for
processing the request in the appropriate pipeline stage.&nbsp; This project provides
a dummy implementation in the <strong>mymodule.cpp</strong> source file.</p>
<h2>
4. Deploy the module to the server</h2>
<p>
After you have compiled your module, you need to deploy it on the server.&nbsp;
You can do that by compiling the module, and then copying <strong>IIS7NativeModule.dll</strong>
(and the <strong>IIS7NativeModule.pdb</strong> debugging symbols file if desired)
to any location on the machine running IIS7.<br />
<br />
You can install your module on the server by running the following command from an Elevated command line prompt:<br />
<br />
<strong>%systemroot%\system32\inetsrv\APPCMD.EXE install module /name:MyModule /image:&lt;FULL
PATH TO DLL&gt;</strong><br />
<br />
Where <strong>&lt;FULL_PATH_TO_DLL&gt;</strong> is the full path to the module DLL
file.<br />
<br />
You can also install your module using the IIS7 Administration Tool. After installation,
your module will be loaded and enabled in all application pools on the server.&nbsp;
To learn ore about installing modules, and selecting modules to execute on your
server and for specific applications, please visit <a href="http://www.iis.net">www.iis.net</a>.</p>
<h2>
Congratulations!</h2>
<p>
You have succesfully built and deployed your own IIS7 module.&nbsp; To learn more
about building IIS7 modules, and to download sample modules, be sure to visit <a href="http://www.iis.net">www.iis.net</a>.</p>
</body>
</html>

View File

@ -1,863 +0,0 @@
# cURL/libcurl CMake script
# by Tetetest and Sukender (Benoit Neil)
# TODO:
# The output .so file lacks the soname number which we currently have within the lib/Makefile.am file
# Add full (4 or 5 libs) SSL support
# Add INSTALL target (EXTRA_DIST variables in Makefile.am may be moved to Makefile.inc so that CMake/CPack is aware of what's to include).
# Add CTests(?)
# Check on all possible platforms
# Test with as many configurations possible (With or without any option)
# Create scripts that help keeping the CMake build system up to date (to reduce maintenance). According to Tetetest:
# - lists of headers that 'configure' checks for;
# - curl-specific tests (the ones that are in m4/curl-*.m4 files);
# - (most obvious thing:) curl version numbers.
# Add documentation subproject
#
# To check:
# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
include(Utilities)
project( CURL C )
file (READ ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS)
string (REGEX MATCH "LIBCURL_VERSION_MAJOR[ \t]+([0-9]+)"
LIBCURL_VERSION_MJ ${CURL_VERSION_H_CONTENTS})
string (REGEX MATCH "([0-9]+)"
LIBCURL_VERSION_MJ ${LIBCURL_VERSION_MJ})
string (REGEX MATCH
"LIBCURL_VERSION_MINOR[ \t]+([0-9]+)"
LIBCURL_VERSION_MI ${CURL_VERSION_H_CONTENTS})
string (REGEX MATCH "([0-9]+)" LIBCURL_VERSION_MI ${LIBCURL_VERSION_MI})
string (REGEX MATCH
"LIBCURL_VERSION_PATCH[ \t]+([0-9]+)"
LIBCURL_VERSION_PT ${CURL_VERSION_H_CONTENTS})
string (REGEX MATCH "([0-9]+)" LIBCURL_VERSION_PT ${LIBCURL_VERSION_PT})
set (CURL_MAJOR_VERSION ${LIBCURL_VERSION_MJ})
set (CURL_MINOR_VERSION ${LIBCURL_VERSION_MI})
set (CURL_PATCH_VERSION ${LIBCURL_VERSION_PT})
include_regular_expression("^.*$") # Sukender: Is it necessary?
# Setup package meta-data
# SET(PACKAGE "curl")
set(CURL_VERSION ${CURL_MAJOR_VERSION}.${CURL_MINOR_VERSION}.${CURL_PATCH_VERSION})
message(STATUS "curl version=[${CURL_VERSION}]")
# SET(PACKAGE_TARNAME "curl")
# SET(PACKAGE_NAME "curl")
# SET(PACKAGE_VERSION "-")
# SET(PACKAGE_STRING "curl-")
# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/")
set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
set(OS "\"${CMAKE_SYSTEM_NAME}\"")
include_directories(${PROJECT_BINARY_DIR}/include/curl)
include_directories( ${CURL_SOURCE_DIR}/include )
if(WIN32)
set(NATIVE_WINDOWS ON)
endif()
option(BUILD_CURL_EXE "Set to ON to build cURL executable." ON)
option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
option(CURL_USE_ARES "Set to ON to enable c-ares support" OFF)
# initialize CURL_LIBS
set(CURL_LIBS "")
if(CURL_USE_ARES)
set(USE_ARES ${CURL_USE_ARES})
find_package(CARES REQUIRED)
list(APPEND CURL_LIBS ${CARES_LIBRARY} )
set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
endif()
option(BUILD_DASHBOARD_REPORTS "Set to ON to activate reporting of cURL builds here http://www.cdash.org/CDashPublic/index.php?project=CURL" OFF)
if(BUILD_DASHBOARD_REPORTS)
#INCLUDE(Dart)
include(CTest)
endif(BUILD_DASHBOARD_REPORTS)
if(MSVC)
option(BUILD_RELEASE_DEBUG_DIRS "Set OFF to build each configuration to a separate directory" OFF)
mark_as_advanced(BUILD_RELEASE_DEBUG_DIRS)
endif()
option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
mark_as_advanced(CURL_HIDDEN_SYMBOLS)
# IF(WIN32)
# OPTION(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON)
# MARK_AS_ADVANCED(CURL_WINDOWS_SSPI)
# ENDIF()
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
mark_as_advanced(HTTP_ONLY)
option(CURL_DISABLE_FTP "disables FTP" OFF)
mark_as_advanced(CURL_DISABLE_FTP)
option(CURL_DISABLE_LDAP "disables LDAP" OFF)
mark_as_advanced(CURL_DISABLE_LDAP)
option(CURL_DISABLE_TELNET "disables Telnet" OFF)
mark_as_advanced(CURL_DISABLE_TELNET)
option(CURL_DISABLE_DICT "disables DICT" OFF)
mark_as_advanced(CURL_DISABLE_DICT)
option(CURL_DISABLE_FILE "disables FILE" OFF)
mark_as_advanced(CURL_DISABLE_FILE)
option(CURL_DISABLE_TFTP "disables TFTP" OFF)
mark_as_advanced(CURL_DISABLE_TFTP)
option(CURL_DISABLE_HTTP "disables HTTP" OFF)
mark_as_advanced(CURL_DISABLE_HTTP)
option(CURL_DISABLE_LDAPS "to disable LDAPS" OFF)
mark_as_advanced(CURL_DISABLE_LDAPS)
if(WIN32)
set(CURL_DEFAULT_DISABLE_LDAP OFF)
# some windows compilers do not have wldap32
if( NOT HAVE_WLDAP32)
set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
message(STATUS "wldap32 not found CURL_DISABLE_LDAP set ON")
option(CURL_LDAP_WIN "Use Windows LDAP implementation" OFF)
else()
option(CURL_LDAP_WIN "Use Windows LDAP implementation" ON)
endif()
mark_as_advanced(CURL_LDAP_WIN)
endif()
if(HTTP_ONLY)
set(CURL_DISABLE_FTP ON)
set(CURL_DISABLE_LDAP ON)
set(CURL_DISABLE_TELNET ON)
set(CURL_DISABLE_DICT ON)
set(CURL_DISABLE_FILE ON)
set(CURL_DISABLE_TFTP ON)
endif()
option(CURL_DISABLE_COOKIES "to disable cookies support" OFF)
mark_as_advanced(CURL_DISABLE_COOKIES)
option(CURL_DISABLE_CRYPTO_AUTH "to disable cryptographic authentication" OFF)
mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
option(CURL_DISABLE_VERBOSE_STRINGS "to disable verbose strings" OFF)
mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
option(DISABLED_THREADSAFE "Set to explicitly specify we don't want to use thread-safe functions" OFF)
mark_as_advanced(DISABLED_THREADSAFE)
option(ENABLE_IPV6 "Define if you want to enable IPv6 support" OFF)
mark_as_advanced(ENABLE_IPV6)
if(WIN32)
list_spaces_append_once(CMAKE_C_STANDARD_LIBRARIES wsock32.lib ws2_32.lib) # bufferoverflowu.lib
if(CURL_DISABLE_LDAP)
# Remove wldap32.lib from space-separated list
string(REPLACE " " ";" _LIST ${CMAKE_C_STANDARD_LIBRARIES})
list(REMOVE_ITEM _LIST "wldap32.lib")
to_list_spaces(_LIST CMAKE_C_STANDARD_LIBRARIES)
else()
# Append wldap32.lib
list_spaces_append_once(CMAKE_C_STANDARD_LIBRARIES wldap32.lib)
endif()
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}" CACHE STRING "" FORCE)
endif()
# We need ansi c-flags, especially on HP
set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
set(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
# Disable warnings on Borland to avoid changing 3rd party code.
if(BORLAND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
endif(BORLAND)
# If we are on AIX, do the _ALL_SOURCE magic
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
set(_ALL_SOURCE 1)
endif(${CMAKE_SYSTEM_NAME} MATCHES AIX)
# Include all the necessary files for macros
include (CheckFunctionExists)
include (CheckIncludeFile)
include (CheckIncludeFiles)
include (CheckLibraryExists)
include (CheckSymbolExists)
include (CheckTypeSize)
# On windows preload settings
if(WIN32)
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
endif(WIN32)
# This macro checks if the symbol exists in the library and if it
# does, it prepends library to the list.
macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
${VARIABLE})
if(${VARIABLE})
set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
endif(${VARIABLE})
endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
# Check for all needed libraries
check_library_exists_concat("dl" dlopen HAVE_LIBDL)
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)
# Yellowtab Zeta needs different libraries than BeOS 5.
if(BEOS)
set(NOT_NEED_LIBNSL 1)
check_library_exists_concat("bind" gethostbyname HAVE_LIBBIND)
check_library_exists_concat("bnetapi" closesocket HAVE_LIBBNETAPI)
endif(BEOS)
if(NOT NOT_NEED_LIBNSL)
check_library_exists_concat("nsl" gethostbyname HAVE_LIBNSL)
endif(NOT NOT_NEED_LIBNSL)
check_library_exists_concat("ws2_32" getch HAVE_LIBWS2_32)
check_library_exists_concat("winmm" getch HAVE_LIBWINMM)
check_library_exists("wldap32" cldap_open "" HAVE_WLDAP32)
# IF(NOT CURL_SPECIAL_LIBZ)
# CHECK_LIBRARY_EXISTS_CONCAT("z" inflateEnd HAVE_LIBZ)
# ENDIF(NOT CURL_SPECIAL_LIBZ)
# Check for idn
check_library_exists_concat("idn" idna_to_ascii_lz HAVE_LIBIDN)
# Check for LDAP
check_library_exists_concat("ldap" ldap_init HAVE_LIBLDAP)
# if(NOT HAVE_LIBLDAP)
# SET(CURL_DISABLE_LDAP ON)
# endif(NOT HAVE_LIBLDAP)
# Check for symbol dlopen (same as HAVE_LIBDL)
check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
# For other tests to use the same libraries
set(CMAKE_REQUIRED_LIBRARIES ${CURL_LIBS})
option(CURL_ZLIB "Set to ON to enable building cURL with zlib support." ON)
set(HAVE_LIBZ OFF)
set(HAVE_ZLIB_H OFF)
set(HAVE_ZLIB OFF)
if(CURL_ZLIB) # AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE
find_package(ZLIB QUIET)
if(ZLIB_FOUND)
set(HAVE_ZLIB_H ON)
set(HAVE_ZLIB ON)
set(HAVE_LIBZ ON)
endif()
endif()
option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
mark_as_advanced(CMAKE_USE_OPENSSL)
if(CMAKE_USE_OPENSSL)
if(WIN32)
find_package(OpenSSL)
if(OPENSSL_FOUND)
set(USE_SSLEAY TRUE)
set(USE_OPENSSL TRUE)
list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES} )
else()
set(CMAKE_USE_OPENSSL FALSE)
message(STATUS "OpenSSL NOT Found, disabling CMAKE_USE_OPENSSL")
endif()
else(WIN32)
check_library_exists_concat("crypto" CRYPTO_lock HAVE_LIBCRYPTO)
check_library_exists_concat("ssl" SSL_connect HAVE_LIBSSL)
endif(WIN32)
endif(CMAKE_USE_OPENSSL)
# If we have features.h, then do the _BSD_SOURCE magic
check_include_file("features.h" HAVE_FEATURES_H)
# Check if header file exists and add it to the list.
macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
if(${VARIABLE})
set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
endif(${VARIABLE})
endmacro(CHECK_INCLUDE_FILE_CONCAT)
# Check for header files
if(NOT UNIX)
check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H)
check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H)
endif(NOT UNIX)
check_include_file_concat("stdio.h" HAVE_STDIO_H)
if(NOT UNIX)
check_include_file_concat("windows.h" HAVE_WINDOWS_H)
check_include_file_concat("winsock.h" HAVE_WINSOCK_H)
endif(NOT UNIX)
check_include_file_concat("inttypes.h" HAVE_INTTYPES_H)
check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H)
check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H)
check_include_file_concat("sys/param.h" HAVE_SYS_PARAM_H)
check_include_file_concat("sys/poll.h" HAVE_SYS_POLL_H)
check_include_file_concat("sys/resource.h" HAVE_SYS_RESOURCE_H)
check_include_file_concat("sys/select.h" HAVE_SYS_SELECT_H)
check_include_file_concat("sys/socket.h" HAVE_SYS_SOCKET_H)
check_include_file_concat("sys/sockio.h" HAVE_SYS_SOCKIO_H)
check_include_file_concat("sys/stat.h" HAVE_SYS_STAT_H)
check_include_file_concat("sys/time.h" HAVE_SYS_TIME_H)
check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H)
check_include_file_concat("sys/uio.h" HAVE_SYS_UIO_H)
check_include_file_concat("sys/un.h" HAVE_SYS_UN_H)
check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H)
check_include_file_concat("alloca.h" HAVE_ALLOCA_H)
check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H)
check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H)
check_include_file_concat("assert.h" HAVE_ASSERT_H)
check_include_file_concat("crypto.h" HAVE_CRYPTO_H)
check_include_file_concat("des.h" HAVE_DES_H)
check_include_file_concat("err.h" HAVE_ERR_H)
check_include_file_concat("errno.h" HAVE_ERRNO_H)
check_include_file_concat("fcntl.h" HAVE_FCNTL_H)
check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
check_include_file_concat("idn-free.h" HAVE_IDN_FREE_H)
check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H)
check_include_file_concat("io.h" HAVE_IO_H)
check_include_file_concat("krb.h" HAVE_KRB_H)
check_include_file_concat("libgen.h" HAVE_LIBGEN_H)
check_include_file_concat("libssh2.h" HAVE_LIBSSH2_H)
check_include_file_concat("limits.h" HAVE_LIMITS_H)
check_include_file_concat("locale.h" HAVE_LOCALE_H)
check_include_file_concat("net/if.h" HAVE_NET_IF_H)
check_include_file_concat("netdb.h" HAVE_NETDB_H)
check_include_file_concat("netinet/in.h" HAVE_NETINET_IN_H)
check_include_file_concat("netinet/tcp.h" HAVE_NETINET_TCP_H)
check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
check_include_file_concat("openssl/err.h" HAVE_OPENSSL_ERR_H)
check_include_file_concat("openssl/pem.h" HAVE_OPENSSL_PEM_H)
check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
check_include_file_concat("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
check_include_file_concat("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
check_include_file_concat("openssl/x509.h" HAVE_OPENSSL_X509_H)
check_include_file_concat("pem.h" HAVE_PEM_H)
check_include_file_concat("poll.h" HAVE_POLL_H)
check_include_file_concat("pwd.h" HAVE_PWD_H)
check_include_file_concat("rsa.h" HAVE_RSA_H)
check_include_file_concat("setjmp.h" HAVE_SETJMP_H)
check_include_file_concat("sgtty.h" HAVE_SGTTY_H)
check_include_file_concat("signal.h" HAVE_SIGNAL_H)
check_include_file_concat("ssl.h" HAVE_SSL_H)
check_include_file_concat("stdbool.h" HAVE_STDBOOL_H)
check_include_file_concat("stdint.h" HAVE_STDINT_H)
check_include_file_concat("stdio.h" HAVE_STDIO_H)
check_include_file_concat("stdlib.h" HAVE_STDLIB_H)
check_include_file_concat("string.h" HAVE_STRING_H)
check_include_file_concat("strings.h" HAVE_STRINGS_H)
check_include_file_concat("stropts.h" HAVE_STROPTS_H)
check_include_file_concat("termio.h" HAVE_TERMIO_H)
check_include_file_concat("termios.h" HAVE_TERMIOS_H)
check_include_file_concat("time.h" HAVE_TIME_H)
check_include_file_concat("tld.h" HAVE_TLD_H)
check_include_file_concat("unistd.h" HAVE_UNISTD_H)
check_include_file_concat("utime.h" HAVE_UTIME_H)
check_include_file_concat("x509.h" HAVE_X509_H)
check_include_file_concat("process.h" HAVE_PROCESS_H)
check_include_file_concat("stddef.h" HAVE_STDDEF_H)
check_include_file_concat("dlfcn.h" HAVE_DLFCN_H)
check_include_file_concat("malloc.h" HAVE_MALLOC_H)
check_include_file_concat("memory.h" HAVE_MEMORY_H)
check_include_file_concat("ldap.h" HAVE_LDAP_H)
check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H)
check_include_file_concat("stdint.h" HAVE_STDINT_H)
check_include_file_concat("sockio.h" HAVE_SOCKIO_H)
check_include_file_concat("sys/utsname.h" HAVE_SYS_UTSNAME_H)
check_include_file_concat("idna.h" HAVE_IDNA_H)
if(CMAKE_USE_OPENSSL)
check_include_file_concat("openssl/rand.h" HAVE_OPENSSL_RAND_H)
endif(CMAKE_USE_OPENSSL)
if(NOT HAVE_LDAP_H)
message(STATUS "LDAP_H not found CURL_DISABLE_LDAP set ON")
set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
endif()
check_type_size(size_t SIZEOF_SIZE_T)
check_type_size(ssize_t SIZEOF_SSIZE_T)
check_type_size("long long" SIZEOF_LONG_LONG)
check_type_size("long" SIZEOF_LONG)
check_type_size("short" SIZEOF_SHORT)
check_type_size("int" SIZEOF_INT)
check_type_size("__int64" SIZEOF___INT64)
check_type_size("long double" SIZEOF_LONG_DOUBLE)
check_type_size("time_t" SIZEOF_TIME_T)
if(NOT HAVE_SIZEOF_SSIZE_T)
if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
set(ssize_t long)
endif(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
set(ssize_t __int64)
endif(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
endif(NOT HAVE_SIZEOF_SSIZE_T)
# Different sizeofs, etc.
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
set(CURL_SIZEOF_LONG ${SIZEOF_LONG})
if(SIZEOF_LONG EQUAL 8)
set(CURL_TYPEOF_CURL_OFF_T long)
set(CURL_SIZEOF_CURL_OFF_T 8)
set(CURL_FORMAT_CURL_OFF_T "ld")
set(CURL_FORMAT_CURL_OFF_TU "lu")
set(CURL_FORMAT_OFF_T "%ld")
set(CURL_SUFFIX_CURL_OFF_T L)
set(CURL_SUFFIX_CURL_OFF_TU LU)
endif(SIZEOF_LONG EQUAL 8)
if(SIZEOF_LONG_LONG EQUAL 8)
set(CURL_TYPEOF_CURL_OFF_T "long long")
set(CURL_SIZEOF_CURL_OFF_T 8)
set(CURL_FORMAT_CURL_OFF_T "lld")
set(CURL_FORMAT_CURL_OFF_TU "llu")
set(CURL_FORMAT_OFF_T "%lld")
set(CURL_SUFFIX_CURL_OFF_T LL)
set(CURL_SUFFIX_CURL_OFF_TU LLU)
endif(SIZEOF_LONG_LONG EQUAL 8)
if(NOT CURL_TYPEOF_CURL_OFF_T)
set(CURL_TYPEOF_CURL_OFF_T ${ssize_t})
set(CURL_SIZEOF_CURL_OFF_T ${SIZEOF_SSIZE_T})
# TODO: need adjustment here.
set(CURL_FORMAT_CURL_OFF_T "ld")
set(CURL_FORMAT_CURL_OFF_TU "lu")
set(CURL_FORMAT_OFF_T "%ld")
set(CURL_SUFFIX_CURL_OFF_T L)
set(CURL_SUFFIX_CURL_OFF_TU LU)
endif(NOT CURL_TYPEOF_CURL_OFF_T)
if(HAVE_SIZEOF_LONG_LONG)
set(HAVE_LONGLONG 1)
set(HAVE_LL 1)
endif(HAVE_SIZEOF_LONG_LONG)
find_file(RANDOM_FILE urandom /dev)
mark_as_advanced(RANDOM_FILE)
# Check for some functions that are used
check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME)
check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET)
check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL)
check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT)
check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP)
check_symbol_exists(strstr "${CURL_INCLUDES}" HAVE_STRSTR)
check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R)
check_symbol_exists(strftime "${CURL_INCLUDES}" HAVE_STRFTIME)
check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
check_symbol_exists(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP)
check_symbol_exists(stricmp "${CURL_INCLUDES}" HAVE_STRICMP)
check_symbol_exists(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI)
check_symbol_exists(strncmpi "${CURL_INCLUDES}" HAVE_STRNCMPI)
check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM)
if(NOT HAVE_STRNCMPI)
set(HAVE_STRCMPI)
endif(NOT HAVE_STRNCMPI)
check_symbol_exists(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR)
check_symbol_exists(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R)
check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
check_symbol_exists(inet_addr "${CURL_INCLUDES}" HAVE_INET_ADDR)
check_symbol_exists(inet_ntoa "${CURL_INCLUDES}" HAVE_INET_NTOA)
check_symbol_exists(inet_ntoa_r "${CURL_INCLUDES}" HAVE_INET_NTOA_R)
check_symbol_exists(tcsetattr "${CURL_INCLUDES}" HAVE_TCSETATTR)
check_symbol_exists(tcgetattr "${CURL_INCLUDES}" HAVE_TCGETATTR)
check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR)
check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
check_symbol_exists(setvbuf "${CURL_INCLUDES}" HAVE_SETVBUF)
check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP)
check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R)
check_symbol_exists(strlcat "${CURL_INCLUDES}" HAVE_STRLCAT)
check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME)
if(CMAKE_USE_OPENSSL)
check_symbol_exists(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
check_symbol_exists(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
check_symbol_exists(CRYPTO_cleanup_all_ex_data "${CURL_INCLUDES}"
HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)
if(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
set(USE_OPENSSL 1)
set(USE_SSLEAY 1)
endif(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
endif(CMAKE_USE_OPENSSL)
check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
check_symbol_exists(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
check_symbol_exists(gethostbyname "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME)
check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)
check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
check_symbol_exists(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
set(HAVE_SIGNAL 1)
endif(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL)
check_symbol_exists(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64)
check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R)
check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR)
check_symbol_exists(fork "${CURL_INCLUDES}" HAVE_FORK)
check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE)
check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
check_symbol_exists(idn_free "${CURL_INCLUDES}" HAVE_IDN_FREE)
check_symbol_exists(idna_strerror "${CURL_INCLUDES}" HAVE_IDNA_STRERROR)
check_symbol_exists(tld_strerror "${CURL_INCLUDES}" HAVE_TLD_STRERROR)
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL)
check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL)
check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
# symbol exists in win32, but function does not.
check_function_exists(inet_pton HAVE_INET_PTON)
# sigaction and sigsetjmp are special. Use special mechanism for
# detecting those, but only if previous attempt failed.
if(HAVE_SIGNAL_H)
check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION)
endif(HAVE_SIGNAL_H)
if(NOT HAVE_SIGSETJMP)
if(HAVE_SETJMP_H)
check_symbol_exists(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP)
if(HAVE_MACRO_SIGSETJMP)
set(HAVE_SIGSETJMP 1)
endif(HAVE_MACRO_SIGSETJMP)
endif(HAVE_SETJMP_H)
endif(NOT HAVE_SIGSETJMP)
# If there is no stricmp(), do not allow LDAP to parse URLs
if(NOT HAVE_STRICMP)
set(HAVE_LDAP_URL_PARSE 1)
endif(NOT HAVE_STRICMP)
# For other curl specific tests, use this macro.
macro(CURL_INTERNAL_TEST CURL_TEST)
if("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
set(MACRO_CHECK_FUNCTION_DEFINITIONS
"-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
if(CMAKE_REQUIRED_LIBRARIES)
set(CURL_TEST_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
endif(CMAKE_REQUIRED_LIBRARIES)
message(STATUS "Performing Curl Test ${CURL_TEST}")
try_compile(${CURL_TEST}
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
"${CURL_TEST_ADD_LIBRARIES}"
OUTPUT_VARIABLE OUTPUT)
if(${CURL_TEST})
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Performing Curl Test ${CURL_TEST} passed with the following output:\n"
"${OUTPUT}\n")
else(${CURL_TEST})
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
"${OUTPUT}\n")
endif(${CURL_TEST})
endif("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
endmacro(CURL_INTERNAL_TEST)
macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
if("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
set(MACRO_CHECK_FUNCTION_DEFINITIONS
"-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
if(CMAKE_REQUIRED_LIBRARIES)
set(CURL_TEST_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
endif(CMAKE_REQUIRED_LIBRARIES)
message(STATUS "Performing Curl Test ${CURL_TEST}")
try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
"${CURL_TEST_ADD_LIBRARIES}"
OUTPUT_VARIABLE OUTPUT)
if(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
"${OUTPUT}")
if(${CURL_TEST}_COMPILE)
file(APPEND
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
"There was a problem running this test\n")
endif(${CURL_TEST}_COMPILE)
file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
"\n\n")
endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
endif("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
endmacro(CURL_INTERNAL_TEST_RUN)
# Do curl specific tests
foreach(CURL_TEST
HAVE_FCNTL_O_NONBLOCK
HAVE_IOCTLSOCKET
HAVE_IOCTLSOCKET_CAMEL
HAVE_IOCTLSOCKET_CAMEL_FIONBIO
HAVE_IOCTLSOCKET_FIONBIO
HAVE_IOCTL_FIONBIO
HAVE_IOCTL_SIOCGIFADDR
HAVE_SETSOCKOPT_SO_NONBLOCK
HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
TIME_WITH_SYS_TIME
HAVE_O_NONBLOCK
HAVE_GETHOSTBYADDR_R_5
HAVE_GETHOSTBYADDR_R_7
HAVE_GETHOSTBYADDR_R_8
HAVE_GETHOSTBYADDR_R_5_REENTRANT
HAVE_GETHOSTBYADDR_R_7_REENTRANT
HAVE_GETHOSTBYADDR_R_8_REENTRANT
HAVE_GETHOSTBYNAME_R_3
HAVE_GETHOSTBYNAME_R_5
HAVE_GETHOSTBYNAME_R_6
HAVE_GETHOSTBYNAME_R_3_REENTRANT
HAVE_GETHOSTBYNAME_R_5_REENTRANT
HAVE_GETHOSTBYNAME_R_6_REENTRANT
HAVE_SOCKLEN_T
HAVE_IN_ADDR_T
HAVE_BOOL_T
STDC_HEADERS
RETSIGTYPE_TEST
HAVE_INET_NTOA_R_DECL
HAVE_INET_NTOA_R_DECL_REENTRANT
HAVE_GETADDRINFO
HAVE_FILE_OFFSET_BITS
)
curl_internal_test(${CURL_TEST})
endforeach(CURL_TEST)
if(HAVE_FILE_OFFSET_BITS)
set(_FILE_OFFSET_BITS 64)
endif(HAVE_FILE_OFFSET_BITS)
foreach(CURL_TEST
HAVE_GLIBC_STRERROR_R
HAVE_POSIX_STRERROR_R
)
curl_internal_test_run(${CURL_TEST})
endforeach(CURL_TEST)
# Check for reentrant
foreach(CURL_TEST
HAVE_GETHOSTBYADDR_R_5
HAVE_GETHOSTBYADDR_R_7
HAVE_GETHOSTBYADDR_R_8
HAVE_GETHOSTBYNAME_R_3
HAVE_GETHOSTBYNAME_R_5
HAVE_GETHOSTBYNAME_R_6
HAVE_INET_NTOA_R_DECL_REENTRANT)
if(NOT ${CURL_TEST})
if(${CURL_TEST}_REENTRANT)
set(NEED_REENTRANT 1)
endif(${CURL_TEST}_REENTRANT)
endif(NOT ${CURL_TEST})
endforeach(CURL_TEST)
if(NEED_REENTRANT)
foreach(CURL_TEST
HAVE_GETHOSTBYADDR_R_5
HAVE_GETHOSTBYADDR_R_7
HAVE_GETHOSTBYADDR_R_8
HAVE_GETHOSTBYNAME_R_3
HAVE_GETHOSTBYNAME_R_5
HAVE_GETHOSTBYNAME_R_6)
set(${CURL_TEST} 0)
if(${CURL_TEST}_REENTRANT)
set(${CURL_TEST} 1)
endif(${CURL_TEST}_REENTRANT)
endforeach(CURL_TEST)
endif(NEED_REENTRANT)
if(HAVE_INET_NTOA_R_DECL_REENTRANT)
set(HAVE_INET_NTOA_R_DECL 1)
set(NEED_REENTRANT 1)
endif(HAVE_INET_NTOA_R_DECL_REENTRANT)
# Some other minor tests
if(NOT HAVE_IN_ADDR_T)
set(in_addr_t "unsigned long")
endif(NOT HAVE_IN_ADDR_T)
# Fix libz / zlib.h
if(NOT CURL_SPECIAL_LIBZ)
if(NOT HAVE_LIBZ)
set(HAVE_ZLIB_H 0)
endif(NOT HAVE_LIBZ)
if(NOT HAVE_ZLIB_H)
set(HAVE_LIBZ 0)
endif(NOT HAVE_ZLIB_H)
endif(NOT CURL_SPECIAL_LIBZ)
if(_FILE_OFFSET_BITS)
set(_FILE_OFFSET_BITS 64)
endif(_FILE_OFFSET_BITS)
set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/curl/curl.h")
check_type_size("curl_off_t" SIZEOF_CURL_OFF_T)
set(CMAKE_EXTRA_INCLUDE_FILES)
set(CMAKE_REQUIRED_FLAGS)
# Check for nonblocking
set(HAVE_DISABLED_NONBLOCKING 1)
if(HAVE_FIONBIO OR
HAVE_IOCTLSOCKET OR
HAVE_IOCTLSOCKET_CASE OR
HAVE_O_NONBLOCK)
set(HAVE_DISABLED_NONBLOCKING)
endif(HAVE_FIONBIO OR
HAVE_IOCTLSOCKET OR
HAVE_IOCTLSOCKET_CASE OR
HAVE_O_NONBLOCK)
if(RETSIGTYPE_TEST)
set(RETSIGTYPE void)
else(RETSIGTYPE_TEST)
set(RETSIGTYPE int)
endif(RETSIGTYPE_TEST)
if(CMAKE_COMPILER_IS_GNUCC AND APPLE)
include(CheckCCompilerFlag)
check_c_compiler_flag(-Wno-long-double HAVE_C_FLAG_Wno_long_double)
if(HAVE_C_FLAG_Wno_long_double)
# The Mac version of GCC warns about use of long double. Disable it.
get_source_file_property(MPRINTF_COMPILE_FLAGS mprintf.c COMPILE_FLAGS)
if(MPRINTF_COMPILE_FLAGS)
set(MPRINTF_COMPILE_FLAGS "${MPRINTF_COMPILE_FLAGS} -Wno-long-double")
else(MPRINTF_COMPILE_FLAGS)
set(MPRINTF_COMPILE_FLAGS "-Wno-long-double")
endif(MPRINTF_COMPILE_FLAGS)
set_source_files_properties(mprintf.c PROPERTIES
COMPILE_FLAGS ${MPRINTF_COMPILE_FLAGS})
endif(HAVE_C_FLAG_Wno_long_double)
endif(CMAKE_COMPILER_IS_GNUCC AND APPLE)
if(HAVE_SOCKLEN_T)
set(CURL_TYPEOF_CURL_SOCKLEN_T "socklen_t")
if(WIN32)
set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h;ws2tcpip.h")
elseif(HAVE_SYS_SOCKET_H)
set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
endif()
check_type_size("socklen_t" CURL_SIZEOF_CURL_SOCKLEN_T)
set(CMAKE_EXTRA_INCLUDE_FILES)
if(NOT HAVE_CURL_SIZEOF_CURL_SOCKLEN_T)
message(FATAL_ERROR
"Check for sizeof socklen_t failed, see CMakeFiles/CMakerror.log")
endif()
else()
set(CURL_TYPEOF_CURL_SOCKLEN_T int)
set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
endif()
include(CMake/OtherTests.cmake)
add_definitions(-DHAVE_CONFIG_H)
# For windows, do not allow the compiler to use default target (Vista).
if(WIN32)
add_definitions(-D_WIN32_WINNT=0x0501)
endif(WIN32)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
endif(MSVC)
# Sets up the dependencies (zlib, OpenSSL, etc.) of a cURL subproject according to options.
# TODO This is far to be complete!
function(SETUP_CURL_DEPENDENCIES TARGET_NAME)
if(CURL_ZLIB AND ZLIB_FOUND)
include_directories(${ZLIB_INCLUDE_DIR})
endif()
if(CURL_ZLIB AND ZLIB_FOUND)
target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES})
#ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
endif()
if(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
include_directories(${OPENSSL_INCLUDE_DIR})
endif()
if(CMAKE_USE_OPENSSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
target_link_libraries(${TARGET_NAME} ${OPENSSL_LIBRARIES})
#ADD_DEFINITIONS( -DUSE_SSLEAY )
endif()
endfunction()
# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
string(REPLACE "$(top_srcdir)" "\${CURL_SOURCE_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
string(REPLACE "$(top_builddir)" "\${CURL_BINARY_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
string(REGEX REPLACE "\\\\\n" "§!§" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "SET(\\1 \\2)" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
string(REPLACE "§!§" "\n" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
string(REGEX REPLACE "\\$\\(([a-zA-Z_][a-zA-Z0-9_]*)\\)" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace $() with ${}
string(REGEX REPLACE "@([a-zA-Z_][a-zA-Z0-9_]*)@" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace @@ with ${}, even if that may not be read by CMake scripts.
file(WRITE ${OUTPUT_FILE} ${MAKEFILE_INC_TEXT})
endfunction()
add_subdirectory(lib)
if(BUILD_CURL_EXE)
add_subdirectory(src)
endif()
if(BUILD_CURL_TESTS)
add_subdirectory(tests)
endif()
# This needs to be run very last so other parts of the scripts can take advantage of this.
if(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
endif()
# Installation.
# First, install generated curlbuild.h
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/include/curl/curlbuild.h"
DESTINATION include/curl )
# Next, install other headers excluding curlbuild.h
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
DESTINATION include
FILES_MATCHING PATTERN "*.h"
PATTERN "curlbuild.h" EXCLUDE)

View File

@ -1,57 +0,0 @@
###########################################################################
### You Will need to modify the following variables for your system
###########################################################################
###########################################################################
# Path to Apache httpd installation
BASE = %APACHE%
# Paths to required libraries
PCRE = %PCRE%
CURL = %CURL%
# Linking libraries
LIBS = $(BASE)\lib\libapr-1.lib \
$(BASE)\lib\libaprutil-1.lib \
$(PCRE)\pcre.lib \
$(CURL)\libcurl_imp.lib \
wsock32.lib
###########################################################################
###########################################################################
CC = cL
MT = mt
DEFS = /nologo /O2 /W3 -DWIN32 -DWINNT -Dinline=APR_INLINE -D_CONSOLE -D$(VERSION)
EXE = mlogc.exe
INCLUDES = -I. -I..\apache2 \
-I$(PCRE)\include -I$(PCRE) \
-I$(CURL)\include -I$(CURL) \
-I$(BASE)\include
CFLAGS= -MT $(INCLUDES) $(DEFS)
LDFLAGS =
OBJS = mlogc.obj
all: $(EXE)
.c.obj:
$(CC) $(CFLAGS) -c $< -Fo$@
.cpp.obj:
$(CC) $(CFLAGS) -c $< -Fo$@
$(EXE): $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) /link /NODEFAULTLIB:MSVCRT.lib /subsystem:console
install: $(EXE)
copy $(EXE) $(BASE)\bin
clean:
del $(OBJS) $(EXE) *.dll *.lib *.pdb *.idb *.ilk *.exp *.res *.rc *.bin *.manifest

View File

@ -1,224 +0,0 @@
@call :GetWindowsSdkDir
@call :GetVSInstallDir
@call :GetVCInstallDir
@call :GetFSharpInstallDir
@if "%1"=="32bit" (
@call :GetFrameworkDir32
@call :GetFrameworkVer32
)
@if "%2"=="64bit" (
@call :GetFrameworkDir64
@call :GetFrameworkVer64
)
@SET Framework35Version=v3.5
@goto end
@REM -----------------------------------------------------------------------
:GetWindowsSdkDir
@set WindowsSdkDir=
@call :GetWindowsSdkDirHelper HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper HKCU > nul 2>&1
@if errorlevel 1 set WindowsSdkDir=%VCINSTALLDIR%\PlatformSDK\
@exit /B 0
:GetWindowsSdkDirHelper
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" /v "InstallationFolder"') DO (
@if "%%i"=="InstallationFolder" (
@SET "WindowsSdkDir=%%k"
)
)
@if "%WindowsSdkDir%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetVSInstallDir
@set VSINSTALLDIR=
@call :GetVSInstallDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSInstallDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVSInstallDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSInstallDirHelper64 HKCU > nul 2>&1
@exit /B 0
:GetVSInstallDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VSINSTALLDIR=%%k"
)
)
@if "%VSINSTALLDIR%"=="" exit /B 1
@exit /B 0
:GetVSInstallDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VSINSTALLDIR=%%k"
)
)
@if "%VSINSTALLDIR%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetVCInstallDir
@set VCINSTALLDIR=
@call :GetVCInstallDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVCInstallDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVCInstallDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetVCInstallDirHelper64 HKCU > nul 2>&1
@exit /B 0
:GetVCInstallDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VC7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VCINSTALLDIR=%%k"
)
)
@if "%VCINSTALLDIR%"=="" exit /B 1
@exit /B 0
:GetVCInstallDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VCINSTALLDIR=%%k"
)
)
@if "%VCINSTALLDIR%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetFSharpInstallDir
@set FSHARPINSTALLDIR=
@call :GetFSharpInstallDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetFSharpInstallDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetFSharpInstallDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetFSharpInstallDirHelper64 HKCU > nul 2>&1
@exit /B 0
:GetFSharpInstallDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\F#" /v "ProductDir"') DO (
@if "%%i"=="ProductDir" (
@SET "FSHARPINSTALLDIR=%%k"
)
)
@if "%FSHARPINSTALLDIR%"=="" exit /B 1
@exit /B 0
:GetFSharpInstallDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Setup\F#" /v "ProductDir"') DO (
@if "%%i"=="ProductDir" (
@SET "FSHARPINSTALLDIR=%%k"
)
)
@if "%FSHARPINSTALLDIR%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetFrameworkDir32
@set FrameworkDir32=
@call :GetFrameworkDir32Helper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkDir32Helper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetFrameworkDir32Helper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkDir32Helper64 HKCU > nul 2>&1
@exit /B 0
:GetFrameworkDir32Helper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkDir32"') DO (
@if "%%i"=="FrameworkDir32" (
@SET "FrameworkDIR32=%%k"
)
)
@if "%FrameworkDir32%"=="" exit /B 1
@exit /B 0
:GetFrameworkDir32Helper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkDir32"') DO (
@if "%%i"=="FrameworkDir32" (
@SET "FrameworkDIR32=%%k"
)
)
@if "%FrameworkDIR32%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetFrameworkDir64
@set FrameworkDir64=
@call :GetFrameworkDir64Helper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkDir64Helper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetFrameworkDir64Helper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkDir64Helper64 HKCU > nul 2>&1
@exit /B 0
:GetFrameworkDir64Helper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkDir64"') DO (
@if "%%i"=="FrameworkDir64" (
@SET "FrameworkDIR64=%%k"
)
)
@if "%FrameworkDIR64%"=="" exit /B 1
@exit /B 0
:GetFrameworkDir64Helper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkDir64"') DO (
@if "%%i"=="FrameworkDir64" (
@SET "FrameworkDIR64=%%k"
)
)
@if "%FrameworkDIR64%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetFrameworkVer32
@set FrameworkVer32=
@call :GetFrameworkVer32Helper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkVer32Helper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetFrameworkVer32Helper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkVer32Helper64 HKCU > nul 2>&1
@exit /B 0
:GetFrameworkVer32Helper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkVer32"') DO (
@if "%%i"=="FrameworkVer32" (
@SET "FrameworkVersion32=%%k"
)
)
@if "%FrameworkVersion32%"=="" exit /B 1
@exit /B 0
:GetFrameworkVer32Helper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkVer32"') DO (
@if "%%i"=="FrameworkVer32" (
@SET "FrameworkVersion32=%%k"
)
)
@if "%FrameworkVersion32%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:GetFrameworkVer64
@set FrameworkVer64=
@call :GetFrameworkVer64Helper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkVer64Helper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetFrameworkVer64Helper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetFrameworkVer64Helper64 HKCU > nul 2>&1
@exit /B 0
:GetFrameworkVer64Helper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkVer64"') DO (
@if "%%i"=="FrameworkVer64" (
@SET "FrameworkVersion64=%%k"
)
)
@if "%FrameworkVersion64%"=="" exit /B 1
@exit /B 0
:GetFrameworkVer64Helper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7" /v "FrameworkVer64"') DO (
@if "%%i"=="FrameworkVer64" (
@SET "FrameworkVersion64=%%k"
)
)
@if "%FrameworkVersion64%"=="" exit /B 1
@exit /B 0
@REM -----------------------------------------------------------------------
:end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +0,0 @@
c:
call build_apache.bat
call build_pcre.bat
call build_zlib.bat
call build_libxml2.bat
call build_lua.bat
call build_curl.bat
call build_module.bat
cd %WORK%

View File

@ -1,5 +0,0 @@
SET APACHE24_ZIP=httpd-2.4.3-win32.zip
mkdir %DROP%
call vsvars32.bat
call init.bat
call build.bat

View File

@ -1,6 +0,0 @@
SET APACHE24_ZIP=httpd-2.4.3-win64.zip
mkdir %DROP%
call vcvars64.bat
call init.bat
SET CL=/D "WIN64" /D "_WIN64"
call build.bat

View File

@ -1,40 +0,0 @@
cd %WORK%
rmdir /s /q %APACHE%
rmdir /s /q %HTTPD%
IF NOT DEFINED BUILD_APACHE GOTO USE_APACHE_24
7z.exe x %HTTPD%-win32-src.zip
fart.exe -r -i -C %WORK%\%HTTPD%\*.mak \x2Fmachine:x86 " "
fart.exe -r -i -C %WORK%\%HTTPD%\*.mk.win \x2Fmachine:x86 " "
copy /y %WORK%\libhttpd.mak %WORK%\%HTTPD%
copy /y %WORK%\mod_ssl.mak %WORK%\%HTTPD%\modules\ssl
copy /y %WORK%\apr.mak %WORK%\%HTTPD%\srclib\apr
copy /y %WORK%\libapr.mak %WORK%\%HTTPD%\srclib\apr
copy /y %WORK%\aprutil.mak %WORK%\%HTTPD%\srclib\apr-util
copy /y %WORK%\libaprutil.mak %WORK%\%HTTPD%\srclib\apr-util
copy /y %WORK%\dftables.mak %WORK%\%HTTPD%\srclib\pcre
copy /y %WORK%\pcre.mak %WORK%\%HTTPD%\srclib\pcre
cd %HTTPD%
nmake -f Makefile.win installr
IF NOT DEFINED FULLBUILD pause
GOTO END
:USE_APACHE_24
set APACHE=%WORK%\Apache24
del /q /f --*.*
del /q /f readme.txt
rmdir /s /q %APACHE%
7z.exe x %APACHE24_ZIP%
7z.exe x %HTTPD%.zip
:END
copy /y %APACHE%\bin\libapr-1.dll %DROP%
copy /y %APACHE%\bin\libapr-1.pdb %DROP%
copy /y %APACHE%\lib\libapr-1.lib %DROP%
copy /y %APACHE%\bin\libapriconv-1.dll %DROP%
copy /y %APACHE%\bin\libapriconv-1.pdb %DROP%
copy /y %APACHE%\lib\libapriconv-1.lib %DROP%
copy /y %APACHE%\bin\libaprutil-1.dll %DROP%
copy /y %APACHE%\bin\libaprutil-1.pdb %DROP%
copy /y %APACHE%\lib\libaprutil-1.lib %DROP%
SET HTTPD_BUILD=%WORK%\%HTTPD%
cd %WORK%

View File

@ -1,14 +0,0 @@
cd %WORK%
rmdir /s /q %CURL%
7z.exe x %CURL%.zip
copy /y CMakeLists.txt %CURL%
CD %CURL%
CMAKE -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=True -DCURL_ZLIB=True
%WORK%\fart.exe -r -C %WORK%\%CURL%\include\curl\curlbuild.h LLU ULL
NMAKE
IF NOT DEFINED FULLBUILD pause
cd %WORK%
copy /y %WORK%\%CURL%\libcurl.dll %DROP%
copy /y %WORK%\%CURL%\libcurl.pdb %DROP%
copy /y %WORK%\%CURL%\libcurl_imp.lib %DROP%

View File

@ -1,12 +0,0 @@
cd %WORK%
rmdir /s /q %LIBXML2%
7z.exe x %LIBXML2%.zip
fart.exe -r -i -C %WORK%\%LIBXML2%\win32\*.* \x2Fopt:nowin98 " "
cd %LIBXML2%\win32
CSCRIPT configure.js iconv=no vcmanifest=yes zlib=yes
NMAKE -f Makefile.msvc
IF NOT DEFINED FULLBUILD pause
cd %WORK%
copy /y %WORK%\%LIBXML2%\win32\bin.msvc\libxml2.dll %DROP%
copy /y %WORK%\%LIBXML2%\win32\bin.msvc\libxml2.lib %DROP%

View File

@ -1,14 +0,0 @@
cd %WORK%
rmdir /s /q %LUA%
7z.exe x %LUA%.zip
CD %LUA%\src
CL /Ox /arch:SSE2 /GF /GL /Gy /FD /EHsc /MD /Zi /TC /wd4005 /D "_MBCS" /D "LUA_CORE" /D "LUA_BUILD_AS_DLL" /D "_CRT_SECURE_NO_WARNINGS" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_WIN32" /D "_WINDLL" /c *.c
DEL lua.obj luac.obj
LINK /DLL /LTCG /DEBUG /OUT:lua5.1.dll *.obj
IF EXIST lua5.1.dll.manifest MT -manifest lua5.1.dll.manifest -outputresource:lua5.1.dll;2
IF NOT DEFINED FULLBUILD pause
cd %WORK%
copy /y %WORK%\%LUA%\src\lua5.1.dll %DROP%
copy /y %WORK%\%LUA%\src\lua5.1.pdb %DROP%
copy /y %WORK%\%LUA%\src\lua5.1.lib %DROP%

View File

@ -1,16 +0,0 @@
cd %WORK%
CD mod_security\apache2
del *.obj *.dll *.lib
NMAKE -f Makefile.win APACHE=%APACHE% PCRE=%WORK%\%PCRE% LIBXML2=%WORK%\%LIBXML2% LUA=%WORK%\%LUA%\src VERSION=VERSION_IIS
cd ..\mlogc
copy /y %WORK%\Makefile.win .
nmake -f Makefile.win clean
nmake -f Makefile.win APACHE=%APACHE% PCRE=%WORK%\%PCRE% CURL=%WORK%\%CURL% VERSION=VERSION_IIS
cd ..\iis
nmake -f Makefile.win clean
NMAKE -f Makefile.win APACHE=%APACHE% PCRE=%WORK%\%PCRE% LIBXML2=%WORK%\%LIBXML2% LUA=%WORK%\%LUA%\src VERSION=VERSION_IIS
cd %WORK%
copy /y %WORK%\mod_security\mlogc\mlogc.exe %DROP%
copy /y %WORK%\mod_security\iis\modsecurityiis.dll %DROP%
copy /y %WORK%\mod_security\iis\modsecurityiis.pdb %DROP%

View File

@ -1,12 +0,0 @@
cd %WORK%
rmdir /s /q %PCRE%
7z.exe x %PCRE%.zip
cd %PCRE%
CMAKE -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=True
NMAKE
IF NOT DEFINED FULLBUILD pause
cd %WORK%
copy /y %WORK%\%PCRE%\pcre.dll %DROP%
copy /y %WORK%\%PCRE%\pcre.pdb %DROP%
copy /y %WORK%\%PCRE%\pcre.lib %DROP%

View File

@ -1,13 +0,0 @@
cd %WORK%
rmdir /s /q %ZLIB%
7z.exe x %ZLIB%.zip
cd %ZLIB%
nmake -f win32\Makefile.msc
SET INCLUDE=%INCLUDE%;%WORK%\%ZLIB%
SET LIB=%LIB%;%WORK%\%ZLIB%
IF NOT DEFINED FULLBUILD pause
cd %WORK%
copy /y %WORK%\%ZLIB%\zlib1.dll %DROP%
copy /y %WORK%\%ZLIB%\zlib1.pdb %DROP%
copy /y %WORK%\%ZLIB%\zdll.lib %DROP%

View File

@ -1,7 +0,0 @@
set FULLBUILD=1
set DROP=c:\drop\amd64
cmd.exe /c build64.bat
set DROP=c:\drop\x86
cmd.exe /c build32.bat

View File

@ -1,238 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on dftables.dsp
!IF "$(CFG)" == ""
CFG=dftables - Win32 Debug
!MESSAGE No configuration specified. Defaulting to dftables - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "dftables - Win32 Release" && "$(CFG)" != "dftables - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "dftables.mak" CFG="dftables - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "dftables - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "dftables - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "dftables - Win32 Release"
OUTDIR=.
INTDIR=.\Release
# Begin Custom Macros
OutDir=.
# End Custom Macros
ALL : "$(OUTDIR)\dftables.exe"
CLEAN :
-@erase "$(INTDIR)\dftables.idb"
-@erase "$(INTDIR)\dftables.obj"
-@erase "$(OUTDIR)\dftables.exe"
"$(INTDIR)" :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /O2 /D "_WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\dftables" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\dftables.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\Release\dftables.pdb" /out:"$(OUTDIR)\dftables.exe" /opt:ref
LINK32_OBJS= \
"$(INTDIR)\dftables.obj"
"$(OUTDIR)\dftables.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "dftables - Win32 Debug"
OUTDIR=.
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.
# End Custom Macros
ALL : ".\pcre.h" ".\config.h" "$(OUTDIR)\dftables.exe"
CLEAN :
-@erase "$(INTDIR)\dftables.idb"
-@erase "$(INTDIR)\dftables.obj"
-@erase "$(OUTDIR)\Debug\dftables.pdb"
-@erase "$(OUTDIR)\dftables.exe"
-@erase ".\config.h"
-@erase ".\pcre.h"
"$(INTDIR)" :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Zi /Od /D "_WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\dftables" /FD /EHsc /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\dftables.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\Debug\dftables.pdb" /debug /out:"$(OUTDIR)\dftables.exe"
LINK32_OBJS= \
"$(INTDIR)\dftables.obj"
"$(OUTDIR)\dftables.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("dftables.dep")
!INCLUDE "dftables.dep"
!ELSE
!MESSAGE Warning: cannot find "dftables.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "dftables - Win32 Release" || "$(CFG)" == "dftables - Win32 Debug"
SOURCE=.\dftables.c
"$(INTDIR)\dftables.obj" : $(SOURCE) "$(INTDIR)" ".\config.h" ".\pcre.h"
SOURCE=.\config.hw
!IF "$(CFG)" == "dftables - Win32 Release"
InputPath=.\config.hw
".\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile27.bat
@echo off
type .\config.hw > .\config.h
<<
!ELSEIF "$(CFG)" == "dftables - Win32 Debug"
InputPath=.\config.hw
".\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile28.bat
@echo off
type .\config.hw > .\config.h
<<
!ENDIF
SOURCE=.\maketables.c
SOURCE=.\pcre.hw
!IF "$(CFG)" == "dftables - Win32 Release"
InputPath=.\pcre.hw
".\pcre.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile29.bat
@echo off
type .\pcre.hw > .\pcre.h
<<
!ELSEIF "$(CFG)" == "dftables - Win32 Debug"
InputPath=.\pcre.hw
".\pcre.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile30.bat
@echo off
type .\pcre.hw > .\pcre.h
<<
!ENDIF
!ENDIF

Binary file not shown.

View File

@ -1,13 +0,0 @@
set PATH=%PATH%;c:\work\cmake-2.8.7-win32-x86\bin;"c:\program files\7-zip"
rem set BUILD_APACHE=YES
set HTTPD=httpd-2.2.22
IF NOT DEFINED BUILD_APACHE SET HTTPD=httpd-2.4.3
set WORK=c:\work
set APACHE=c:\Apache22
set PCRE=pcre-8.30
set ZLIB=zlib-1.2.7
set LIBXML2=libxml2-2.7.7
set LUA=lua-5.1.5
set CURL=curl-7.24.0

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,733 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on mod_ssl.dsp
!IF "$(CFG)" == ""
CFG=mod_ssl - Win32 Release
!MESSAGE No configuration specified. Defaulting to mod_ssl - Win32 Release.
!ENDIF
!IF "$(CFG)" != "mod_ssl - Win32 Release" && "$(CFG)" != "mod_ssl - Win32 Debug" && "$(CFG)" != "mod_ssl - Win32 Lexical"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "mod_ssl.mak" CFG="mod_ssl - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "mod_ssl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "mod_ssl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "mod_ssl - Win32 Lexical" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "mod_ssl - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\mod_ssl.so" "$(DS_POSTBUILD_DEP)"
!ELSE
ALL : "libhttpd - Win32 Release" "libaprutil - Win32 Release" "libapr - Win32 Release" "$(OUTDIR)\mod_ssl.so" "$(DS_POSTBUILD_DEP)"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"libapr - Win32 ReleaseCLEAN" "libaprutil - Win32 ReleaseCLEAN" "libhttpd - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\mod_ssl.obj"
-@erase "$(INTDIR)\mod_ssl.res"
-@erase "$(INTDIR)\mod_ssl_src.idb"
-@erase "$(INTDIR)\mod_ssl_src.pdb"
-@erase "$(INTDIR)\ssl_engine_config.obj"
-@erase "$(INTDIR)\ssl_engine_dh.obj"
-@erase "$(INTDIR)\ssl_engine_init.obj"
-@erase "$(INTDIR)\ssl_engine_io.obj"
-@erase "$(INTDIR)\ssl_engine_kernel.obj"
-@erase "$(INTDIR)\ssl_engine_log.obj"
-@erase "$(INTDIR)\ssl_engine_mutex.obj"
-@erase "$(INTDIR)\ssl_engine_pphrase.obj"
-@erase "$(INTDIR)\ssl_engine_rand.obj"
-@erase "$(INTDIR)\ssl_engine_vars.obj"
-@erase "$(INTDIR)\ssl_expr.obj"
-@erase "$(INTDIR)\ssl_expr_eval.obj"
-@erase "$(INTDIR)\ssl_expr_parse.obj"
-@erase "$(INTDIR)\ssl_expr_scan.obj"
-@erase "$(INTDIR)\ssl_scache.obj"
-@erase "$(INTDIR)\ssl_scache_dbm.obj"
-@erase "$(INTDIR)\ssl_scache_dc.obj"
-@erase "$(INTDIR)\ssl_scache_shmcb.obj"
-@erase "$(INTDIR)\ssl_util.obj"
-@erase "$(INTDIR)\ssl_util_ssl.obj"
-@erase "$(OUTDIR)\mod_ssl.exp"
-@erase "$(OUTDIR)\mod_ssl.lib"
-@erase "$(OUTDIR)\mod_ssl.pdb"
-@erase "$(OUTDIR)\mod_ssl.so"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../../include" /I "../generators" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I "../../srclib/openssl/inc32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D "OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D "HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D "HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_ssl_src" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\mod_ssl.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_ssl.so" /d LONG_NAME="proxy_ssl_module for Apache"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_ssl.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib wsock32.lib ws2_32.lib advapi32.lib gdi32.lib libeay32.lib ssleay32.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\mod_ssl.pdb" /debug /out:"$(OUTDIR)\mod_ssl.so" /implib:"$(OUTDIR)\mod_ssl.lib" /libpath:"../../srclib/openssl/out32dll" /libpath:"../../srclib/openssl/out32" /base:@..\..\os\win32\BaseAddr.ref,mod_ssl.so /opt:ref
LINK32_OBJS= \
"$(INTDIR)\mod_ssl.obj" \
"$(INTDIR)\ssl_engine_config.obj" \
"$(INTDIR)\ssl_engine_dh.obj" \
"$(INTDIR)\ssl_engine_init.obj" \
"$(INTDIR)\ssl_engine_io.obj" \
"$(INTDIR)\ssl_engine_kernel.obj" \
"$(INTDIR)\ssl_engine_log.obj" \
"$(INTDIR)\ssl_engine_mutex.obj" \
"$(INTDIR)\ssl_engine_pphrase.obj" \
"$(INTDIR)\ssl_engine_rand.obj" \
"$(INTDIR)\ssl_engine_vars.obj" \
"$(INTDIR)\ssl_expr.obj" \
"$(INTDIR)\ssl_expr_eval.obj" \
"$(INTDIR)\ssl_expr_parse.obj" \
"$(INTDIR)\ssl_expr_scan.obj" \
"$(INTDIR)\ssl_scache.obj" \
"$(INTDIR)\ssl_scache_dbm.obj" \
"$(INTDIR)\ssl_scache_shmcb.obj" \
"$(INTDIR)\ssl_scache_dc.obj" \
"$(INTDIR)\ssl_util.obj" \
"$(INTDIR)\ssl_util_ssl.obj" \
"$(INTDIR)\mod_ssl.res" \
"..\..\srclib\apr\Release\libapr-1.lib" \
"..\..\srclib\apr-util\Release\libaprutil-1.lib" \
"..\..\Release\libhttpd.lib"
"$(OUTDIR)\mod_ssl.so" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
TargetPath=.\Release\mod_ssl.so
SOURCE="$(InputPath)"
PostBuild_Desc=Embed .manifest
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\mod_ssl.so"
if exist .\Release\mod_ssl.so.manifest mt.exe -manifest .\Release\mod_ssl.so.manifest -outputresource:.\Release\mod_ssl.so;2
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\mod_ssl.so" "$(DS_POSTBUILD_DEP)"
!ELSE
ALL : "libhttpd - Win32 Debug" "libaprutil - Win32 Debug" "libapr - Win32 Debug" "$(OUTDIR)\mod_ssl.so" "$(DS_POSTBUILD_DEP)"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"libapr - Win32 DebugCLEAN" "libaprutil - Win32 DebugCLEAN" "libhttpd - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\mod_ssl.obj"
-@erase "$(INTDIR)\mod_ssl.res"
-@erase "$(INTDIR)\mod_ssl_src.idb"
-@erase "$(INTDIR)\mod_ssl_src.pdb"
-@erase "$(INTDIR)\ssl_engine_config.obj"
-@erase "$(INTDIR)\ssl_engine_dh.obj"
-@erase "$(INTDIR)\ssl_engine_init.obj"
-@erase "$(INTDIR)\ssl_engine_io.obj"
-@erase "$(INTDIR)\ssl_engine_kernel.obj"
-@erase "$(INTDIR)\ssl_engine_log.obj"
-@erase "$(INTDIR)\ssl_engine_mutex.obj"
-@erase "$(INTDIR)\ssl_engine_pphrase.obj"
-@erase "$(INTDIR)\ssl_engine_rand.obj"
-@erase "$(INTDIR)\ssl_engine_vars.obj"
-@erase "$(INTDIR)\ssl_expr.obj"
-@erase "$(INTDIR)\ssl_expr_eval.obj"
-@erase "$(INTDIR)\ssl_expr_parse.obj"
-@erase "$(INTDIR)\ssl_expr_scan.obj"
-@erase "$(INTDIR)\ssl_scache.obj"
-@erase "$(INTDIR)\ssl_scache_dbm.obj"
-@erase "$(INTDIR)\ssl_scache_dc.obj"
-@erase "$(INTDIR)\ssl_scache_shmcb.obj"
-@erase "$(INTDIR)\ssl_util.obj"
-@erase "$(INTDIR)\ssl_util_ssl.obj"
-@erase "$(OUTDIR)\mod_ssl.exp"
-@erase "$(OUTDIR)\mod_ssl.lib"
-@erase "$(OUTDIR)\mod_ssl.pdb"
-@erase "$(OUTDIR)\mod_ssl.so"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../../include" /I "../generators" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I "../../srclib/openssl/inc32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D "OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D "HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D "HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_ssl_src" /FD /EHsc /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\mod_ssl.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_ssl.so" /d LONG_NAME="proxy_ssl_module for Apache"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_ssl.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib wsock32.lib ws2_32.lib advapi32.lib gdi32.lib libeay32.lib ssleay32.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\mod_ssl.pdb" /debug /out:"$(OUTDIR)\mod_ssl.so" /implib:"$(OUTDIR)\mod_ssl.lib" /libpath:"../../srclib/openssl/out32dll.dbg" /libpath:"../../srclib/openssl/out32.dbg" /libpath:"../../srclib/openssl/out32dll" /libpath:"../../srclib/openssl/out32" /base:@..\..\os\win32\BaseAddr.ref,mod_ssl.so
LINK32_OBJS= \
"$(INTDIR)\mod_ssl.obj" \
"$(INTDIR)\ssl_engine_config.obj" \
"$(INTDIR)\ssl_engine_dh.obj" \
"$(INTDIR)\ssl_engine_init.obj" \
"$(INTDIR)\ssl_engine_io.obj" \
"$(INTDIR)\ssl_engine_kernel.obj" \
"$(INTDIR)\ssl_engine_log.obj" \
"$(INTDIR)\ssl_engine_mutex.obj" \
"$(INTDIR)\ssl_engine_pphrase.obj" \
"$(INTDIR)\ssl_engine_rand.obj" \
"$(INTDIR)\ssl_engine_vars.obj" \
"$(INTDIR)\ssl_expr.obj" \
"$(INTDIR)\ssl_expr_eval.obj" \
"$(INTDIR)\ssl_expr_parse.obj" \
"$(INTDIR)\ssl_expr_scan.obj" \
"$(INTDIR)\ssl_scache.obj" \
"$(INTDIR)\ssl_scache_dbm.obj" \
"$(INTDIR)\ssl_scache_shmcb.obj" \
"$(INTDIR)\ssl_scache_dc.obj" \
"$(INTDIR)\ssl_util.obj" \
"$(INTDIR)\ssl_util_ssl.obj" \
"$(INTDIR)\mod_ssl.res" \
"..\..\srclib\apr\Debug\libapr-1.lib" \
"..\..\srclib\apr-util\Debug\libaprutil-1.lib" \
"..\..\Debug\libhttpd.lib"
"$(OUTDIR)\mod_ssl.so" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
TargetPath=.\Debug\mod_ssl.so
SOURCE="$(InputPath)"
PostBuild_Desc=Embed .manifest
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\mod_ssl.so"
if exist .\Debug\mod_ssl.so.manifest mt.exe -manifest .\Debug\mod_ssl.so.manifest -outputresource:.\Debug\mod_ssl.so;2
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
OUTDIR=.\Release
INTDIR=.\Release
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : ".\ssl_expr_parse.h" ".\ssl_expr_parse.c" "$(OUTDIR)\mod_ssl.so" "$(DS_POSTBUILD_DEP)"
!ELSE
ALL : ".\ssl_expr_parse.h" ".\ssl_expr_parse.c" "$(OUTDIR)\mod_ssl.so" "$(DS_POSTBUILD_DEP)"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\mod_ssl.obj"
-@erase "$(INTDIR)\mod_ssl.res"
-@erase "$(INTDIR)\mod_ssl_src.idb"
-@erase "$(INTDIR)\mod_ssl_src.pdb"
-@erase "$(INTDIR)\ssl_engine_config.obj"
-@erase "$(INTDIR)\ssl_engine_dh.obj"
-@erase "$(INTDIR)\ssl_engine_init.obj"
-@erase "$(INTDIR)\ssl_engine_io.obj"
-@erase "$(INTDIR)\ssl_engine_kernel.obj"
-@erase "$(INTDIR)\ssl_engine_log.obj"
-@erase "$(INTDIR)\ssl_engine_mutex.obj"
-@erase "$(INTDIR)\ssl_engine_pphrase.obj"
-@erase "$(INTDIR)\ssl_engine_rand.obj"
-@erase "$(INTDIR)\ssl_engine_vars.obj"
-@erase "$(INTDIR)\ssl_expr.obj"
-@erase "$(INTDIR)\ssl_expr_eval.obj"
-@erase "$(INTDIR)\ssl_expr_parse.obj"
-@erase "$(INTDIR)\ssl_expr_scan.obj"
-@erase "$(INTDIR)\ssl_scache.obj"
-@erase "$(INTDIR)\ssl_scache_dbm.obj"
-@erase "$(INTDIR)\ssl_scache_dc.obj"
-@erase "$(INTDIR)\ssl_scache_shmcb.obj"
-@erase "$(INTDIR)\ssl_util.obj"
-@erase "$(INTDIR)\ssl_util_ssl.obj"
-@erase "$(OUTDIR)\mod_ssl.exp"
-@erase "$(OUTDIR)\mod_ssl.lib"
-@erase "$(OUTDIR)\mod_ssl.pdb"
-@erase "$(OUTDIR)\mod_ssl.so"
-@erase "ssl_expr_parse.c"
-@erase "ssl_expr_parse.h"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../../include" /I "../generators" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I "../../srclib/openssl/inc32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D "OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D "HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D "HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_ssl_src" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\mod_ssl.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_ssl.so" /d LONG_NAME="proxy_ssl_module for Apache"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_ssl.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib wsock32.lib ws2_32.lib advapi32.lib gdi32.lib libeay32.lib ssleay32.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\mod_ssl.pdb" /debug /out:"$(OUTDIR)\mod_ssl.so" /implib:"$(OUTDIR)\mod_ssl.lib" /libpath:"../../srclib/openssl/out32dll" /libpath:"../../srclib/openssl/out32" /base:@..\..\os\win32\BaseAddr.ref,mod_ssl.so /opt:ref
LINK32_OBJS= \
"$(INTDIR)\mod_ssl.obj" \
"$(INTDIR)\ssl_engine_config.obj" \
"$(INTDIR)\ssl_engine_dh.obj" \
"$(INTDIR)\ssl_engine_init.obj" \
"$(INTDIR)\ssl_engine_io.obj" \
"$(INTDIR)\ssl_engine_kernel.obj" \
"$(INTDIR)\ssl_engine_log.obj" \
"$(INTDIR)\ssl_engine_mutex.obj" \
"$(INTDIR)\ssl_engine_pphrase.obj" \
"$(INTDIR)\ssl_engine_rand.obj" \
"$(INTDIR)\ssl_engine_vars.obj" \
"$(INTDIR)\ssl_expr.obj" \
"$(INTDIR)\ssl_expr_eval.obj" \
"$(INTDIR)\ssl_expr_parse.obj" \
"$(INTDIR)\ssl_expr_scan.obj" \
"$(INTDIR)\ssl_scache.obj" \
"$(INTDIR)\ssl_scache_dbm.obj" \
"$(INTDIR)\ssl_scache_shmcb.obj" \
"$(INTDIR)\ssl_scache_dc.obj" \
"$(INTDIR)\ssl_util.obj" \
"$(INTDIR)\ssl_util_ssl.obj" \
"$(INTDIR)\mod_ssl.res"
"$(OUTDIR)\mod_ssl.so" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
TargetPath=.\Release\mod_ssl.so
SOURCE="$(InputPath)"
PostBuild_Desc=Embed .manifest
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\mod_ssl.so"
if exist .\Release\mod_ssl.so.manifest mt.exe -manifest .\Release\mod_ssl.so.manifest -outputresource:.\Release\mod_ssl.so;2
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("mod_ssl.dep")
!INCLUDE "mod_ssl.dep"
!ELSE
!MESSAGE Warning: cannot find "mod_ssl.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "mod_ssl - Win32 Release" || "$(CFG)" == "mod_ssl - Win32 Debug" || "$(CFG)" == "mod_ssl - Win32 Lexical"
SOURCE=.\mod_ssl.c
"$(INTDIR)\mod_ssl.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_config.c
"$(INTDIR)\ssl_engine_config.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_dh.c
"$(INTDIR)\ssl_engine_dh.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_init.c
"$(INTDIR)\ssl_engine_init.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_io.c
"$(INTDIR)\ssl_engine_io.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_kernel.c
"$(INTDIR)\ssl_engine_kernel.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_log.c
"$(INTDIR)\ssl_engine_log.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_mutex.c
"$(INTDIR)\ssl_engine_mutex.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_pphrase.c
"$(INTDIR)\ssl_engine_pphrase.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_rand.c
"$(INTDIR)\ssl_engine_rand.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_engine_vars.c
"$(INTDIR)\ssl_engine_vars.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_expr.c
"$(INTDIR)\ssl_expr.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_expr_eval.c
"$(INTDIR)\ssl_expr_eval.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_expr_parse.c
"$(INTDIR)\ssl_expr_parse.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_expr_scan.c
"$(INTDIR)\ssl_expr_scan.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_scache.c
"$(INTDIR)\ssl_scache.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_scache_dbm.c
"$(INTDIR)\ssl_scache_dbm.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_scache_dc.c
"$(INTDIR)\ssl_scache_dc.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_scache_shmcb.c
"$(INTDIR)\ssl_scache_shmcb.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_util.c
"$(INTDIR)\ssl_util.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_util_ssl.c
"$(INTDIR)\ssl_util_ssl.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\ssl_expr_parse.y
!IF "$(CFG)" == "mod_ssl - Win32 Release"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
InputPath=.\ssl_expr_parse.y
".\ssl_expr_parse.c" ".\ssl_expr_parse.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile77.bat
@echo off
bison -y -d ssl_expr_parse.y
sed -e "s;yy;ssl_expr_yy;g" -e "/#if defined(c_plusplus) || defined(__cplusplus)/,/#endif/d" <y.tab.c >ssl_expr_parse.c
del y.tab.c
sed -e "s;yy;ssl_expr_yy;g" <y.tab.h >ssl_expr_parse.h
del y.tab.h
<<
!ENDIF
SOURCE=.\ssl_expr_scan.l
!IF "$(CFG)" == "mod_ssl - Win32 Release"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
InputPath=.\ssl_expr_scan.l
".\ssl_expr_scan.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile78.bat
@echo off
flex -Pssl_expr_yy -s -B ssl_expr_scan.l
sed -e "/$$Header:/d" <lex.ssl_expr_yy.c >ssl_expr_scan.c
del lex.ssl_expr_yy.c
<<
!ENDIF
!IF "$(CFG)" == "mod_ssl - Win32 Release"
"libapr - Win32 Release" :
cd ".\..\..\srclib\apr"
$(MAKE) /$(MAKEFLAGS) /F ".\libapr.mak" CFG="libapr - Win32 Release"
cd "..\..\modules\ssl"
"libapr - Win32 ReleaseCLEAN" :
cd ".\..\..\srclib\apr"
$(MAKE) /$(MAKEFLAGS) /F ".\libapr.mak" CFG="libapr - Win32 Release" RECURSE=1 CLEAN
cd "..\..\modules\ssl"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
"libapr - Win32 Debug" :
cd ".\..\..\srclib\apr"
$(MAKE) /$(MAKEFLAGS) /F ".\libapr.mak" CFG="libapr - Win32 Debug"
cd "..\..\modules\ssl"
"libapr - Win32 DebugCLEAN" :
cd ".\..\..\srclib\apr"
$(MAKE) /$(MAKEFLAGS) /F ".\libapr.mak" CFG="libapr - Win32 Debug" RECURSE=1 CLEAN
cd "..\..\modules\ssl"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
!ENDIF
!IF "$(CFG)" == "mod_ssl - Win32 Release"
"libaprutil - Win32 Release" :
cd ".\..\..\srclib\apr-util"
$(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Release"
cd "..\..\modules\ssl"
"libaprutil - Win32 ReleaseCLEAN" :
cd ".\..\..\srclib\apr-util"
$(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Release" RECURSE=1 CLEAN
cd "..\..\modules\ssl"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
"libaprutil - Win32 Debug" :
cd ".\..\..\srclib\apr-util"
$(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Debug"
cd "..\..\modules\ssl"
"libaprutil - Win32 DebugCLEAN" :
cd ".\..\..\srclib\apr-util"
$(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Debug" RECURSE=1 CLEAN
cd "..\..\modules\ssl"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
!ENDIF
!IF "$(CFG)" == "mod_ssl - Win32 Release"
"libhttpd - Win32 Release" :
cd ".\..\.."
$(MAKE) /$(MAKEFLAGS) /F ".\libhttpd.mak" CFG="libhttpd - Win32 Release"
cd ".\modules\ssl"
"libhttpd - Win32 ReleaseCLEAN" :
cd ".\..\.."
$(MAKE) /$(MAKEFLAGS) /F ".\libhttpd.mak" CFG="libhttpd - Win32 Release" RECURSE=1 CLEAN
cd ".\modules\ssl"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
"libhttpd - Win32 Debug" :
cd ".\..\.."
$(MAKE) /$(MAKEFLAGS) /F ".\libhttpd.mak" CFG="libhttpd - Win32 Debug"
cd ".\modules\ssl"
"libhttpd - Win32 DebugCLEAN" :
cd ".\..\.."
$(MAKE) /$(MAKEFLAGS) /F ".\libhttpd.mak" CFG="libhttpd - Win32 Debug" RECURSE=1 CLEAN
cd ".\modules\ssl"
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
!ENDIF
SOURCE=..\..\build\win32\httpd.rc
!IF "$(CFG)" == "mod_ssl - Win32 Release"
"$(INTDIR)\mod_ssl.res" : $(SOURCE) "$(INTDIR)"
$(RSC) /l 0x409 /fo"$(INTDIR)\mod_ssl.res" /i "../../include" /i "../../srclib/apr/include" /i ".\..\..\build\win32" /d "NDEBUG" /d BIN_NAME="mod_ssl.so" /d LONG_NAME="proxy_ssl_module for Apache" $(SOURCE)
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Debug"
"$(INTDIR)\mod_ssl.res" : $(SOURCE) "$(INTDIR)"
$(RSC) /l 0x409 /fo"$(INTDIR)\mod_ssl.res" /i "../../include" /i "../../srclib/apr/include" /i ".\..\..\build\win32" /d "_DEBUG" /d BIN_NAME="mod_ssl.so" /d LONG_NAME="proxy_ssl_module for Apache" $(SOURCE)
!ELSEIF "$(CFG)" == "mod_ssl - Win32 Lexical"
"$(INTDIR)\mod_ssl.res" : $(SOURCE) "$(INTDIR)"
$(RSC) /l 0x409 /fo"$(INTDIR)\mod_ssl.res" /i "../../include" /i "../../srclib/apr/include" /i ".\..\..\build\win32" /d "NDEBUG" /d BIN_NAME="mod_ssl.so" /d LONG_NAME="proxy_ssl_module for Apache" $(SOURCE)
!ENDIF
!ENDIF

View File

@ -1,340 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on pcre.dsp
!IF "$(CFG)" == ""
CFG=pcre - Win32 Debug
!MESSAGE No configuration specified. Defaulting to pcre - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "pcre - Win32 Release" && "$(CFG)" != "pcre - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "pcre.mak" CFG="pcre - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "pcre - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "pcre - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "pcre - Win32 Release"
OUTDIR=.\LibR
INTDIR=.\LibR
# Begin Custom Macros
OutDir=.\LibR
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\pcre.lib"
!ELSE
ALL : "dftables - Win32 Release" "$(OUTDIR)\pcre.lib"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"dftables - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\get.obj"
-@erase "$(INTDIR)\maketables.obj"
-@erase "$(INTDIR)\pcre.obj"
-@erase "$(INTDIR)\pcre_src.idb"
-@erase "$(INTDIR)\pcre_src.pdb"
-@erase "$(INTDIR)\study.obj"
-@erase "$(OUTDIR)\pcre.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /Zi /O2 /D "_WIN32" /D "NDEBUG" /D "_WINDOWS" /D "PCRE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\pcre_src" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\pcre.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\pcre.lib"
LIB32_OBJS= \
"$(INTDIR)\get.obj" \
"$(INTDIR)\maketables.obj" \
"$(INTDIR)\pcre.obj" \
"$(INTDIR)\study.obj"
"$(OUTDIR)\pcre.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ELSEIF "$(CFG)" == "pcre - Win32 Debug"
OUTDIR=.\LibD
INTDIR=.\LibD
# Begin Custom Macros
OutDir=.\LibD
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : ".\pcre.h" ".\config.h" ".\chartables.c" "$(OUTDIR)\pcre.lib"
!ELSE
ALL : "dftables - Win32 Debug" ".\pcre.h" ".\config.h" ".\chartables.c" "$(OUTDIR)\pcre.lib"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"dftables - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\get.obj"
-@erase "$(INTDIR)\maketables.obj"
-@erase "$(INTDIR)\pcre.obj"
-@erase "$(INTDIR)\pcre_src.idb"
-@erase "$(INTDIR)\pcre_src.pdb"
-@erase "$(INTDIR)\study.obj"
-@erase "$(OUTDIR)\pcre.lib"
-@erase ".\chartables.c"
-@erase ".\config.h"
-@erase ".\pcre.h"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Zi /Od /D "_WIN32" /D "_DEBUG" /D "_WINDOWS" /D "PCRE_STATIC" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\pcre_src" /FD /EHsc /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\pcre.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\pcre.lib"
LIB32_OBJS= \
"$(INTDIR)\get.obj" \
"$(INTDIR)\maketables.obj" \
"$(INTDIR)\pcre.obj" \
"$(INTDIR)\study.obj"
"$(OUTDIR)\pcre.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("pcre.dep")
!INCLUDE "pcre.dep"
!ELSE
!MESSAGE Warning: cannot find "pcre.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "pcre - Win32 Release" || "$(CFG)" == "pcre - Win32 Debug"
SOURCE=.\dftables.exe
!IF "$(CFG)" == "pcre - Win32 Release"
InputPath=.\dftables.exe
".\chartables.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile79.bat
@echo off
.\dftables.exe chartables.c
<<
!ELSEIF "$(CFG)" == "pcre - Win32 Debug"
InputPath=.\dftables.exe
".\chartables.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile80.bat
@echo off
.\dftables.exe chartables.c
<<
!ENDIF
SOURCE=.\get.c
"$(INTDIR)\get.obj" : $(SOURCE) "$(INTDIR)" ".\config.h" ".\pcre.h"
SOURCE=.\maketables.c
"$(INTDIR)\maketables.obj" : $(SOURCE) "$(INTDIR)" ".\config.h" ".\pcre.h"
SOURCE=.\pcre.c
"$(INTDIR)\pcre.obj" : $(SOURCE) "$(INTDIR)" ".\chartables.c" ".\config.h" ".\pcre.h"
SOURCE=.\study.c
"$(INTDIR)\study.obj" : $(SOURCE) "$(INTDIR)" ".\config.h" ".\pcre.h"
SOURCE=.\config.hw
!IF "$(CFG)" == "pcre - Win32 Release"
InputPath=.\config.hw
".\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile81.bat
@echo off
type .\config.hw > .\config.h
<<
!ELSEIF "$(CFG)" == "pcre - Win32 Debug"
InputPath=.\config.hw
".\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile82.bat
@echo off
type .\config.hw > .\config.h
<<
!ENDIF
SOURCE=.\pcre.hw
!IF "$(CFG)" == "pcre - Win32 Release"
InputPath=.\pcre.hw
".\pcre.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile83.bat
@echo off
type .\pcre.hw > .\pcre.h
<<
!ELSEIF "$(CFG)" == "pcre - Win32 Debug"
InputPath=.\pcre.hw
".\pcre.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
<<tempfile84.bat
@echo off
type .\pcre.hw > .\pcre.h
<<
!ENDIF
!IF "$(CFG)" == "pcre - Win32 Release"
"dftables - Win32 Release" :
cd "."
$(MAKE) /$(MAKEFLAGS) /F ".\dftables.mak" CFG="dftables - Win32 Release"
cd "."
"dftables - Win32 ReleaseCLEAN" :
cd "."
$(MAKE) /$(MAKEFLAGS) /F ".\dftables.mak" CFG="dftables - Win32 Release" RECURSE=1 CLEAN
cd "."
!ELSEIF "$(CFG)" == "pcre - Win32 Debug"
"dftables - Win32 Debug" :
cd "."
$(MAKE) /$(MAKEFLAGS) /F ".\dftables.mak" CFG="dftables - Win32 Debug"
cd "."
"dftables - Win32 DebugCLEAN" :
cd "."
$(MAKE) /$(MAKEFLAGS) /F ".\dftables.mak" CFG="dftables - Win32 Debug" RECURSE=1 CLEAN
cd "."
!ENDIF
!ENDIF

View File

@ -1,113 +0,0 @@
@echo Setting environment for using Microsoft Visual Studio 2010 x64 tools.
@call :GetVSCommonToolsDir
@if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
@call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" No32bit 64bit
@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR
@if "%FrameworkDir64%"=="" goto error_no_FrameworkDIR64
@if "%FrameworkVersion64%"=="" goto error_no_FrameworkVer64
@if "%Framework35Version%"=="" goto error_no_Framework35Version
@set FrameworkDir=%FrameworkDir64%
@set FrameworkVersion=%FrameworkVersion64%
@if not "%WindowsSdkDir%" == "" (
@set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%bin\x64;%WindowsSdkDir%bin;%PATH%"
@set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"
@set "LIB=%WindowsSdkDir%lib\x64;%LIB%"
)
@rem PATH
@rem ----
@if exist "%VSINSTALLDIR%Team Tools\Performance Tools\x64" (
@set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools\x64;%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
)
@if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
@if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
@set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
@set PATH=%VSINSTALLDIR%Common7\IDE;%PATH%
@set PATH=%VCINSTALLDIR%VCPackages;%PATH%
@set PATH=%FrameworkDir%\%Framework35Version%;%PATH%
@set PATH=%FrameworkDir%\%FrameworkVersion%;%PATH%
@set PATH=%VCINSTALLDIR%BIN\amd64;%PATH%
@rem INCLUDE
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
@set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%
@rem LIB
@rem ---
@if exist "%VCINSTALLDIR%ATLMFC\LIB\amd64" set LIB=%VCINSTALLDIR%ATLMFC\LIB\amd64;%LIB%
@set LIB=%VCINSTALLDIR%LIB\amd64;%LIB%
@rem LIBPATH
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\LIB\amd64" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB\amd64;%LIBPATH%
@set LIBPATH=%VCINSTALLDIR%LIB\amd64;%LIBPATH%
@set LIBPATH=%FrameworkDir%\%Framework35Version%;%LIBPATH%
@set LIBPATH=%FrameworkDir%\%FrameworkVersion%;%LIBPATH%
@set Platform=X64
@set CommandPromptType=Native
@goto end
@REM -----------------------------------------------------------------------
:GetVSCommonToolsDir
@set VS100COMNTOOLS=
@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKCU > nul 2>&1
@exit /B 0
:GetVSCommonToolsDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
@if "%VS100COMNTOOLS%"=="" exit /B 1
@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
@exit /B 0
:GetVSCommonToolsDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
@if "%VS100COMNTOOLS%"=="" exit /B 1
@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
@exit /B 0
@REM -----------------------------------------------------------------------
:error_no_VS100COMNTOOLSDIR
@echo ERROR: Cannot determine the location of the VS Common Tools folder.
@goto end
:error_no_VSINSTALLDIR
@echo ERROR: Cannot determine the location of the VS installation.
@goto end
:error_no_VCINSTALLDIR
@echo ERROR: Cannot determine the location of the VC installation.
@goto end
:error_no_FrameworkDIR64
@echo ERROR: Cannot determine the location of the .NET Framework 64bit installation.
@goto end
:error_no_FrameworkVer64
@echo ERROR: Cannot determine the version of the .NET Framework 64bit installation.
@goto end
:error_no_Framework35Version
@echo ERROR: Cannot determine the .NET Framework 3.5 version.
@goto end
:end

View File

@ -1,118 +0,0 @@
@echo Setting environment for using Microsoft Visual Studio 2010 x86 tools.
@call :GetVSCommonToolsDir
@if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
@call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%FrameworkDir32%"=="" goto error_no_FrameworkDIR32
@if "%FrameworkVersion32%"=="" goto error_no_FrameworkVer32
@if "%Framework35Version%"=="" goto error_no_Framework35Version
@set FrameworkDir=%FrameworkDir32%
@set FrameworkVersion=%FrameworkVersion32%
@if not "%WindowsSdkDir%" == "" (
@set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools;%WindowsSdkDir%bin;%PATH%"
@set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"
@set "LIB=%WindowsSdkDir%lib;%LIB%"
)
@rem
@rem Root of Visual Studio IDE installed files.
@rem
@set DevEnvDir=%VSINSTALLDIR%Common7\IDE\
@rem PATH
@rem ----
@if exist "%VSINSTALLDIR%Team Tools\Performance Tools" (
@set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
)
@if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
@if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
@if exist "%VCINSTALLDIR%VCPackages" set PATH=%VCINSTALLDIR%VCPackages;%PATH%
@set PATH=%FrameworkDir%%Framework35Version%;%PATH%
@set PATH=%FrameworkDir%%FrameworkVersion%;%PATH%
@set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
@if exist "%VCINSTALLDIR%BIN" set PATH=%VCINSTALLDIR%BIN;%PATH%
@set PATH=%DevEnvDir%;%PATH%
@if exist "%VSINSTALLDIR%VSTSDB\Deploy" (
@set "PATH=%VSINSTALLDIR%VSTSDB\Deploy;%PATH%"
)
@if not "%FSHARPINSTALLDIR%" == "" (
@set "PATH=%FSHARPINSTALLDIR%;%PATH%"
)
@rem INCLUDE
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
@if exist "%VCINSTALLDIR%INCLUDE" set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%
@rem LIB
@rem ---
@if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIB=%VCINSTALLDIR%ATLMFC\LIB;%LIB%
@if exist "%VCINSTALLDIR%LIB" set LIB=%VCINSTALLDIR%LIB;%LIB%
@rem LIBPATH
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB;%LIBPATH%
@if exist "%VCINSTALLDIR%LIB" set LIBPATH=%VCINSTALLDIR%LIB;%LIBPATH%
@set LIBPATH=%FrameworkDir%%Framework35Version%;%LIBPATH%
@set LIBPATH=%FrameworkDir%%FrameworkVersion%;%LIBPATH%
@goto end
@REM -----------------------------------------------------------------------
:GetVSCommonToolsDir
@set VS100COMNTOOLS=
@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKCU > nul 2>&1
@exit /B 0
:GetVSCommonToolsDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
@if "%VS100COMNTOOLS%"=="" exit /B 1
@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
@exit /B 0
:GetVSCommonToolsDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
@if "%VS100COMNTOOLS%"=="" exit /B 1
@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
@exit /B 0
@REM -----------------------------------------------------------------------
:error_no_VS100COMNTOOLSDIR
@echo ERROR: Cannot determine the location of the VS Common Tools folder.
@goto end
:error_no_VSINSTALLDIR
@echo ERROR: Cannot determine the location of the VS installation.
@goto end
:error_no_FrameworkDIR32
@echo ERROR: Cannot determine the location of the .NET Framework 32bit installation.
@goto end
:error_no_FrameworkVer32
@echo ERROR: Cannot determine the version of the .NET Framework 32bit installation.
@goto end
:error_no_Framework35Version
@echo ERROR: Cannot determine the .NET Framework 3.5 version.
@goto end
:end

31
iis/wix/EULA.rtf Normal file
View File

@ -0,0 +1,31 @@
{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\fswiss\fprq2\fcharset0 Calibri;}}
{\colortbl ;\red0\green0\blue255;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sb100\sa100\lang9\f0\fs24 Apache License\line\line Version 2.0, January 2004\line\line\pard{\field{\*\fldinst{HYPERLINK "http://www.apache.org/licenses/"}}{\fldrslt{\ul\cf1 http://www.apache.org/licenses/}}}\f0\fs24 \par
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\par
\b 1. Definitions\b0 .\par
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\par
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\par
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\par
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.\par
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\par
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\par
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\par
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\par
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."\par
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\par
\b 2. Grant of Copyright License\b0 . Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\par
\b 3. Grant of Patent License\b0 . Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\par
\b 4. Redistribution\b0 . You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\par
\pard\fi-360\li720\sb100\sa100\tx720 1.\tab You must give any other recipients of the Work or Derivative Works a copy of this License; and\par
\pard\fi-360\li720\sb100\sa100 2.\tab You must cause any modified files to carry prominent notices stating that You changed the files; and\par
3.\tab You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\par
4.\tab If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\par
\pard\sb100\sa100\b 5. Submission of Contributions\b0 . Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\par
\b 6. Trademarks\b0 . This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\par
\b 7. Disclaimer of Warranty\b0 . Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\par
\b 8. Limitation of Liability\b0 . In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\par
\b 9. Accepting Warranty or Additional Liability\b0 . While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\par
END OF TERMS AND CONDITIONS\par
\pard\sa200\sl276\slmult1\lang1033\f1\fs22\par
}

21
iis/wix/README.TXT Normal file
View File

@ -0,0 +1,21 @@
Please note that installing ModSecurity for IIS requires IIS to be installed and enabled.
After installing ModSecurity for IIS, the module will be running in all websites by default. To remove from a website add to web.config:
<modules>
<remove name="ModSecurityIIS" />
</modules>
To configure module in a website add to web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<ModSecurity enabled="true" configFile="c:\inetpub\wwwroot\xss.conf" />
</system.webServer>
</configuration>
where configFile is standard ModSecurity config file.
Events from the module will show up in "Application" Windows log.

BIN
iis/wix/banner.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
iis/wix/dialog.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

214
iis/wix/modsecurity.conf Normal file
View File

@ -0,0 +1,214 @@
# based on modsecurity.conf-recommended
# -- Rule engine initialization ----------------------------------------------
# Enable ModSecurity, attaching it to every transaction. Use detection
# only to start with, because that minimises the chances of post-installation
# disruption.
#
SecRuleEngine DetectionOnly
# -- Request body handling ---------------------------------------------------
# Allow ModSecurity to access request bodies. If you don't, ModSecurity
# won't be able to see any POST parameters, which opens a large security
# hole for attackers to exploit.
#
SecRequestBodyAccess On
# Enable XML request body parser.
# Initiate XML Processor in case of xml content-type
#
SecRule REQUEST_HEADERS:Content-Type "text/xml" \
"id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"
# Maximum request body size we will accept for buffering. If you support
# file uploads then the value given on the first line has to be as large
# as the largest file you are willing to accept. The second value refers
# to the size of data, with files excluded. You want to keep that value as
# low as practical.
#
SecRequestBodyLimit 13107200
SecRequestBodyNoFilesLimit 131072
# Store up to 128 KB of request body data in memory. When the multipart
# parser reachers this limit, it will start using your hard disk for
# storage. That is slow, but unavoidable.
#
SecRequestBodyInMemoryLimit 131072
# What do do if the request body size is above our configured limit.
# Keep in mind that this setting will automatically be set to ProcessPartial
# when SecRuleEngine is set to DetectionOnly mode in order to minimize
# disruptions when initially deploying ModSecurity.
#
SecRequestBodyLimitAction Reject
# Verify that we've correctly processed the request body.
# As a rule of thumb, when failing to process a request body
# you should reject the request (when deployed in blocking mode)
# or log a high-severity alert (when deployed in detection-only mode).
#
SecRule REQBODY_ERROR "!@eq 0" \
"id:'200001', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2"
# By default be strict with what we accept in the multipart/form-data
# request body. If the rule below proves to be too strict for your
# environment consider changing it to detection-only. You are encouraged
# _not_ to remove it altogether.
#
SecRule MULTIPART_STRICT_ERROR "!@eq 0" \
"id:'200002',phase:2,t:none,log,deny,status:44, \
msg:'Multipart request body failed strict validation: \
PE %{REQBODY_PROCESSOR_ERROR}, \
BQ %{MULTIPART_BOUNDARY_QUOTED}, \
BW %{MULTIPART_BOUNDARY_WHITESPACE}, \
DB %{MULTIPART_DATA_BEFORE}, \
DA %{MULTIPART_DATA_AFTER}, \
HF %{MULTIPART_HEADER_FOLDING}, \
LF %{MULTIPART_LF_LINE}, \
SM %{MULTIPART_MISSING_SEMICOLON}, \
IQ %{MULTIPART_INVALID_QUOTING}, \
IP %{MULTIPART_INVALID_PART}, \
IH %{MULTIPART_INVALID_HEADER_FOLDING}, \
FL %{MULTIPART_FILE_LIMIT_EXCEEDED}'"
# Did we see anything that might be a boundary?
#
SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \
"id:'200003',phase:2,t:none,log,deny,status:44,msg:'Multipart parser detected a possible unmatched boundary.'"
# PCRE Tuning
# We want to avoid a potential RegEx DoS condition
#
SecPcreMatchLimit 1000
SecPcreMatchLimitRecursion 1000
# Some internal errors will set flags in TX and we will need to look for these.
# All of these are prefixed with "MSC_". The following flags currently exist:
#
# MSC_PCRE_LIMITS_EXCEEDED: PCRE match limits were exceeded.
#
SecRule TX:/^MSC_/ "!@streq 0" \
"id:'200004',phase:2,t:none,deny,msg:'ModSecurity internal error flagged: %{MATCHED_VAR_NAME}'"
# -- Response body handling --------------------------------------------------
# Allow ModSecurity to access response bodies.
# You should have this directive enabled in order to identify errors
# and data leakage issues.
#
# Do keep in mind that enabling this directive does increases both
# memory consumption and response latency.
#
#SecResponseBodyAccess On
# Which response MIME types do you want to inspect? You should adjust the
# configuration below to catch documents but avoid static files
# (e.g., images and archives).
#
SecResponseBodyMimeType text/plain text/html text/xml
# Buffer response bodies of up to 512 KB in length.
SecResponseBodyLimit 524288
# What happens when we encounter a response body larger than the configured
# limit? By default, we process what we have and let the rest through.
# That's somewhat less secure, but does not break any legitimate pages.
#
SecResponseBodyLimitAction ProcessPartial
# -- Filesystem configuration ------------------------------------------------
# The location where ModSecurity stores temporary files (for example, when
# it needs to handle a file upload that is larger than the configured limit).
#
# This default setting is chosen due to all systems have /tmp available however,
# this is less than ideal. It is recommended that you specify a location that's private.
#
SecTmpDir c:\inetpub\temp\
# The location where ModSecurity will keep its persistent data. This default setting
# is chosen due to all systems have /tmp available however, it
# too should be updated to a place that other users can't access.
#
SecDataDir c:\inetpub\temp\
# -- File uploads handling configuration -------------------------------------
# The location where ModSecurity stores intercepted uploaded files. This
# location must be private to ModSecurity. You don't want other users on
# the server to access the files, do you?
#
#SecUploadDir /opt/modsecurity/var/upload/
# By default, only keep the files that were determined to be unusual
# in some way (by an external inspection script). For this to work you
# will also need at least one file inspection rule.
#
#SecUploadKeepFiles RelevantOnly
# Uploaded files are by default created with permissions that do not allow
# any other user to access them. You may need to relax that if you want to
# interface ModSecurity to an external program (e.g., an anti-virus).
#
#SecUploadFileMode 0600
# -- Debug log configuration -------------------------------------------------
# The default debug log configuration is to duplicate the error, warning
# and notice messages from the error log.
#
#SecDebugLog /opt/modsecurity/var/log/debug.log
#SecDebugLogLevel 3
# -- Audit log configuration -------------------------------------------------
# Log the transactions that are marked by a rule, as well as those that
# trigger a server error (determined by a 5xx or 4xx, excluding 404,
# level response status codes).
#
#SecAuditEngine RelevantOnly
#SecAuditLogRelevantStatus "^(?:5|4(?!04))"
# Log everything we know about a transaction.
#SecAuditLogParts ABIJDEFHZ
# Use a single file for logging. This is much easier to look at, but
# assumes that you will use the audit log only ocassionally.
#
#SecAuditLogType Serial
#SecAuditLog c:\inetpub\log\modsec_audit.log
# Specify the path for concurrent audit logging.
#SecAuditLogStorageDir c:\inetpub\log\
# -- Miscellaneous -----------------------------------------------------------
# Use the most commonly used application/x-www-form-urlencoded parameter
# separator. There's probably only one application somewhere that uses
# something else so don't expect to change this value.
#
SecArgumentSeparator &
# Settle on version 0 (zero) cookies, as that is what most applications
# use. Using an incorrect cookie version may open your installation to
# evasion attacks (against the rules that examine named cookies).
#
SecCookieFormat 0
# Specify your Unicode Code Point.
# This mapping is used by the t:urlDecodeUni transformation function
# to properly map encoded data to your language. Properly setting
# these directives helps to reduce false positives and negatives.
#
#SecUnicodeCodePage 20127
#SecUnicodeMapFile unicode.mapping

View File

@ -0,0 +1,428 @@
# ---------------------------------------------------------------
# Core ModSecurity Rule Set ver.2.2.6
# Copyright (C) 2006-2012 Trustwave All rights reserved.
#
# The OWASP ModSecurity Core Rule Set is distributed under
# Apache Software License (ASL) version 2
# Please see the enclosed LICENCE file for full details.
# ---------------------------------------------------------------
#
# -- [[ Recommended Base Configuration ]] -------------------------------------------------
#
# The configuration directives/settings in this file are used to control
# the OWASP ModSecurity CRS. These settings do **NOT** configure the main
# ModSecurity settings such as:
#
# - SecRuleEngine
# - SecRequestBodyAccess
# - SecAuditEngine
# - SecDebugLog
#
# You should use the modsecurity.conf-recommended file that comes with the
# ModSecurity source code archive.
#
# Ref: http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-recommended
#
#
# -- [[ Rule Version ]] -------------------------------------------------------------------
#
# Rule version data is added to the "Producer" line of Section H of the Audit log:
#
# - Producer: ModSecurity for Apache/2.7.0-rc1 (http://www.modsecurity.org/); OWASP_CRS/2.2.4.
#
# Ref: https://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual#SecComponentSignature
#
SecComponentSignature "OWASP_CRS/2.2.6"
#
# -- [[ Modes of Operation: Self-Contained vs. Collaborative Detection ]] -----------------
#
# Each detection rule uses the "block" action which will inherit the SecDefaultAction
# specified below. Your settings here will determine which mode of operation you use.
#
# -- [[ Self-Contained Mode ]] --
# Rules inherit the "deny" disruptive action. The first rule that matches will block.
#
# -- [[ Collaborative Detection Mode ]] --
# This is a "delayed blocking" mode of operation where each matching rule will inherit
# the "pass" action and will only contribute to anomaly scores. Transactional blocking
# can be applied
#
# -- [[ Alert Logging Control ]] --
# You have three options -
#
# - To log to both the Apache error_log and ModSecurity audit_log file use: "log"
# - To log *only* to the ModSecurity audit_log file use: "nolog,auditlog"
# - To log *only* to the Apache error_log file use: "log,noauditlog"
#
# Ref: http://blog.spiderlabs.com/2010/11/advanced-topic-of-the-week-traditional-vs-anomaly-scoring-detection-modes.html
# Ref: https://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual#SecDefaultAction
#
SecDefaultAction "phase:1,deny,log"
#
# -- [[ Collaborative Detection Severity Levels ]] ----------------------------------------
#
# These are the default scoring points for each severity level. You may
# adjust these to you liking. These settings will be used in macro expansion
# in the rules to increment the anomaly scores when rules match.
#
# These are the default Severity ratings (with anomaly scores) of the individual rules -
#
# - 2: Critical - Anomaly Score of 5.
# Is the highest severity level possible without correlation. It is
# normally generated by the web attack rules (40 level files).
# - 3: Error - Anomaly Score of 4.
# Is generated mostly from outbound leakage rules (50 level files).
# - 4: Warning - Anomaly Score of 3.
# Is generated by malicious client rules (35 level files).
# - 5: Notice - Anomaly Score of 2.
# Is generated by the Protocol policy and anomaly files.
#
SecAction \
"id:'900001', \
phase:1, \
t:none, \
setvar:tx.critical_anomaly_score=5, \
setvar:tx.error_anomaly_score=4, \
setvar:tx.warning_anomaly_score=3, \
setvar:tx.notice_anomaly_score=2, \
nolog, \
pass"
#
# -- [[ Collaborative Detection Scoring Threshold Levels ]] ------------------------------
#
# These variables are used in macro expansion in the 49 inbound blocking and 59
# outbound blocking files.
#
# **MUST HAVE** ModSecurity v2.5.12 or higher to use macro expansion in numeric
# operators. If you have an earlier version, edit the 49/59 files directly to
# set the appropriate anomaly score levels.
#
# You should set the score to the proper threshold you would prefer. If set to "5"
# it will work similarly to previous Mod CRS rules and will create an event in the error_log
# file if there are any rules that match. If you would like to lessen the number of events
# generated in the error_log file, you should increase the anomaly score threshold to
# something like "20". This would only generate an event in the error_log file if
# there are multiple lower severity rule matches or if any 1 higher severity item matches.
#
SecAction \
"id:'900002', \
phase:1, \
t:none, \
setvar:tx.inbound_anomaly_score_level=5, \
nolog, \
pass"
SecAction \
"id:'900003', \
phase:1, \
t:none, \
setvar:tx.outbound_anomaly_score_level=4, \
nolog, \
pass"
#
# -- [[ Collaborative Detection Blocking ]] -----------------------------------------------
#
# This is a collaborative detection mode where each rule will increment an overall
# anomaly score for the transaction. The scores are then evaluated in the following files:
#
# Inbound anomaly score - checked in the modsecurity_crs_49_inbound_blocking.conf file
# Outbound anomaly score - checked in the modsecurity_crs_59_outbound_blocking.conf file
#
# If you want to use anomaly scoring mode, then uncomment this line.
#
#SecAction \
"id:'900004', \
phase:1, \
t:none, \
setvar:tx.anomaly_score_blocking=on, \
nolog, \
pass"
#
# -- [[ GeoIP Database ]] -----------------------------------------------------------------
#
# There are some rulesets that need to inspect the GEO data of the REMOTE_ADDR data.
#
# You must first download the MaxMind GeoIP Lite City DB -
#
# http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
#
# You then need to define the proper path for the SecGeoLookupDb directive
#
# Ref: http://blog.spiderlabs.com/2010/10/detecting-malice-with-modsecurity-geolocation-data.html
# Ref: http://blog.spiderlabs.com/2010/11/detecting-malice-with-modsecurity-ip-forensics.html
#
#SecGeoLookupDb /opt/modsecurity/lib/GeoLiteCity.dat
#
# -- [[ Regression Testing Mode ]] --------------------------------------------------------
#
# If you are going to run the regression testing mode, you should uncomment the
# following rule. It will enable DetectionOnly mode for the SecRuleEngine and
# will enable Response Header tagging so that the client testing script can see
# which rule IDs have matched.
#
# You must specify the your source IP address where you will be running the tests
# from.
#
#SecRule REMOTE_ADDR "@ipMatch 192.168.1.100" \
"id:'900005', \
phase:1, \
t:none, \
ctl:ruleEngine=DetectionOnly, \
setvar:tx.regression_testing=1, \
nolog, \
pass"
#
# -- [[ HTTP Policy Settings ]] ----------------------------------------------------------
#
# Set the following policy settings here and they will be propagated to the 23 rules
# file (modsecurity_common_23_request_limits.conf) by using macro expansion.
# If you run into false positives, you can adjust the settings here.
#
# Only the max number of args is uncommented by default as there are a high rate
# of false positives. Uncomment the items you wish to set.
#
#
# -- Maximum number of arguments in request limited
SecAction \
"id:'900006', \
phase:1, \
t:none, \
setvar:tx.max_num_args=255, \
nolog, \
pass"
#
# -- Limit argument name length
#SecAction \
"id:'900007', \
phase:1, \
t:none, \
setvar:tx.arg_name_length=100, \
nolog, \
pass"
#
# -- Limit value name length
#SecAction \
"id:'900008', \
phase:1, \
t:none, \
setvar:tx.arg_length=400, \
nolog, \
pass"
#
# -- Limit arguments total length
#SecAction \
"id:'900009', \
phase:1, \
t:none, \
setvar:tx.total_arg_length=64000, \
nolog, \
pass"
#
# -- Individual file size is limited
#SecAction \
"id:'900010', \
phase:1, \
t:none, \
setvar:tx.max_file_size=1048576, \
nolog, \
pass"
#
# -- Combined file size is limited
#SecAction \
"id:'900011', \
phase:1, \
t:none, \
setvar:tx.combined_file_sizes=1048576, \
nolog, \
pass"
#
# Set the following policy settings here and they will be propagated to the 30 rules
# file (modsecurity_crs_30_http_policy.conf) by using macro expansion.
# If you run into false positves, you can adjust the settings here.
#
SecAction \
"id:'900012', \
phase:1, \
t:none, \
setvar:'tx.allowed_methods=GET HEAD POST OPTIONS', \
setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded|multipart/form-data|text/xml|application/xml|application/x-amf|application/json', \
setvar:'tx.allowed_http_versions=HTTP/0.9 HTTP/1.0 HTTP/1.1', \
setvar:'tx.restricted_extensions=.asa/ .asax/ .ascx/ .axd/ .backup/ .bak/ .bat/ .cdx/ .cer/ .cfg/ .cmd/ .com/ .config/ .conf/ .cs/ .csproj/ .csr/ .dat/ .db/ .dbf/ .dll/ .dos/ .htr/ .htw/ .ida/ .idc/ .idq/ .inc/ .ini/ .key/ .licx/ .lnk/ .log/ .mdb/ .old/ .pass/ .pdb/ .pol/ .printer/ .pwd/ .resources/ .resx/ .sql/ .sys/ .vb/ .vbs/ .vbproj/ .vsdisco/ .webinfo/ .xsd/ .xsx/', \
setvar:'tx.restricted_headers=/Proxy-Connection/ /Lock-Token/ /Content-Range/ /Translate/ /via/ /if/', \
nolog, \
pass"
#
# -- [[ Content Security Policy (CSP) Settings ]] -----------------------------------------
#
# The purpose of these settings is to send CSP response headers to
# Mozilla FireFox users so that you can enforce how dynamic content
# is used. CSP usage helps to prevent XSS attacks against your users.
#
# Reference Link:
#
# https://developer.mozilla.org/en/Security/CSP
#
# Uncomment this SecAction line if you want use CSP enforcement.
# You need to set the appropriate directives and settings for your site/domain and
# and activate the CSP file in the experimental_rules directory.
#
# Ref: http://blog.spiderlabs.com/2011/04/modsecurity-advanced-topic-of-the-week-integrating-content-security-policy-csp.html
#
#SecAction \
"id:'900013', \
phase:1, \
t:none, \
setvar:tx.csp_report_only=1, \
setvar:tx.csp_report_uri=/csp_violation_report, \
setenv:'csp_policy=allow \'self\'; img-src *.yoursite.com; media-src *.yoursite.com; style-src *.yoursite.com; frame-ancestors *.yoursite.com; script-src *.yoursite.com; report-uri %{tx.csp_report_uri}', \
nolog, \
pass"
#
# -- [[ Brute Force Protection ]] ---------------------------------------------------------
#
# If you are using the Brute Force Protection rule set, then uncomment the following
# lines and set the following variables:
# - Protected URLs: resources to protect (e.g. login pages) - set to your login page
# - Burst Time Slice Interval: time interval window to monitor for bursts
# - Request Threshold: request # threshold to trigger a burst
# - Block Period: temporary block timeout
#
#SecAction \
"id:'900014', \
phase:1, \
t:none, \
setvar:'tx.brute_force_protected_urls=/login.jsp /partner_login.php', \
setvar:'tx.brute_force_burst_time_slice=60', \
setvar:'tx.brute_force_counter_threshold=10', \
setvar:'tx.brute_force_block_timeout=300', \
nolog, \
pass"
#
# -- [[ DoS Protection ]] ----------------------------------------------------------------
#
# If you are using the DoS Protection rule set, then uncomment the following
# lines and set the following variables:
# - Burst Time Slice Interval: time interval window to monitor for bursts
# - Request Threshold: request # threshold to trigger a burst
# - Block Period: temporary block timeout
#
#SecAction \
"id:'900015', \
phase:1, \
t:none, \
setvar:'tx.dos_burst_time_slice=60', \
setvar:'tx.dos_counter_threshold=100', \
setvar:'tx.dos_block_timeout=600', \
nolog, \
pass"
#
# -- [[ Check UTF enconding ]] -----------------------------------------------------------
#
# We only want to apply this check if UTF-8 encoding is actually used by the site, otherwise
# it will result in false positives.
#
# Uncomment this line if your site uses UTF8 encoding
#SecAction \
"id:'900016', \
phase:1, \
t:none, \
setvar:tx.crs_validate_utf8_encoding=1, \
nolog, \
pass"
#
# -- [[ Enable XML Body Parsing ]] -------------------------------------------------------
#
# The rules in this file will trigger the XML parser upon an XML request
#
# Initiate XML Processor in case of xml content-type
#
SecRule REQUEST_HEADERS:Content-Type "text/xml" \
"id:'900017', \
phase:1, \
t:none,t:lowercase, \
nolog, \
pass, \
chain"
SecRule REQBODY_PROCESSOR "!@streq XML" \
"ctl:requestBodyProcessor=XML"
#
# -- [[ Global and IP Collections ]] -----------------------------------------------------
#
# Create both Global and IP collections for rules to use
# There are some CRS rules that assume that these two collections
# have already been initiated.
#
SecRule REQUEST_HEADERS:User-Agent "^(.*)$" \
"id:'900018', \
phase:1, \
t:none,t:sha1,t:hexEncode, \
setvar:tx.ua_hash=%{matched_var}, \
nolog, \
pass"
SecRule REQUEST_HEADERS:x-forwarded-for "^\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b" \
"id:'900019', \
phase:1, \
t:none, \
capture, \
setvar:tx.real_ip=%{tx.1}, \
nolog, \
pass"
SecRule &TX:REAL_IP "!@eq 0" \
"id:'900020', \
phase:1, \
t:none, \
initcol:global=global, \
initcol:ip=%{tx.real_ip}_%{tx.ua_hash}, \
nolog, \
pass"
SecRule &TX:REAL_IP "@eq 0" \
"id:'900021', \
phase:1, \
t:none, \
initcol:global=global, \
initcol:ip=%{remote_addr}_%{tx.ua_hash}, \
nolog, \
pass"

View File

@ -0,0 +1,3 @@
Include modsecurity.conf
Include modsecurity_crs_10_setup.conf
Include owasp_crs\base_rules\*.conf

View File

@ -1,8 +1,23 @@
bin_SCRIPTS = mlogc-batch-load.pl
bin_PROGRAMS = mlogc
mlogc_SOURCES = mlogc.c
mlogc_CPPFLAGS = @APR_CPPFLAGS@ @PCRE_CPPFLAGS@ @CURL_CPPFLAGS@ \
-I$(top_srcdir)/apache2
mlogc_CFLAGS = @APR_CFLAGS@ @PCRE_CFLAGS@ @CURL_CFLAGS@
mlogc_LDFLAGS = @APR_LDFLAGS@ @PCRE_LDFLAGS@ @CURL_LDFLAGS@
mlogc_LDADD = @APR_LDADD@ @PCRE_LDADD@ @CURL_LDADD@
mlogc_CPPFLAGS = @APR_CPPFLAGS@ \
@PCRE_CPPFLAGS@ \
@CURL_CPPFLAGS@ \
-I$(top_srcdir)/apache2
mlogc_CFLAGS = @APR_CFLAGS@ \
@CURL_CFLAGS@ \
@PCRE_CFLAGS@
mlogc_LDFLAGS = @APR_LDFLAGS@ \
@CURL_LDFLAGS@ \
@PCRE_LDFLAGS@
mlogc_LDADD = @APR_LDADD@ \
@CURL_LDADD@ \
@PCRE_LDADD@

View File

@ -14,7 +14,7 @@ CURL = %CURL%
LIBS = $(BASE)\lib\libapr-1.lib \
$(BASE)\lib\libaprutil-1.lib \
$(PCRE)\pcre.lib \
$(CURL)\libcurl_imp.lib \
$(CURL)\lib\libcurl_imp.lib \
wsock32.lib
###########################################################################

View File

@ -1,7 +0,0 @@
ngx_addon_name=ngx_http_modsecurity
CORE_MODULES="$CORE_MODULES ngx_pool_context_module"
HTTP_AUX_FILTER_MODULES="ngx_http_modsecurity $HTTP_AUX_FILTER_MODULES"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_modsecurity.c $ngx_addon_dir/apr_bucket_nginx.c $ngx_addon_dir/ngx_pool_context.c"
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_addon_dir/apr_bucket_nginx.h $ngx_addon_dir/ngx_pool_context.h"
CORE_LIBS="$CORE_LIBS $ngx_addon_dir/../../standalone/.libs/standalone.a -L/usr/local/apr/lib -lapr-1 -L/usr/local/apr/lib -laprutil-1 -lpcre -lxml2 -lz -lm -ldl "
CORE_INCS="$CORE_INCS $ngx_addon_dir $ngx_addon_dir/../../standalone $ngx_addon_dir/../../apache2 /usr/include/libxml2 /usr/local/apache2/include /usr/local/apr/include/apr-1 /usr/local/apr/include/apr-1"

View File

@ -0,0 +1,44 @@
#!/bin/sh
CFLAGS="$CFLAGS \
@APR_CFLAGS@ \
@APU_CFLAGS@ \
@APXS_CFLAGS@ \
@LIBXML2_CFLAGS@ \
@LUA_CFLAGS@ \
@MODSEC_EXTRA_CFLAGS@ \
@PCRE_CFLAGS@"
CORE_LIBS="$CORE_LIBS \
@APR_LINKLD@ \
@APU_LINKLD@ \
@APXS_CFLAGS@ \
@CURL_LDADD@ \
@LIBXML2_LDADD@ \
@LUA_LDADD@ \
@PCRE_LDADD@ \
@APXS_LIBS@"
ngx_addon_name=ngx_http_modsecurity
CORE_MODULES="$CORE_MODULES ngx_pool_context_module"
HTTP_AUX_FILTER_MODULES="ngx_http_modsecurity $HTTP_AUX_FILTER_MODULES"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
$ngx_addon_dir/ngx_http_modsecurity.c \
$ngx_addon_dir/apr_bucket_nginx.c \
$ngx_addon_dir/ngx_pool_context.c"
NGX_ADDON_DEPS="$NGX_ADDON_DEPS \
$ngx_addon_dir/apr_bucket_nginx.h \
$ngx_addon_dir/ngx_pool_context.h"
CORE_LIBS="$ngx_addon_dir/../../standalone/.libs/standalone.a $CORE_LIBS"
CORE_INCS="$CORE_INCS \
$ngx_addon_dir \
$ngx_addon_dir/../../standalone \
$ngx_addon_dir/../../apache2"

View File

@ -615,7 +615,7 @@ ngx_http_modsecurity_load_headers_out(ngx_http_request_t *r)
}
ngx_snprintf(content_type, content_type_len,
"%V; charset=%V",
"%V; charset=%V\0",
&r->headers_out.content_type,
&r->headers_out.charset);
@ -652,7 +652,7 @@ ngx_http_modsecurity_load_headers_out(ngx_http_request_t *r)
buf = ngx_cpymem(buf, h[i].value.data, h[i].value.len);
*buf++ = '\0';
apr_table_setn(req->headers_out, key, value);
apr_table_addn(req->headers_out, key, value);
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"ModSecurity: load headers out: \"%V: %V\"",
&h[i].key, &h[i].value);

View File

@ -1,94 +1,139 @@
pkglibdir = $(prefix)/lib
pkglib_LTLIBRARIES = standalone.la
#include_HEADERS = re.h modsecurity.h msc_logging.h msc_multipart.h \
# msc_parsers.h msc_pcre.h msc_util.h msc_xml.h \
# persist_dbm.h apache2.h msc_geo.h acmp.h utf8tables.h \
# msc_lua.h msc_release.h
standalone_la_SOURCES = ../apache2/mod_security2.c \
../apache2/apache2_config.c ../apache2/apache2_io.c ../apache2/apache2_util.c \
../apache2/re.c ../apache2/re_operators.c ../apache2/re_actions.c ../apache2/re_tfns.c \
../apache2/re_variables.c ../apache2/msc_logging.c ../apache2/msc_xml.c \
../apache2/msc_multipart.c ../apache2/modsecurity.c ../apache2/msc_parsers.c \
../apache2/msc_util.c ../apache2/msc_pcre.c ../apache2/persist_dbm.c ../apache2/msc_reqbody.c \
../apache2/msc_geo.c ../apache2/msc_gsb.c ../apache2/msc_unicode.c \
../apache2/acmp.c ../apache2/msc_lua.c ../apache2/msc_release.c \
../apache2/msc_crypt.c ../apache2/msc_tree.c ../apache2/libinjection/libinjection_sqli.c \
api.c buckets.c \
config.c filters.c \
hooks.c \
regex.c server.c
standalone_la_SOURCES = ../apache2/acmp.c \
../apache2/apache2_config.c \
../apache2/apache2_io.c \
../apache2/apache2_util.c \
../apache2/libinjection/libinjection_sqli.c \
../apache2/mod_security2.c \
../apache2/modsecurity.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_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
standalone_la_CFLAGS = @APXS_CFLAGS@ @APR_CFLAGS@ @APU_CFLAGS@ \
@PCRE_CFLAGS@ @LIBXML2_CFLAGS@ @LUA_CFLAGS@ @MODSEC_EXTRA_CFLAGS@ @CURL_CFLAGS@ -DVERSION_NGINX
standalone_la_CPPFLAGS = @APR_CPPFLAGS@ @PCRE_CPPFLAGS@ @LIBXML2_CPPFLAGS@
standalone_la_LIBADD = @APR_LDADD@ @APU_LDADD@ @PCRE_LDADD@ @LIBXML2_LDADD@ @LUA_LDADD@
# 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@
standalone_la_CPPFLAGS = @APR_CPPFLAGS@ \
@LIBXML2_CPPFLAGS@ \
@PCRE_CPPFLAGS@
standalone_la_LIBADD = @APR_LDADD@ \
@APU_LDADD@ \
@LIBXML2_LDADD@ \
@LUA_LDADD@ \
@PCRE_LDADD@
if AIX
standalone_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if HPUX
standalone_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if MACOSX
standalone_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if SOLARIS
standalone_la_LDFLAGS = -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if LINUX
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if FREEBSD
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if OPENBSD
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
if NETBSD
standalone_la_LDFLAGS = -no-undefined -module -avoid-version \
@APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
endif
standalone_INCS = `echo "@LIBXML2_CFLAGS@ @LUA_CFLAGS@" | sed -n 's/ *-I *\([^ ]*\) /\1 /gp'` \
@APXS_INCLUDEDIR@ @APR_INCLUDEDIR@ @APU_INCLUDEDIR@
standalone_LIBS = @APR_LINKLD@ @APU_LINKLD@ @APXS_LDFLAGS@ \
@PCRE_LDADD@ @LIBXML2_LDADD@ @LUA_LDADD@
install-exec-hook: $(pkglib_LTLIBRARIES)
@echo "Creating Nginx config file..."; \
rm -f ../nginx/modsecurity/config; \
echo "ngx_addon_name=ngx_http_modsecurity" >> ../nginx/modsecurity/config; \
echo "CORE_MODULES=\"\$$CORE_MODULES ngx_pool_context_module\"" >> ../nginx/modsecurity/config; \
echo "HTTP_AUX_FILTER_MODULES=\"ngx_http_modsecurity \$$HTTP_AUX_FILTER_MODULES\"" >> ../nginx/modsecurity/config; \
echo "NGX_ADDON_SRCS=\"\$$NGX_ADDON_SRCS \$$ngx_addon_dir/ngx_http_modsecurity.c \$$ngx_addon_dir/apr_bucket_nginx.c \$$ngx_addon_dir/ngx_pool_context.c\"" >> ../nginx/modsecurity/config;\
echo "NGX_ADDON_DEPS=\"\$$NGX_ADDON_DEPS \$$ngx_addon_dir/apr_bucket_nginx.h \$$ngx_addon_dir/ngx_pool_context.h \$$ngx_addon_dir/ngx_http_modsecurity.c \$$ngx_addon_dir/apr_bucket_nginx.c \$$ngx_addon_dir/ngx_pool_context.c\"" >> ../nginx/modsecurity/config; \
echo "CORE_LIBS=\"\$$CORE_LIBS \$$ngx_addon_dir/../../standalone/.libs/standalone.a $(standalone_LIBS) \"" >> ../nginx/modsecurity/config; \
echo "CORE_INCS=\"\$$CORE_INCS \$$ngx_addon_dir \$$ngx_addon_dir/../../standalone \$$ngx_addon_dir/../../apache2 $(standalone_INCS)\"" >> ../nginx/modsecurity/config; \
echo "Removing unused static libraries..."; \
for m in $(pkglib_LTLIBRARIES); do \
base=`echo $$m | sed 's/\..*//'`; \
rm -f $(DESTDIR)$(pkglibdir)/$$base.*a; \
cp -p $(DESTDIR)$(pkglibdir)/$$base.so $(APXS_MODULES); \
done

File diff suppressed because it is too large Load Diff

View File

@ -1,37 +1,56 @@
check_PROGRAMS = msc_test
msc_test_SOURCES = msc_test.c \
$(top_srcdir)/apache2/re.c \
$(top_srcdir)/apache2/re_operators.c \
$(top_srcdir)/apache2/re_actions.c \
$(top_srcdir)/apache2/re_tfns.c \
$(top_srcdir)/apache2/re_variables.c \
$(top_srcdir)/apache2/msc_logging.c \
$(top_srcdir)/apache2/msc_xml.c \
$(top_srcdir)/apache2/msc_multipart.c \
$(top_srcdir)/apache2/modsecurity.c \
$(top_srcdir)/apache2/msc_parsers.c \
$(top_srcdir)/apache2/msc_util.c \
$(top_srcdir)/apache2/msc_pcre.c \
$(top_srcdir)/apache2/msc_unicode.c \
$(top_srcdir)/apache2/persist_dbm.c \
$(top_srcdir)/apache2/msc_reqbody.c \
$(top_srcdir)/apache2/msc_crypt.c \
$(top_srcdir)/apache2/msc_tree.c \
$(top_srcdir)/apache2/msc_geo.c \
$(top_srcdir)/apache2/msc_gsb.c \
$(top_srcdir)/apache2/acmp.c \
$(top_srcdir)/apache2/msc_lua.c \
$(top_srcdir)/apache2/msc_release.c \
$(top_srcdir)/apache2/libinjection/libinjection_sqli.c
msc_test_CFLAGS = @APXS_CFLAGS@ @APR_CFLAGS@ @APU_CFLAGS@ \
@PCRE_CFLAGS@ @LIBXML2_CFLAGS@ @MODSEC_EXTRA_CFLAGS@ @LUA_CFLAGS@
$(top_srcdir)/apache2/acmp.c \
$(top_srcdir)/apache2/libinjection/libinjection_sqli.c \
$(top_srcdir)/apache2/modsecurity.c \
$(top_srcdir)/apache2/msc_crypt.c \
$(top_srcdir)/apache2/msc_geo.c \
$(top_srcdir)/apache2/msc_gsb.c \
$(top_srcdir)/apache2/msc_logging.c \
$(top_srcdir)/apache2/msc_lua.c \
$(top_srcdir)/apache2/msc_multipart.c \
$(top_srcdir)/apache2/msc_parsers.c \
$(top_srcdir)/apache2/msc_pcre.c \
$(top_srcdir)/apache2/msc_release.c \
$(top_srcdir)/apache2/msc_reqbody.c \
$(top_srcdir)/apache2/msc_tree.c \
$(top_srcdir)/apache2/msc_unicode.c \
$(top_srcdir)/apache2/msc_util.c \
$(top_srcdir)/apache2/msc_xml.c \
$(top_srcdir)/apache2/persist_dbm.c \
$(top_srcdir)/apache2/re_actions.c \
$(top_srcdir)/apache2/re.c \
$(top_srcdir)/apache2/re_operators.c \
$(top_srcdir)/apache2/re_tfns.c \
$(top_srcdir)/apache2/re_variables.c \
$(top_srcdir)/standalone/regex.c \
$(top_srcdir)/standalone/server.c
msc_test_CFLAGS = @APR_CFLAGS@ \
@APU_CFLAGS@ \
@APXS_CFLAGS@ \
@LIBXML2_CFLAGS@ \
@LUA_CFLAGS@ \
@MODSEC_EXTRA_CFLAGS@ \
@PCRE_CFLAGS@
msc_test_CPPFLAGS = -I$(top_srcdir)/apache2 \
@APR_CPPFLAGS@ @LIBXML2_CPPFLAGS@ \
@PCRE_CPPFLAGS@
msc_test_LDADD = @APR_LDADD@ @APU_LDADD@ \
@PCRE_LDADD@ @LIBXML2_LDADD@ @LUA_LDADD@
msc_test_LDFLAGS = @APR_LDFLAGS@ @APU_LDFLAGS@ @APXS_LDFLAGS@ \
@PCRE_LDFLAGS@ @LIBXML2_LDFLAGS@ @LUA_LDFLAGS@
@APR_CPPFLAGS@ \
@LIBXML2_CPPFLAGS@ \
@PCRE_CPPFLAGS@
msc_test_LDADD = @APR_LDADD@ \
@APU_LDADD@ \
@LIBXML2_LDADD@ \
@LUA_LDADD@ \
@PCRE_LDADD@
msc_test_LDFLAGS = @APR_LDFLAGS@ \
@APU_LDFLAGS@ \
@APXS_LDFLAGS@ \
@LIBXML2_LDFLAGS@ \
@LUA_LDFLAGS@ \
@PCRE_LDFLAGS@
check_SCRIPTS = run-unit-tests.pl
TESTS = $(check_SCRIPTS)

View File

@ -178,7 +178,8 @@ void msr_log_warn(modsec_rec *msr, const char *text, ...) {
va_end(ap);
}
const char *ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip) {
#define ap_get_remote_host(a, b, c, d) test_ap_get_remote_host(a, b, c, d)
const char *test_ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip) {
return "FAKE-REMOTE-HOST";
}
@ -186,11 +187,13 @@ char *get_env_var(request_rec *r, char *name) {
return "FAKE-ENV-VAR";
}
apr_status_t unixd_set_global_mutex_perms(apr_global_mutex_t *gmutex) {
#define unixd_set_global_mutex_perms(a) my_unixd_set_global_mutex_perms(a)
apr_status_t my_unixd_set_global_mutex_perms(apr_global_mutex_t *gmutex) {
return APR_SUCCESS;
}
apr_status_t unixd_set_proc_mutex_perms(apr_proc_mutex_t *pmutex) {
#define unixd_set_proc_mutex_perms(a) my_unixd_set_proc_mutex_perms(a)
apr_status_t my_unixd_set_proc_mutex_perms(apr_proc_mutex_t *pmutex) {
return APR_SUCCESS;
}

View File

@ -10,11 +10,11 @@
SecRequestBodyAccess On
SecDebugLog $ENV{DEBUG_LOG}
SecDebugLogLevel 9
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500005
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500005, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500006
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" \\,id:500007
"phase:2,deny,id:12345"
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" "id:500007, \\
phase:3:,deny"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*Successfully validated payload against Schema/s, 1 ],
@ -59,11 +59,11 @@
SecDebugLogLevel 9
SecAuditEngine RelevantOnly
SecAuditLog "$ENV{AUDIT_LOG}"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500008
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500008, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500009
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" \\,id:500010
"phase:2,deny,log,auditlog,id:12345"
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" "id:500010 \\
phase:2,deny,log,auditlog,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*'badval' is not a valid value of the local atomic type.*Schema validation failed/s, 1 ],
@ -108,11 +108,11 @@
SecDebugLogLevel 9
SecAuditEngine RelevantOnly
SecAuditLog "$ENV{AUDIT_LOG}"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500011
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500011, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500012
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" \\,id:500013
"phase:2,deny,id:12345"
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" "id:500013 \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*element is not expected/s, 1 ],
@ -158,11 +158,11 @@
SecDebugLogLevel 9
SecAuditEngine RelevantOnly
SecAuditLog "$ENV{AUDIT_LOG}"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500014
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500014, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500015
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" \\,id:500016
"phase:2,deny,id:12345"
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope.xsd" "id:500016, \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 0\).*XML parser error.*validation failed because content is not well formed/s, 1 ],
@ -208,11 +208,11 @@
SecDebugLogLevel 9
SecAuditEngine RelevantOnly
SecAuditLog "$ENV{AUDIT_LOG}"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500017
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500017 \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500018
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope-bad.xsd" \\,id:500019
"phase:2,deny,id:12345"
SecRule XML "\@validateSchema $ENV{CONF_DIR}/SoapEnvelope-bad.xsd" "id:500019 \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*Failed to parse the XML resource.*Failed to load Schema/s, 1 ],
@ -256,11 +256,11 @@
SecRequestBodyAccess On
SecDebugLog $ENV{DEBUG_LOG}
SecDebugLogLevel 9
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500020
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500020, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500021
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope.dtd" \\,id:500022
"phase:2,deny,id:12345"
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope.dtd" "id:500022, \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*Successfully validated payload against DTD/s, 1 ],
@ -299,11 +299,11 @@
SecRequestBodyAccess On
SecDebugLog $ENV{DEBUG_LOG}
SecDebugLogLevel 9
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500023
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500023, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500024
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope.dtd" \\,id:500025
"phase:2,deny,id:12345"
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope.dtd" "id:500025, \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*content does not follow the DTD/s, 1 ],
@ -342,11 +342,11 @@
SecRequestBodyAccess On
SecDebugLog $ENV{DEBUG_LOG}
SecDebugLogLevel 9
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500026
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500026, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500027
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope.dtd" \\,id:500028
"phase:2,deny,id:12345"
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope.dtd" "id:500028, \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 0\).*XML parser error.*validation failed because content is not well formed/s, 1 ],
@ -385,11 +385,11 @@
SecRequestBodyAccess On
SecDebugLog $ENV{DEBUG_LOG}
SecDebugLogLevel 9
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" \\,id:500029
"phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQUEST_HEADERS:Content-Type "^text/xml\$" "id:500029, \\
phase:1,t:none,t:lowercase,nolog,pass,ctl:requestBodyProcessor=XML"
SecRule REQBODY_PROCESSOR "!^XML\$" nolog,pass,skipAfter:12345,id:500030
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope-bad.dtd" \\,id:500031
"phase:2,deny,id:12345"
SecRule XML "\@validateDTD $ENV{CONF_DIR}/SoapEnvelope-bad.dtd" "id:500031 \\
phase:2,deny,id:12345"
),
match_log => {
debug => [ qr/XML: Initialising parser.*XML: Parsing complete \(well_formed 1\).*Target value: "\[XML document tree\]".*Failed to load DTD/s, 1 ],

View File

@ -16,9 +16,7 @@
<IfDefine !NOMODSEC>
# TODO: Need to have these configurable
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so
LoadModule security2_module @APXS_LIBEXECDIR@/mod_security2.so
LoadModule security2_module @MSC_BASE_DIR@/apache2/.libs/mod_security2.so
</IfDefine>
ServerName localhost
@ -28,10 +26,24 @@ CoreDumpDirectory @MSC_REGRESSION_SERVERROOT_DIR@/tmp
LogLevel debug
ErrorLog @MSC_REGRESSION_LOGS_DIR@/error.log
<IfVersion >= 2.4>
LoadModule access_compat_module /usr/lib/apache2/modules/mod_access_compat.so
LoadModule mpm_worker_module /usr/lib/apache2/modules/mod_mpm_worker.so
</IfVersion>
<IfDefine !CHROOT>
DocumentRoot @MSC_REGRESSION_DOCROOT_DIR@
<Directory "@MSC_REGRESSION_DOCROOT_DIR@">
Options Indexes FollowSymLinks
Options +Indexes +FollowSymLinks
AllowOverride None
<IfVersion >= 2.4>
Allow from all
Satisfy Any
</IfVersion>
<IfVersion < 2.4>
Require all granted
</IfVersion>
</Directory>
</IfDefine>