@@ -91,3 +91,111 @@ jobs:
9191 echo "FAIL" 
9292 exit 1 
9393 fi 
94+ 
95+ build-windows :
96+  runs-on : windows-2022 
97+  defaults :
98+  run :
99+  shell : msys2 {0} 
100+  steps :
101+  - name : Set up MSVC 
102+  uses : ilammy/msvc-dev-cmd@v1 
103+  - name : Set up msys 
104+  uses : msys2/setup-msys2@v2 
105+  with :
106+  msystem : UCRT64 
107+  path-type : inherit 
108+  - name : Get Nginx source 
109+  uses : actions/checkout@v4 
110+  with :
111+  repository : nginx/nginx 
112+  path : nginx 
113+  fetch-depth : 1 
114+  - name : Get Nginx tests 
115+  uses : actions/checkout@v4 
116+  with :
117+  repository : nginx/nginx-tests 
118+  path : nginx/test 
119+  fetch-depth : 1 
120+  - name : Set up third-party libraries 
121+  working-directory : nginx 
122+  run : | 
123+  mkdir objs 
124+  mkdir objs/lib 
125+  cd objs/lib 
126+  wget -q -O - https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz | tar -xzf - 
127+  wget -q -O - https://www.zlib.net/fossils/zlib-1.3.tar.gz | tar -xzf - 
128+  wget -q -O - https://www.openssl.org/source/openssl-3.0.13.tar.gz | tar -xzf - 
129+ name : Get libModSecurity source 
130+  uses : actions/checkout@v4 
131+  with :
132+  repository : owasp-modsecurity/ModSecurity 
133+  submodules : true 
134+  path : nginx/objs/lib/ModSecurity 
135+  fetch-depth : 1 
136+  - name : Setup Conan 
137+  shell : cmd 
138+  run : | 
139+  pip3 install conan --upgrade 
140+  conan profile detect 
141+ name : Build libModSecurity 
142+  working-directory : nginx/objs/lib/ModSecurity 
143+  shell : cmd 
144+  run : | 
145+  vcbuild.bat 
146+ name : Get ModSecurity-nginx source code 
147+  uses : actions/checkout@v4 
148+  with :
149+  path : nginx/objs/lib/ModSecurity-nginx 
150+  - name : Copy ModSecurity-nginx tests to nginx/test 
151+  working-directory : nginx/test 
152+  run : | 
153+  cp ../objs/lib/ModSecurity-nginx/tests/* . 
154+ name : Remove /usr/bin/link conflicting with MSVC link.exe 
155+  run : | 
156+  set -ex 
157+  which link 
158+  rm /usr/bin/link 
159+ name : Build nginx w/ModSecurity-nginx module 
160+  working-directory : nginx 
161+  run : | 
162+  : # Windows native version of Perl is required by nginx build 
163+  export PATH=/c/Strawberry/perl/bin:$PATH 
164+  : # Set env variables to point to libModSecurity v3 include & lib directories 
165+  export MODSECURITY_INC=objs/lib/ModSecurity/headers 
166+  export MODSECURITY_LIB=objs/lib/ModSecurity/build/win32/build/Release 
167+  : # Copy libModSecurity.dll to objs dir (to be able to run nginx later) 
168+  cp $MODSECURITY_LIB/libModSecurity.dll objs 
169+  : # Configure nginx build w/ModSecurity-nginx module 
170+  auto/configure \ 
171+  --with-cc=cl \ 
172+  --with-debug \ 
173+  --prefix= \ 
174+  --conf-path=conf/nginx.conf \ 
175+  --pid-path=logs/nginx.pid \ 
176+  --http-log-path=logs/access.log \ 
177+  --error-log-path=logs/error.log \ 
178+  --sbin-path=nginx.exe \ 
179+  --http-client-body-temp-path=temp/client_body_temp \ 
180+  --http-proxy-temp-path=temp/proxy_temp \ 
181+  --http-fastcgi-temp-path=temp/fastcgi_temp \ 
182+  --http-scgi-temp-path=temp/scgi_temp \ 
183+  --http-uwsgi-temp-path=temp/uwsgi_temp \ 
184+  --with-cc-opt=-DFD_SETSIZE=1024 \ 
185+  --with-pcre=objs/lib/pcre2-10.39 \ 
186+  --with-zlib=objs/lib/zlib-1.3 \ 
187+  --with-openssl=objs/lib/openssl-3.0.13 \ 
188+  --with-openssl-opt=no-asm \ 
189+  --with-http_ssl_module \ 
190+  --with-http_v2_module \ 
191+  --with-http_auth_request_module \ 
192+  --add-module=objs/lib/ModSecurity-nginx 
193+  nmake 
194+ name : Run ModSecurity-nginx tests 
195+  working-directory : nginx/test 
196+  shell : cmd  #  tests need to run on a "windows" shell
197+  run : | 
198+  md temp 
199+  set TEMP=temp 
200+  set TEST_NGINX_BINARY=..\objs\nginx.exe 
201+  prove modsecurity*.t 
0 commit comments