1
2if TEST_UTILITIES
3export MAYBE_TEST = test
4endif
5
6if EXAMPLES
7export MAYBE_EXAMPLES = examples
8endif
9
10
11SUBDIRS = \
12	others \
13	src \
14	doc \
15	tools \
16	$(MAYBE_EXAMPLES) \
17	$(MAYBE_TEST)
18
19
20
21# make clean
22CLEANFILES =
23
24ACLOCAL_AMFLAGS = -I build
25
26# make maintainer-clean
27MAINTAINERCLEANFILES = \
28	aclocal.m4 \
29	ar-lib \
30	build/libtool.m4 \
31	build/lt~obsolete.m4 \
32	build/ltoptions.m4 \
33	build/ltsugar.m4 \
34	build/ltversion.m4 \
35	coding-style.txt \
36	compile \
37	config.guess \
38	config.sub \
39	configure \
40	cppcheck.txt \
41	depcomp \
42	install-sh \
43	ltmain.sh \
44	Makefile.in \
45	missing \
46	test/modsec-shared-collections \
47	test/modsec-shared-collections-lock \
48	test-suite-drd.log \
49	test-suite-helgrind.log \
50	test-suite-memcheck.log \
51	ylwrap
52
53parser:
54	cat src/parser/seclang-parser.hh | sed "s/return \*new (yyas_<T> ()) T (t)/return *new (yyas_<T> ()) T (std::move((T\&)t))/g"  > src/parser/seclang-parser.hh.fix && mv src/parser/seclang-parser.hh.fix src/parser/seclang-parser.hh
55
56
57
58cppcheck:
59	@cppcheck -U YYSTYPE -U MBEDTLS_MD5_ALT -U MBEDTLS_SHA1_ALT \
60		-D MS_CPPCHECK_DISABLED_FOR_PARSER -U YY_USER_INIT \
61		--suppressions-list=./test/cppcheck_suppressions.txt \
62		--enable=warning,style,performance,portability,unusedFunction,missingInclude \
63		--inconclusive \
64		--template="warning: {file},{line},{severity},{id},{message}" \
65		-I headers -I . -I others -I src -I others/mbedtls -I src/parser \
66		--error-exitcode=1 \
67		-i "src/parser/seclang-parser.cc" -i "src/parser/seclang-scanner.cc" \
68		--force --verbose .
69
70
71check-static: cppcheck
72
73check-style: check-coding-style
74
75check-coding-style:
76	@cpplint.py \
77		$$(find . -name "*.h" -o -name "*.cc" | xargs) 2>&1 \
78 		| egrep -v $$(echo -n "catchall" ; \
79	  		for i in $$(cat test/coding_style_suppressions.txt); do echo -n "|"$$i; done) \
80		| sed 's/^\./warning: ./g' > coding-style.txt
81	-cat coding-style.txt
82
83
84@VALGRIND_CHECK_RULES@
85VALGRIND_SUPPRESSIONS_FILES = valgrind_suppressions.txt
86
87LOG_DRIVER = env $(SHELL) $(top_srcdir)/test/custom-test-driver
88AM_TESTS_ENVIRONMENT=AUTOMAKE_TESTS=true; export AUTOMAKE_TESTS;
89LOG_COMPILER=test/test-suite.sh
90
91# for i in `find test/test-cases -iname *.json`; do echo TESTS+=$i; done
92TESTS=
93TESTS+=test/test-cases/regression/action-allow.json
94TESTS+=test/test-cases/regression/action-block.json
95TESTS+=test/test-cases/regression/action-ctl_request_body_access.json
96TESTS+=test/test-cases/regression/action-ctl_request_body_processor.json
97TESTS+=test/test-cases/regression/action-ctl_request_body_processor_urlencoded.json
98TESTS+=test/test-cases/regression/action-ctl_rule_engine.json
99TESTS+=test/test-cases/regression/action-ctl_rule_remove_by_id.json
100TESTS+=test/test-cases/regression/action-ctl_rule_remove_by_tag.json
101TESTS+=test/test-cases/regression/action-ctl_rule_remove_target_by_id.json
102TESTS+=test/test-cases/regression/action-ctl_rule_remove_target_by_tag.json
103TESTS+=test/test-cases/regression/action-disruptive.json
104TESTS+=test/test-cases/regression/action-exec.json
105TESTS+=test/test-cases/regression/action-id.json
106TESTS+=test/test-cases/regression/action-initcol.json
107TESTS+=test/test-cases/regression/action-msg.json
108TESTS+=test/test-cases/regression/action-setenv.json
109TESTS+=test/test-cases/regression/action-setrsc.json
110TESTS+=test/test-cases/regression/action-setsid.json
111TESTS+=test/test-cases/regression/action-setuid.json
112TESTS+=test/test-cases/regression/actions.json
113TESTS+=test/test-cases/regression/action-skip.json
114TESTS+=test/test-cases/regression/action-tag.json
115TESTS+=test/test-cases/regression/action-tnf-base64.json
116TESTS+=test/test-cases/regression/action-xmlns.json
117TESTS+=test/test-cases/regression/auditlog.json
118TESTS+=test/test-cases/regression/collection-case-insensitive.json
119TESTS+=test/test-cases/regression/collection-lua.json
120TESTS+=test/test-cases/regression/collection-regular_expression_selection.json
121TESTS+=test/test-cases/regression/collection-resource.json
122TESTS+=test/test-cases/regression/collection-tx.json
123TESTS+=test/test-cases/regression/collection-tx-with-macro.json
124TESTS+=test/test-cases/regression/config-body_limits.json
125TESTS+=test/test-cases/regression/config-calling_phases_by_name.json
126TESTS+=test/test-cases/regression/config-include-bad.json
127TESTS+=test/test-cases/regression/config-include.json
128TESTS+=test/test-cases/regression/config-remove_by_id.json
129TESTS+=test/test-cases/regression/config-remove_by_msg.json
130TESTS+=test/test-cases/regression/config-remove_by_tag.json
131TESTS+=test/test-cases/regression/config-response_type.json
132TESTS+=test/test-cases/regression/config-secdefaultaction.json
133TESTS+=test/test-cases/regression/config-secremoterules.json
134TESTS+=test/test-cases/regression/config-update-action-by-id.json
135TESTS+=test/test-cases/regression/config-update-target-by-id.json
136TESTS+=test/test-cases/regression/config-update-target-by-msg.json
137TESTS+=test/test-cases/regression/config-update-target-by-tag.json
138TESTS+=test/test-cases/regression/config-xml_external_entity.json
139TESTS+=test/test-cases/regression/debug_log.json
140TESTS+=test/test-cases/regression/directive-sec_rule_script.json
141TESTS+=test/test-cases/regression/issue-1152.json
142TESTS+=test/test-cases/regression/issue-1528.json
143TESTS+=test/test-cases/regression/issue-1565.json
144TESTS+=test/test-cases/regression/issue-1576.json
145TESTS+=test/test-cases/regression/issue-1591.json
146TESTS+=test/test-cases/regression/issue-1725.json
147TESTS+=test/test-cases/regression/issue-1743.json
148TESTS+=test/test-cases/regression/issue-1785.json
149TESTS+=test/test-cases/regression/issue-1812.json
150TESTS+=test/test-cases/regression/issue-1831.json
151TESTS+=test/test-cases/regression/issue-1844.json
152TESTS+=test/test-cases/regression/issue-1850.json
153TESTS+=test/test-cases/regression/issue-1941.json
154TESTS+=test/test-cases/regression/issue-1943.json
155TESTS+=test/test-cases/regression/issue-1956.json
156TESTS+=test/test-cases/regression/issue-1960.json
157TESTS+=test/test-cases/regression/issue-2099.json
158TESTS+=test/test-cases/regression/issue-2000.json
159TESTS+=test/test-cases/regression/issue-2111.json
160TESTS+=test/test-cases/regression/issue-2196.json
161TESTS+=test/test-cases/regression/issue-2423-msg-in-chain.json
162TESTS+=test/test-cases/regression/issue-2427.json
163TESTS+=test/test-cases/regression/issue-2296.json
164TESTS+=test/test-cases/regression/issue-394.json
165TESTS+=test/test-cases/regression/issue-849.json
166TESTS+=test/test-cases/regression/issue-960.json
167TESTS+=test/test-cases/regression/misc.json
168TESTS+=test/test-cases/regression/misc-variable-under-quotes.json
169TESTS+=test/test-cases/regression/offset-variable.json
170TESTS+=test/test-cases/regression/operator-detectsqli.json
171TESTS+=test/test-cases/regression/operator-detectxss.json
172TESTS+=test/test-cases/regression/operator-fuzzyhash.json
173TESTS+=test/test-cases/regression/operator-inpectFile.json
174TESTS+=test/test-cases/regression/operator-ipMatchFromFile.json
175TESTS+=test/test-cases/regression/operator-pm.json
176TESTS+=test/test-cases/regression/operator-rx.json
177TESTS+=test/test-cases/regression/operator-rxGlobal.json
178TESTS+=test/test-cases/regression/operator-UnconditionalMatch.json
179TESTS+=test/test-cases/regression/operator-validate-byte-range.json
180TESTS+=test/test-cases/regression/operator-verifycc.json
181TESTS+=test/test-cases/regression/operator-verifycpf.json
182TESTS+=test/test-cases/regression/operator-verifyssn.json
183TESTS+=test/test-cases/regression/operator-verifysvnr.json
184TESTS+=test/test-cases/regression/request-body-parser-json.json
185TESTS+=test/test-cases/regression/request-body-parser-multipart-crlf.json
186TESTS+=test/test-cases/regression/request-body-parser-multipart.json
187TESTS+=test/test-cases/regression/request-body-parser-xml.json
188TESTS+=test/test-cases/regression/request-body-parser-xml-validade-dtd.json
189TESTS+=test/test-cases/regression/rule-920120.json
190TESTS+=test/test-cases/regression/rule-920200.json
191TESTS+=test/test-cases/regression/rule-920274.json
192TESTS+=test/test-cases/regression/secaction.json
193TESTS+=test/test-cases/regression/secargumentslimit.json
194TESTS+=test/test-cases/regression/sec_component_signature.json
195TESTS+=test/test-cases/regression/secmarker.json
196TESTS+=test/test-cases/regression/secruleengine.json
197TESTS+=test/test-cases/regression/transformation-none.json
198TESTS+=test/test-cases/regression/transformations.json
199TESTS+=test/test-cases/regression/variable-ARGS_COMBINED_SIZE.json
200TESTS+=test/test-cases/regression/variable-ARGS_GET.json
201TESTS+=test/test-cases/regression/variable-ARGS_GET_NAMES.json
202TESTS+=test/test-cases/regression/variable-ARGS.json
203TESTS+=test/test-cases/regression/variable-ARGS_NAMES.json
204TESTS+=test/test-cases/regression/variable-ARGS_POST.json
205TESTS+=test/test-cases/regression/variable-ARGS_POST_NAMES.json
206TESTS+=test/test-cases/regression/variable-AUTH_TYPE.json
207TESTS+=test/test-cases/regression/variable-DURATION.json
208TESTS+=test/test-cases/regression/variable-ENV.json
209TESTS+=test/test-cases/regression/variable-FILES_COMBINED_SIZE.json
210TESTS+=test/test-cases/regression/variable-FILES.json
211TESTS+=test/test-cases/regression/variable-FILES_NAMES.json
212TESTS+=test/test-cases/regression/variable-FILES_SIZES.json
213TESTS+=test/test-cases/regression/variable-FULL_REQUEST.json
214TESTS+=test/test-cases/regression/variable-FULL_REQUEST_LENGTH.json
215TESTS+=test/test-cases/regression/variable-GEO.json
216TESTS+=test/test-cases/regression/variable-HIGHEST_SEVERITY.json
217TESTS+=test/test-cases/regression/variable-INBOUND_DATA_ERROR.json
218TESTS+=test/test-cases/regression/variable-MATCHED_VAR.json
219TESTS+=test/test-cases/regression/variable-MATCHED_VAR_NAME.json
220TESTS+=test/test-cases/regression/variable-MATCHED_VARS.json
221TESTS+=test/test-cases/regression/variable-MATCHED_VARS_NAMES.json
222TESTS+=test/test-cases/regression/variable-MODSEC_BUILD.json
223TESTS+=test/test-cases/regression/variable-MULTIPART_CRLF_LF_LINES.json
224TESTS+=test/test-cases/regression/variable-MULTIPART_FILENAME.json
225TESTS+=test/test-cases/regression/variable-MULTIPART_INVALID_HEADER_FOLDING.json
226TESTS+=test/test-cases/regression/variable-MULTIPART_NAME.json
227TESTS+=test/test-cases/regression/variable-MULTIPART_STRICT_ERROR.json
228TESTS+=test/test-cases/regression/variable-MULTIPART_UNMATCHED_BOUNDARY.json
229TESTS+=test/test-cases/regression/variable-OUTBOUND_DATA_ERROR.json
230TESTS+=test/test-cases/regression/variable-PATH_INFO.json
231TESTS+=test/test-cases/regression/variable-QUERY_STRING.json
232TESTS+=test/test-cases/regression/variable-REMOTE_ADDR.json
233TESTS+=test/test-cases/regression/variable-REMOTE_HOST.json
234TESTS+=test/test-cases/regression/variable-REMOTE_PORT.json
235TESTS+=test/test-cases/regression/variable-REMOTE_USER.json
236TESTS+=test/test-cases/regression/variable-REQBODY_PROCESSOR_ERROR.json
237TESTS+=test/test-cases/regression/variable-REQBODY_PROCESSOR.json
238TESTS+=test/test-cases/regression/variable-REQUEST_BASENAME.json
239TESTS+=test/test-cases/regression/variable-REQUEST_BODY.json
240TESTS+=test/test-cases/regression/variable-REQUEST_BODY_LENGTH.json
241TESTS+=test/test-cases/regression/variable-REQUEST_COOKIES.json
242TESTS+=test/test-cases/regression/variable-REQUEST_COOKIES_NAMES.json
243TESTS+=test/test-cases/regression/variable-REQUEST_FILENAME.json
244TESTS+=test/test-cases/regression/variable-REQUEST_HEADERS.json
245TESTS+=test/test-cases/regression/variable-REQUEST_HEADERS_NAMES.json
246TESTS+=test/test-cases/regression/variable-REQUEST_LINE.json
247TESTS+=test/test-cases/regression/variable-REQUEST_METHOD.json
248TESTS+=test/test-cases/regression/variable-REQUEST_PROTOCOL.json
249TESTS+=test/test-cases/regression/variable-REQUEST_URI.json
250TESTS+=test/test-cases/regression/variable-REQUEST_URI_RAW.json
251TESTS+=test/test-cases/regression/variable-RESPONSE_BODY.json
252TESTS+=test/test-cases/regression/variable-RESPONSE_CONTENT_LENGTH.json
253TESTS+=test/test-cases/regression/variable-RESPONSE_CONTENT_TYPE.json
254TESTS+=test/test-cases/regression/variable-RESPONSE_HEADERS.json
255TESTS+=test/test-cases/regression/variable-RESPONSE_HEADERS_NAMES.json
256TESTS+=test/test-cases/regression/variable-RESPONSE_PROTOCOL.json
257TESTS+=test/test-cases/regression/variable-RULE.json
258TESTS+=test/test-cases/regression/variable-SERVER_ADDR.json
259TESTS+=test/test-cases/regression/variable-SERVER_NAME.json
260TESTS+=test/test-cases/regression/variable-SERVER_PORT.json
261TESTS+=test/test-cases/regression/variable-SESSIONID.json
262TESTS+=test/test-cases/regression/variable-STATUS.json
263TESTS+=test/test-cases/regression/variable-TIME_DAY.json
264TESTS+=test/test-cases/regression/variable-TIME_EPOCH.json
265TESTS+=test/test-cases/regression/variable-TIME_HOUR.json
266TESTS+=test/test-cases/regression/variable-TIME.json
267TESTS+=test/test-cases/regression/variable-TIME_MIN.json
268TESTS+=test/test-cases/regression/variable-TIME_MON.json
269TESTS+=test/test-cases/regression/variable-TIME_SEC.json
270TESTS+=test/test-cases/regression/variable-TIME_WDAY.json
271TESTS+=test/test-cases/regression/variable-TIME_YEAR.json
272TESTS+=test/test-cases/regression/variable-TX.json
273TESTS+=test/test-cases/regression/variable-UNIQUE_ID.json
274TESTS+=test/test-cases/regression/variable-URLENCODED_ERROR.json
275TESTS+=test/test-cases/regression/variable-USERID.json
276TESTS+=test/test-cases/regression/variable-variation-count.json
277TESTS+=test/test-cases/regression/variable-variation-exclusion.json
278TESTS+=test/test-cases/regression/variable-WEBAPPID.json
279TESTS+=test/test-cases/regression/variable-WEBSERVER_ERROR_LOG.json
280TESTS+=test/test-cases/secrules-language-tests/operators/beginsWith.json
281TESTS+=test/test-cases/secrules-language-tests/operators/contains.json
282TESTS+=test/test-cases/secrules-language-tests/operators/containsWord.json
283TESTS+=test/test-cases/secrules-language-tests/operators/detectSQLi.json
284TESTS+=test/test-cases/secrules-language-tests/operators/detectXSS.json
285TESTS+=test/test-cases/secrules-language-tests/operators/endsWith.json
286TESTS+=test/test-cases/secrules-language-tests/operators/eq.json
287TESTS+=test/test-cases/secrules-language-tests/operators/ge.json
288TESTS+=test/test-cases/secrules-language-tests/operators/geoLookup.json
289TESTS+=test/test-cases/secrules-language-tests/operators/gt.json
290TESTS+=test/test-cases/secrules-language-tests/operators/ipMatch.json
291TESTS+=test/test-cases/secrules-language-tests/operators/le.json
292TESTS+=test/test-cases/secrules-language-tests/operators/lt.json
293TESTS+=test/test-cases/secrules-language-tests/operators/noMatch.json
294TESTS+=test/test-cases/secrules-language-tests/operators/pmFromFile.json
295TESTS+=test/test-cases/secrules-language-tests/operators/pm.json
296TESTS+=test/test-cases/secrules-language-tests/operators/rx.json
297TESTS+=test/test-cases/secrules-language-tests/operators/rxGlobal.json
298TESTS+=test/test-cases/secrules-language-tests/operators/streq.json
299TESTS+=test/test-cases/secrules-language-tests/operators/strmatch.json
300TESTS+=test/test-cases/secrules-language-tests/operators/unconditionalMatch.json
301TESTS+=test/test-cases/secrules-language-tests/operators/validateByteRange.json
302TESTS+=test/test-cases/secrules-language-tests/operators/validateUrlEncoding.json
303TESTS+=test/test-cases/secrules-language-tests/operators/validateUtf8Encoding.json
304TESTS+=test/test-cases/secrules-language-tests/operators/verifyCC.json
305TESTS+=test/test-cases/secrules-language-tests/operators/verifycpf.json
306TESTS+=test/test-cases/secrules-language-tests/operators/verifyssn.json
307TESTS+=test/test-cases/secrules-language-tests/operators/verifysvnr.json
308TESTS+=test/test-cases/secrules-language-tests/operators/within.json
309TESTS+=test/test-cases/secrules-language-tests/transformations/base64DecodeExt.json
310TESTS+=test/test-cases/secrules-language-tests/transformations/base64Decode.json
311TESTS+=test/test-cases/secrules-language-tests/transformations/base64Encode.json
312TESTS+=test/test-cases/secrules-language-tests/transformations/cmdLine.json
313TESTS+=test/test-cases/secrules-language-tests/transformations/compressWhitespace.json
314TESTS+=test/test-cases/secrules-language-tests/transformations/cssDecode.json
315TESTS+=test/test-cases/secrules-language-tests/transformations/escapeSeqDecode.json
316TESTS+=test/test-cases/secrules-language-tests/transformations/hexDecode.json
317TESTS+=test/test-cases/secrules-language-tests/transformations/hexEncode.json
318TESTS+=test/test-cases/secrules-language-tests/transformations/htmlEntityDecode.json
319TESTS+=test/test-cases/secrules-language-tests/transformations/jsDecode.json
320TESTS+=test/test-cases/secrules-language-tests/transformations/length.json
321TESTS+=test/test-cases/secrules-language-tests/transformations/lowercase.json
322TESTS+=test/test-cases/secrules-language-tests/transformations/md5.json
323TESTS+=test/test-cases/secrules-language-tests/transformations/normalisePath.json
324TESTS+=test/test-cases/secrules-language-tests/transformations/normalisePathWin.json
325TESTS+=test/test-cases/secrules-language-tests/transformations/parityEven7bit.json
326TESTS+=test/test-cases/secrules-language-tests/transformations/parityOdd7bit.json
327TESTS+=test/test-cases/secrules-language-tests/transformations/parityZero7bit.json
328TESTS+=test/test-cases/secrules-language-tests/transformations/removeCommentsChar.json
329TESTS+=test/test-cases/secrules-language-tests/transformations/removeComments.json
330TESTS+=test/test-cases/secrules-language-tests/transformations/removeNulls.json
331TESTS+=test/test-cases/secrules-language-tests/transformations/removeWhitespace.json
332TESTS+=test/test-cases/secrules-language-tests/transformations/replaceComments.json
333TESTS+=test/test-cases/secrules-language-tests/transformations/replaceNulls.json
334TESTS+=test/test-cases/secrules-language-tests/transformations/sha1.json
335TESTS+=test/test-cases/secrules-language-tests/transformations/sqlHexDecode.json
336TESTS+=test/test-cases/secrules-language-tests/transformations/trim.json
337TESTS+=test/test-cases/secrules-language-tests/transformations/trimLeft.json
338TESTS+=test/test-cases/secrules-language-tests/transformations/trimRight.json
339TESTS+=test/test-cases/secrules-language-tests/transformations/urlDecode.json
340TESTS+=test/test-cases/secrules-language-tests/transformations/urlDecodeUni.json
341TESTS+=test/test-cases/secrules-language-tests/transformations/urlEncode.json
342TESTS+=test/test-cases/secrules-language-tests/transformations/utf8toUnicode.json
343
344
345pkgconfigdir = $(libdir)/pkgconfig
346pkgconfig_DATA = modsecurity.pc
347EXTRA_DIST = modsecurity.pc.in \
348             modsecurity.conf-recommended \
349             unicode.mapping
350
351