mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-11-15 17:12:14 +03:00
fix: testing error
This commit is contained in:
31
.github/workflows/test-ci-windows.yml
vendored
31
.github/workflows/test-ci-windows.yml
vendored
@@ -13,6 +13,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
arch: [x86, x64]
|
arch: [x86, x64]
|
||||||
|
config: [Release, RelWithDebInfo]
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
|
||||||
# For Caching
|
# For Caching
|
||||||
@@ -39,6 +40,10 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "APACHE_ROOT=C:\tools\Apache24" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
echo "APACHE_ROOT=C:\tools\Apache24" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
|
||||||
|
# Original Make file contain comment build script for ssdeep,
|
||||||
|
# which is rely on MSYS2, so we need to install MSYS2.
|
||||||
|
# If it's enabled, it need msys2 library for ssdeep.
|
||||||
|
|
||||||
# - name: Setup MSYS2
|
# - name: Setup MSYS2
|
||||||
# uses: msys2/setup-msys2@v2
|
# uses: msys2/setup-msys2@v2
|
||||||
# with:
|
# with:
|
||||||
@@ -103,7 +108,7 @@ jobs:
|
|||||||
-A $cmakeArch `
|
-A $cmakeArch `
|
||||||
-DWITH_LUA=ON `
|
-DWITH_LUA=ON `
|
||||||
-DWITH_YAJL=ON `
|
-DWITH_YAJL=ON `
|
||||||
-S IIS -B "iis\build-${{ matrix.arch }}"
|
-S IIS -B "iis\build"
|
||||||
|
|
||||||
# -DSSDEEP_ROOT="${{ github.workspace }}\ssdeep-install-${{ matrix.arch }}" `
|
# -DSSDEEP_ROOT="${{ github.workspace }}\ssdeep-install-${{ matrix.arch }}" `
|
||||||
# -DWITH_SSDEEP=ON `
|
# -DWITH_SSDEEP=ON `
|
||||||
@@ -111,17 +116,20 @@ jobs:
|
|||||||
- name: Build IIS Module
|
- name: Build IIS Module
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
cmake --build "iis\build-${{ matrix.arch }}" --config Release
|
cmake --build "iis\build" --config ${{ matrix.config }}
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: iis-module-${{ matrix.arch }}
|
name: iis-module-${{ matrix.arch }}-${{ matrix.config }}
|
||||||
path: iis/build-${{ matrix.arch }}/Release/
|
path: iis/build/${{ matrix.config }}/
|
||||||
|
|
||||||
package:
|
package:
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
config: [Release, RelWithDebInfo]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -129,13 +137,13 @@ jobs:
|
|||||||
- name: Download x64 artifacts
|
- name: Download x64 artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: iis-module-x64
|
name: iis-module-x64-${{ matrix.config }}
|
||||||
path: iis/release/amd64/
|
path: iis/release/amd64/
|
||||||
|
|
||||||
- name: Download x86 artifacts
|
- name: Download x86 artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: iis-module-x86
|
name: iis-module-x86-${{ matrix.config }}
|
||||||
path: iis/release/x86/
|
path: iis/release/x86/
|
||||||
|
|
||||||
- name: Generate MSI files
|
- name: Generate MSI files
|
||||||
@@ -150,12 +158,15 @@ jobs:
|
|||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: modsecurityiis-installers
|
name: modsecurityiis-installers-${{ matrix.config }}
|
||||||
path: iis/modsecurityiis.msi
|
path: iis/modsecurityiis.msi
|
||||||
|
|
||||||
test:
|
test:
|
||||||
needs: package
|
needs: package
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
config: [Release, RelWithDebInfo]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -163,8 +174,8 @@ jobs:
|
|||||||
- name: Download MSI files
|
- name: Download MSI files
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: modsecurityiis-installers
|
name: modsecurityiis-installers-${{ matrix.config }}
|
||||||
path: ${{ github.workspace }}\
|
path: ${{ github.workspace }}/
|
||||||
|
|
||||||
- name: Install MSI
|
- name: Install MSI
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
@@ -318,5 +329,5 @@ jobs:
|
|||||||
$goBinPath = Join-Path $env:USERPROFILE "go\bin"
|
$goBinPath = Join-Path $env:USERPROFILE "go\bin"
|
||||||
}
|
}
|
||||||
|
|
||||||
& "$goBinPath\go-ftw.exe" run -d $testRuleDir --cloud -e 920380-1 --show-failures-only
|
& "$goBinPath\go-ftw.exe" run -d $testRuleDir --cloud -e "920100-2$|920100-4$|920100-8$|920100-12$|920272-5$|920290-1$|920620-1$|920380-1$" --show-failures-only
|
||||||
|
|
||||||
|
|||||||
@@ -175,8 +175,6 @@ endif()
|
|||||||
# Compile definitions to match the original Makefile.win
|
# Compile definitions to match the original Makefile.win
|
||||||
set(MODSECURITY_VERSION_FLAG "VERSION_IIS") # Define the version flag string
|
set(MODSECURITY_VERSION_FLAG "VERSION_IIS") # Define the version flag string
|
||||||
target_compile_definitions(${IIS_MODULE_NAME} PRIVATE
|
target_compile_definitions(${IIS_MODULE_NAME} PRIVATE
|
||||||
WIN32
|
|
||||||
WINNT
|
|
||||||
inline=APR_INLINE
|
inline=APR_INLINE
|
||||||
AP_DECLARE_STATIC
|
AP_DECLARE_STATIC
|
||||||
WITH_CURL
|
WITH_CURL
|
||||||
@@ -198,11 +196,11 @@ option(WITH_YAJL "Enable YAJL support" OFF)
|
|||||||
if(WITH_YAJL)
|
if(WITH_YAJL)
|
||||||
# Manually find YAJL if config.cmake is not available (e.g., from vcpkg)
|
# Manually find YAJL if config.cmake is not available (e.g., from vcpkg)
|
||||||
find_path(YAJL_INCLUDE_DIR yajl/yajl_common.h
|
find_path(YAJL_INCLUDE_DIR yajl/yajl_common.h
|
||||||
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/build-${ARCHITECTURE}/vcpkg_installed/${ARCHITECTURE}-windows/include"
|
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/build/vcpkg_installed/${ARCHITECTURE}-windows/include"
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
find_library(YAJL_LIBRARY NAMES yajl
|
find_library(YAJL_LIBRARY NAMES yajl
|
||||||
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/build-${ARCHITECTURE}/vcpkg_installed/${ARCHITECTURE}-windows/lib"
|
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/build/vcpkg_installed/${ARCHITECTURE}-windows/lib"
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -281,17 +279,10 @@ endif()
|
|||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_compile_options(${IIS_MODULE_NAME} PRIVATE
|
target_compile_options(${IIS_MODULE_NAME} PRIVATE
|
||||||
/nologo
|
/nologo
|
||||||
/O2
|
|
||||||
/W3
|
/W3
|
||||||
/wd4244
|
/wd4244
|
||||||
/wd4018
|
/wd4018
|
||||||
/MD
|
|
||||||
/Zi
|
|
||||||
)
|
|
||||||
|
|
||||||
# Linker options to match the original Makefile.win
|
|
||||||
set_target_properties(${IIS_MODULE_NAME} PROPERTIES
|
|
||||||
LINK_FLAGS "/DEBUG /OPT:REF /OPT:ICF"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,6 @@
|
|||||||
#undef inline
|
#undef inline
|
||||||
#define inline inline
|
#define inline inline
|
||||||
|
|
||||||
#include "winsock2.h"
|
|
||||||
|
|
||||||
// IIS7 Server API header file
|
// IIS7 Server API header file
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <sal.h>
|
#include <sal.h>
|
||||||
@@ -32,6 +30,8 @@
|
|||||||
#include "api.h"
|
#include "api.h"
|
||||||
#include "moduleconfig.h"
|
#include "moduleconfig.h"
|
||||||
|
|
||||||
|
#include "winsock2.h"
|
||||||
|
|
||||||
|
|
||||||
class REQUEST_STORED_CONTEXT : public IHttpStoredContext
|
class REQUEST_STORED_CONTEXT : public IHttpStoredContext
|
||||||
{
|
{
|
||||||
@@ -90,19 +90,26 @@ class REQUEST_STORED_CONTEXT : public IHttpStoredContext
|
|||||||
|
|
||||||
char *GetIpAddr(apr_pool_t *pool, PSOCKADDR pAddr)
|
char *GetIpAddr(apr_pool_t *pool, PSOCKADDR pAddr)
|
||||||
{
|
{
|
||||||
if (pAddr == nullptr) {
|
const char *format = "%15[0-9.]:%5[0-9]";
|
||||||
return apr_pstrdup(pool, "");
|
char ip[16] = { 0 }; // ip4 addresses have max len 15
|
||||||
}
|
char port[6] = { 0 }; // port numbers are 16bit, ie 5 digits max
|
||||||
|
|
||||||
DWORD addrSize = pAddr->sa_family == AF_INET ? sizeof(SOCKADDR_IN) : sizeof(SOCKADDR_IN6);
|
DWORD len = 50;
|
||||||
auto buf = (char*)apr_palloc(pool, NI_MAXHOST);
|
char *buf = (char *)apr_palloc(pool, len);
|
||||||
if (buf == nullptr) {
|
|
||||||
return apr_pstrdup(pool, "");
|
|
||||||
}
|
|
||||||
buf[0] = '\0';
|
|
||||||
|
|
||||||
if (GetNameInfo(pAddr, addrSize, buf, NI_MAXHOST, nullptr, 0, NI_NUMERICHOST) != 0) {
|
if(buf == NULL)
|
||||||
return apr_pstrdup(pool, "");
|
return "";
|
||||||
|
|
||||||
|
buf[0] = 0;
|
||||||
|
|
||||||
|
WSAAddressToString(pAddr, sizeof(SOCKADDR), NULL, buf, &len);
|
||||||
|
|
||||||
|
// test for IPV4 with port on the end
|
||||||
|
if (sscanf(buf, format, ip, port) == 2) {
|
||||||
|
// IPV4 but with port - remove the port
|
||||||
|
char* input = ":";
|
||||||
|
char* ipv4 = strtok(buf, input);
|
||||||
|
return ipv4;
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
@@ -111,45 +118,35 @@ char *GetIpAddr(apr_pool_t *pool, PSOCKADDR pAddr)
|
|||||||
apr_sockaddr_t *CopySockAddr(apr_pool_t *pool, PSOCKADDR pAddr)
|
apr_sockaddr_t *CopySockAddr(apr_pool_t *pool, PSOCKADDR pAddr)
|
||||||
{
|
{
|
||||||
apr_sockaddr_t *addr = (apr_sockaddr_t *)apr_palloc(pool, sizeof(apr_sockaddr_t));
|
apr_sockaddr_t *addr = (apr_sockaddr_t *)apr_palloc(pool, sizeof(apr_sockaddr_t));
|
||||||
|
int adrlen = 16, iplen = 4;
|
||||||
|
|
||||||
addr->pool = pool;
|
if(pAddr->sa_family == AF_INET6)
|
||||||
addr->hostname = "unknown";
|
{
|
||||||
addr->servname = addr->hostname;
|
adrlen = 46;
|
||||||
addr->family = AF_UNSPEC;
|
iplen = 16;
|
||||||
addr->addr_str_len = 0;
|
|
||||||
addr->ipaddr_len = 0;
|
|
||||||
addr->ipaddr_ptr = nullptr;
|
|
||||||
addr->salen = 0;
|
|
||||||
addr->port = 0;
|
|
||||||
|
|
||||||
if (pAddr == nullptr) {
|
|
||||||
return addr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addr->addr_str_len = adrlen;
|
||||||
addr->family = pAddr->sa_family;
|
addr->family = pAddr->sa_family;
|
||||||
|
|
||||||
if (pAddr->sa_family == AF_INET) {
|
addr->hostname = "unknown";
|
||||||
auto sin = (SOCKADDR_IN *)pAddr;
|
#ifdef WIN32
|
||||||
addr->addr_str_len = INET_ADDRSTRLEN;
|
addr->ipaddr_len = sizeof(IN_ADDR);
|
||||||
|
#else
|
||||||
addr->ipaddr_len = sizeof(struct in_addr);
|
addr->ipaddr_len = sizeof(struct in_addr);
|
||||||
|
#endif
|
||||||
addr->ipaddr_ptr = &addr->sa.sin.sin_addr;
|
addr->ipaddr_ptr = &addr->sa.sin.sin_addr;
|
||||||
addr->sa.sin.sin_family = AF_INET;
|
addr->pool = pool;
|
||||||
addr->sa.sin.sin_port = sin->sin_port; /* keep network byte order */
|
addr->port = 80;
|
||||||
/* copy address */
|
#ifdef WIN32
|
||||||
memcpy(&addr->sa.sin.sin_addr, &sin->sin_addr, sizeof(struct in_addr));
|
memcpy(&addr->sa.sin.sin_addr.S_un.S_addr, pAddr->sa_data, iplen);
|
||||||
|
#else
|
||||||
|
memcpy(&addr->sa.sin.sin_addr.s_addr, pAddr->sa_data, iplen);
|
||||||
|
#endif
|
||||||
|
addr->sa.sin.sin_family = pAddr->sa_family;
|
||||||
|
addr->sa.sin.sin_port = 80;
|
||||||
addr->salen = sizeof(addr->sa);
|
addr->salen = sizeof(addr->sa);
|
||||||
addr->port = ntohs(sin->sin_port);
|
addr->servname = addr->hostname;
|
||||||
} else if (pAddr->sa_family == AF_INET6) {
|
|
||||||
auto sin6 = (SOCKADDR_IN6 *)pAddr;
|
|
||||||
addr->addr_str_len = INET6_ADDRSTRLEN;
|
|
||||||
addr->ipaddr_len = sizeof(struct in6_addr);
|
|
||||||
addr->ipaddr_ptr = &addr->sa.sin6.sin6_addr;
|
|
||||||
addr->sa.sin6.sin6_family = AF_INET6;
|
|
||||||
addr->sa.sin6.sin6_port = sin6->sin6_port;
|
|
||||||
memcpy(&addr->sa.sin6.sin6_addr, &sin6->sin6_addr, sizeof(struct in6_addr));
|
|
||||||
addr->salen = sizeof(addr->sa);
|
|
||||||
addr->port = ntohs(sin6->sin6_port);
|
|
||||||
}
|
|
||||||
|
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user