Adds JSON support on ISS port

The JSON parse is already supported in Nginx and Apache
versions. This patch adds support on the IIS port.
This commit is contained in:
Felipe Zimmerle 2013-12-03 13:41:09 -08:00
parent 0787b45481
commit a95f37196e
7 changed files with 70 additions and 12 deletions

View File

@ -40,7 +40,7 @@ INCLUDES = $(INCLUDES) -I$(LUA)\include -I$(LUA) \
# Yajl/Json is optional
!IF "$(YAJL)" != ""
LIBS = $(LIBS) $(YAJL)\yajl.lib
LIBS = $(LIBS) $(YAJL)\lib\yajl.lib
DEFS=$(DEFS) -DWITH_YAJL
INCLUDES = $(INCLUDES) -I$(YAJL)\include -I$(YAJL) \
!ENDIF

View File

@ -43,7 +43,7 @@ INCLUDES = $(INCLUDES) -I$(LUA)\include -I$(LUA) \
# Yajl/Json is optional
!IF "$(YAJL)" != ""
LIBS = $(LIBS) $(YAJL)\yajl.lib
LIBS = $(LIBS) $(YAJL)\lib\yajl.lib
DEFS=$(DEFS) -DWITH_YAJL
INCLUDES = $(INCLUDES) -I$(YAJL)\include -I$(YAJL) \
!ENDIF

View File

@ -83,7 +83,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;dependencies\build_dir\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;dependencies\build_dir\lloyd-yajl-f4b2b1a\build\yajl-2.0.1\include;</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_IIS</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
@ -93,7 +93,7 @@
<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);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>
<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;dependencies\build_dir\yajl\build\yajl-2.0.1\lib\yajl.lib</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>
@ -103,7 +103,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone;dependencies\build_dir\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;dependencies\build_dir\lloyd-yajl-f4b2b1a\build\yajl-2.0.1\include;</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
@ -113,7 +113,7 @@
<Link>
<ModuleDefinitionFile>mymodule.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;IPHLPAPI.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>
<AdditionalDependencies>kernel32.lib;IPHLPAPI.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;dependencies\build_dir\yajl\build\yajl-2.0.1\lib\yajl.lib;</AdditionalDependencies>
<AdditionalLibraryDirectories>C:\core__\ModSecurity\iis\release\x64</AdditionalLibraryDirectories>
<AdditionalOptions> /LIBPATH:"C:\core__\ModSecurity\iis\release\x64" %(AdditionalOptions)</AdditionalOptions>
</Link>
@ -126,11 +126,11 @@
<ClCompile>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC;VERSION_IIS</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone;dependencies\build_dir\lloyd-yajl-f4b2b1a\build\yajl-2.0.1\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);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>
<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;dependencies\build_dir\yajl\build\yajl-2.0.1\lib\yajl.lib</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>
@ -141,11 +141,11 @@
<ClCompile>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);WIN32;WINNT;inline=APR_INLINE;AP_DECLARE_STATIC</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>dependencies\build_dir\pcre\include;dependencies\build_dir\pcre;dependencies\build_dir\libxml2\include;..\apache2;..\standalone;dependencies\build_dir\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;dependencies\build_dir\lloyd-yajl-f4b2b1a\build\yajl-2.0.1\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<ModuleDefinitionFile>mymodule.def</ModuleDefinitionFile>
<AdditionalDependencies>kernel32.lib;IPHLPAPI.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>
<AdditionalDependencies>kernel32.lib;IPHLPAPI.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;dependencies\build_dir\yajl\build\yajl-2.0.1\lib\yajl.lib;</AdditionalDependencies>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
@ -167,6 +167,7 @@
<ClCompile Include="..\apache2\msc_crypt.c" />
<ClCompile Include="..\apache2\msc_geo.c" />
<ClCompile Include="..\apache2\msc_gsb.c" />
<ClCompile Include="..\apache2\msc_json.c" />
<ClCompile Include="..\apache2\msc_logging.c" />
<ClCompile Include="..\apache2\msc_lua.c" />
<ClCompile Include="..\apache2\msc_multipart.c" />
@ -216,6 +217,7 @@
<ClInclude Include="..\apache2\msc_crypt.h" />
<ClInclude Include="..\apache2\msc_geo.h" />
<ClInclude Include="..\apache2\msc_gsb.h" />
<ClInclude Include="..\apache2\msc_json.h" />
<ClInclude Include="..\apache2\msc_logging.h" />
<ClInclude Include="..\apache2\msc_lua.h" />
<ClInclude Include="..\apache2\msc_multipart.h" />

View File

@ -17,6 +17,7 @@
@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 YAJL=lloyd-yajl-f4b2b1a.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"
@ -73,6 +74,11 @@ echo "b"
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_curl
@cd "%CURRENT_DIR%"
@echo # yajl - %YAJL%
@call dependencies/build_yajl.bat
@if NOT (%ERRORLEVEL%) == (0) goto build_failed_yajl
@cd "%CURRENT_DIR%"
@echo All dependencies were built successfully.
@cd "%CURRENT_DIR%"
@exit /B 0
@ -109,6 +115,10 @@ echo "b"
@echo Failed to setup %CURL%...
@goto failed
:build_failed_yajl
@echo Failed to setup %YAJL%...
@goto failed
:failed
@cd %CURRENT_DIR%
@exit /B 1

View File

@ -15,7 +15,7 @@ set CURRENT_DIR=%cd%
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
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 YAJL=..\iis\%DEPENDENCIES_DIR%\yajl\build\yajl-2.0.1
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
@echo mlogc...
@ -29,7 +29,7 @@ nmake -f Makefile.win APACHE=..\iis\%DEPENDENCIES_DIR%\Apache24 PCRE=..\iis\%DEP
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
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 YAJL=..\iis\%DEPENDENCIES_DIR%\yajl\build\yajl-2.0.1
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd %CURRENT_DIR%

View File

@ -0,0 +1,39 @@
cd "%WORK_DIR%"
@if NOT EXIST "%SOURCE_DIR%\%YAJL%" goto file_not_found_bin
7z.exe x "%SOURCE_DIR%\%YAJL%"
set YAJL_DIR=%YAJL:~0,-4%
move "%YAJL_DIR%" "yajl"
cd "yajl"
mkdir build
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd build
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
nmake
@if NOT (%ERRORLEVEL%) == (0) goto build_failed
cd "%WORK%"
copy /y "%WORK_DIR%\yajl\build\yajl-2.0.1\lib\yajl.dll" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\yajl\build\yajl-2.0.1\lib\yajl.pdb" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\yajl\build\yajl-2.0.1\lib\yajl.lib" "%OUTPUT_DIR%"
copy /y "%WORK_DIR%\yajl\build\yajl-2.0.1\lib\yajl_s.lib" "%OUTPUT_DIR%"
@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

@ -542,6 +542,9 @@
<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="YAJL.DLL" DiskId="1" Guid="F2A09A92-F564-4C93-AB17-5ZZA6FDA3A7C">
<File Id="AYJL.DLL" Name="yajl.dll" Source="Release\amd64\yajl.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>
@ -575,6 +578,9 @@
<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="YAJL.DLL" DiskId="1" Guid="F2A09A92-F564-4CZ3-AB17-5ZZA6FDA3A7C">
<File Id="AYJL.DLL" Name="yajl.dll" Source="Release\x86\yajl.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>
@ -598,6 +604,7 @@
<ComponentRef Id="LIBCURL.DLL" />
<ComponentRef Id="LIBXML2.DLL" />
<ComponentRef Id="LUA5.1.DLL" />
<ComponentRef Id="YAJL.DLL" />
<ComponentRef Id="MLOGC.EXE" />
<ComponentRef Id="MODSECURITYIIS.DLL" />
<ComponentRef Id="PCRE.DLL" />