Blame tests/regression/target/00-targets.t

Packit Service 384592
### Test basic targets
Packit Service 384592
Packit Service 384592
# ARGS
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS "val1" "phase:2,log,pass,id:500189"
Packit Service 384592
		SecRule ARGS "val2" "phase:2,log,pass,id:500190"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "val1" at ARGS.*Pattern match "val2" at ARGS/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(QUERY_STRING\): name "arg1", value "val1".*Adding request argument \(QUERY_STRING\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS "val1" "phase:2,log,pass,id:500191"
Packit Service 384592
		SecRule ARGS "val2" "phase:2,log,pass,id:500192"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "val1" at ARGS.*Pattern match "val2" at ARGS/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(BODY\): name "arg1", value "val1".*Adding request argument \(BODY\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
# ARGS_COMBINED_SIZE
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_COMBINED_SIZE (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecRule ARGS_COMBINED_SIZE "\@eq 16" "phase:2,log,pass,id:500193"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Operator EQ matched 16 at ARGS_COMBINED_SIZE\./s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_COMBINED_SIZE (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecRule ARGS_COMBINED_SIZE "\@eq 16" "phase:2,log,pass,id:500194"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Operator EQ matched 16 at ARGS_COMBINED_SIZE\./s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
# ARGS_NAMES
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_NAMES (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_NAMES "arg1" "phase:2,log,pass,id:500195"
Packit Service 384592
		SecRule ARGS_NAMES "arg2" "phase:2,log,pass,id:500196"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "arg1" at ARGS.*Pattern match "arg2" at ARGS/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(QUERY_STRING\): name "arg1", value "val1".*Adding request argument \(QUERY_STRING\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_NAMES (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_NAMES "arg1" "phase:2,log,pass,id:500197"
Packit Service 384592
		SecRule ARGS_NAMES "arg2" "phase:2,log,pass,id:500198"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "arg1" at ARGS_NAMES.*Pattern match "arg2" at ARGS_NAMES/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(BODY\): name "arg1", value "val1".*Adding request argument \(BODY\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
# ARGS_GET
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_GET (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_GET "val1" "phase:2,log,pass,id:500199"
Packit Service 384592
		SecRule ARGS_GET "val2" "phase:2,log,pass,id:500200"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "val1" at ARGS_GET.*Pattern match "val2" at ARGS_GET/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(QUERY_STRING\): name "arg1", value "val1".*Adding request argument \(QUERY_STRING\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_GET (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_GET "val1" "phase:2,log,pass,id:500201"
Packit Service 384592
		SecRule ARGS_GET "val2" "phase:2,log,pass,id:500202"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		-error => [ qr/Pattern match/, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(BODY\): name "arg1", value "val1".*Adding request argument \(BODY\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
# ARGS_GET_NAMES
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_GET_NAMES (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_GET_NAMES "arg1" "phase:2,log,pass,id:500203"
Packit Service 384592
		SecRule ARGS_GET_NAMES "arg2" "phase:2,log,pass,id:500204"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "arg1" at ARGS_GET.*Pattern match "arg2" at ARGS_GET/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(QUERY_STRING\): name "arg1", value "val1".*Adding request argument \(QUERY_STRING\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_GET_NAMES (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_GET_NAMES "arg1" "phase:2,log,pass,id:500205"
Packit Service 384592
		SecRule ARGS_GET_NAMES "arg2" "phase:2,log,pass,id:500206"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		-error => [ qr/Pattern match/, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(BODY\): name "arg1", value "val1".*Adding request argument \(BODY\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
# ARGS_POST
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_POST (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_POST "val1" "phase:2,log,pass,id:500207"
Packit Service 384592
		SecRule ARGS_POST "val2" "phase:2,log,pass,id:500208"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		-error => [ qr/Pattern match/, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(QUERY_STRING\): name "arg1", value "val1".*Adding request argument \(QUERY_STRING\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
        [
Packit Service 384592
                "Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
        ],
Packit Service 384592
        "a=b",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_POST (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_POST "val1" "phase:2,log,pass,id:500209"
Packit Service 384592
		SecRule ARGS_POST "val2" "phase:2,log,pass,id:500210"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "val1" at ARGS_POST.*Pattern match "val2" at ARGS_POST/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(BODY\): name "arg1", value "val1".*Adding request argument \(BODY\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
# ARGS_POST_NAMES
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_POST_NAMES (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_POST_NAMES "arg1" "phase:2,log,pass,id:500211"
Packit Service 384592
		SecRule ARGS_POST_NAMES "arg2" "phase:2,log,pass,id:500212"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		-error => [ qr/Pattern match/, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(QUERY_STRING\): name "arg1", value "val1".*Adding request argument \(QUERY_STRING\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "ARGS_POST_NAMES (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecResponseBodyMimeType null
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule ARGS_POST_NAMES "arg1" "phase:2,log,pass,id:500213"
Packit Service 384592
		SecRule ARGS_POST_NAMES "arg2" "phase:2,log,pass,id:500214"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "arg1" at ARGS_POST.*Pattern match "arg2" at ARGS_POST/s, 1 ],
Packit Service 384592
		debug => [ qr/Adding request argument \(BODY\): name "arg1", value "val1".*Adding request argument \(BODY\): name "arg2", value "val2"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
# FULL_REQUEST
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "FULL_REQUEST (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule FULL_REQUEST "arg1" "phase:4,log,pass,id:500211"
Packit Service 384592
		SecRule FULL_REQUEST "arg2" "phase:4,log,pass,id:500212"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "arg1" at FULL_REQUEST.*Pattern match "arg2" at FULL_REQUEST/s, 1 ],
Packit Service 384592
		debug => [ qr/against FULL_REQUEST.*Target value: "GET \/test.txt\?arg1=val1\&arg2=val2 HTTP\/1.1\\n\\nTE: deflate,gzip;q=0.3\\nConnection: TE, close\\nHost: localhost:[0-9]+\\nUser-Agent: ModSecurity Regression Tests\/1.2.3\\n\\n\\x00"/s, 1],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "FULL_REQUEST (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule FULL_REQUEST "arg1" "phase:4,log,pass,id:500213"
Packit Service 384592
		SecRule FULL_REQUEST "arg2" "phase:4,log,pass,id:500214"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Pattern match "arg1" at FULL_REQUEST.*Pattern match "arg2" at FULL_REQUEST/s, 1 ],
Packit Service 384592
		debug => [ qr/against FULL_REQUEST.*Target value: "POST \/test.txt HTTP\/1.1\\n\\nTE: deflate,gzip;q=0.3\\nConnection: TE, close\\nHost: localhost:[0-9]+\\nUser-Agent: ModSecurity Regression Tests\/1.2.3\\nContent-Type: application\/x-www-form-urlencoded\\nContent-Length: 19\\n\\narg1=val1&arg2=val2\\x00"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
# FULL_REQUEST_LENGTH
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "FULL_REQUEST_LENGTH (get)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule FULL_REQUEST_LENGTH "\@eq 1" "phase:4,log,pass,id:500211"
Packit Service 384592
		SecRule FULL_REQUEST_LENGTH "\@eq 115" "phase:4,log,pass,id:500212"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Operator EQ matched 115 at FULL_REQUEST_LENGTH./s, 1 ],
Packit Service 384592
		debug => [ qr/against FULL_REQUEST_LENGTH.*Target value: "115"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
{
Packit Service 384592
	type => "target",
Packit Service 384592
	comment => "FULL_REQUEST_LENGTH (post)",
Packit Service 384592
	conf => qq(
Packit Service 384592
		SecRuleEngine On
Packit Service 384592
		SecRequestBodyAccess On
Packit Service 384592
		SecResponseBodyAccess On
Packit Service 384592
		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
		SecDebugLogLevel 9
Packit Service 384592
		SecRule FULL_REQUEST_LENGTH "\@eq 1" "phase:4,log,pass,id:500213"
Packit Service 384592
		SecRule FULL_REQUEST_LENGTH "\@eq 201" "phase:4,log,pass,id:500214"
Packit Service 384592
	),
Packit Service 384592
	match_log => {
Packit Service 384592
		error => [ qr/Operator EQ matched 201 at FULL_REQUEST_LENGTH./s, 1 ],
Packit Service 384592
		debug => [ qr/against FULL_REQUEST_LENGTH.*Target value: "201"/s, 1 ],
Packit Service 384592
	},
Packit Service 384592
	match_response => {
Packit Service 384592
		status => qr/^200$/,
Packit Service 384592
	},
Packit Service 384592
	request => new HTTP::Request(
Packit Service 384592
		POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
		[
Packit Service 384592
			"Content-Type" => "application/x-www-form-urlencoded",
Packit Service 384592
		],
Packit Service 384592
		"arg1=val1&arg2=val2",
Packit Service 384592
	),
Packit Service 384592
},
Packit Service 384592
Packit Service 384592
Packit Service 384592
Packit Service 384592
# AUTH_TYPE
Packit Service 384592
#{
Packit Service 384592
#	type => "target",
Packit Service 384592
#	comment => "AUTH_TYPE",
Packit Service 384592
#	conf => qq(
Packit Service 384592
#		<IfVersion >= 2.2>
Packit Service 384592
#			<IfModule !mod_authn_file.c>
Packit Service 384592
#				LoadModule authn_file_module modules/mod_authn_file.so
Packit Service 384592
#			</IfModule>
Packit Service 384592
#		</IfVersion>
Packit Service 384592
##		<IfVersion ~ ^2.0.>
Packit Service 384592
##			<IfModule !mod_auth.c>
Packit Service 384592
##				LoadModule auth_module modules/mod_auth.so
Packit Service 384592
##			</IfModule>
Packit Service 384592
##		</IfVersion>
Packit Service 384592
#		<Location />
Packit Service 384592
#			AuthType Basic
Packit Service 384592
#			AuthName Test
Packit Service 384592
#			AuthUserFile "$ENV{CONF_DIR}/htpasswd"
Packit Service 384592
#			Require user nobody
Packit Service 384592
#		</Location>
Packit Service 384592
#		SecRuleEngine On
Packit Service 384592
#		SecRequestBodyAccess On
Packit Service 384592
#		SecResponseBodyAccess On
Packit Service 384592
#		SecResponseBodyMimeType null
Packit Service 384592
##		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
##		SecDebugLogLevel 9
Packit Service 384592
#		SecRule REQUEST_HEADERS:Authorization "Basic (.*)" "phase:2,log,pass,capture,chain"
Packit Service 384592
#		SecRule TX:1 "nobody:test" "t:none,t:base64Decode,chain"
Packit Service 384592
#		SecRule AUTH_TYPE "Basic"
Packit Service 384592
#	),
Packit Service 384592
#	match_log => {
Packit Service 384592
#		error => [ qr/Pattern match "Basic" at AUTH_TYPE/s, 1 ],
Packit Service 384592
#	},
Packit Service 384592
#	match_response => {
Packit Service 384592
#		status => qr/^200$/,
Packit Service 384592
#	},
Packit Service 384592
#	request => new HTTP::Request(
Packit Service 384592
#		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt",
Packit Service 384592
#		[
Packit Service 384592
#			"Authorization" => "Basic bm9ib2R5OnRlc3Q="
Packit Service 384592
#		],
Packit Service 384592
#	),
Packit Service 384592
#},
Packit Service 384592
Packit Service 384592
## ENH: We cannot include this test as we cannot distribute the database.
Packit Service 384592
##      Instead we should create a simple test DB of our own.
Packit Service 384592
## GEO
Packit Service 384592
#{
Packit Service 384592
#	type => "target",
Packit Service 384592
#	comment => "GEO (ip)",
Packit Service 384592
#	conf => qq(
Packit Service 384592
#		SecRuleEngine On
Packit Service 384592
#		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
#		SecDebugLogLevel 9
Packit Service 384592
#        SecGeoLookupDB GeoLiteCity.dat
Packit Service 384592
#		SecRule ARGS:ip "\@geoLookup" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:COUNTRY_CODE "\@streq US" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:COUNTRY_CODE3 "\@streq USA" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:COUNTRY_NAME "\@streq United States" "phase:2,log,pass,t:none"
Packit Service 384592
#        # ENH: Not in this database?
Packit Service 384592
#		SecRule GEO:COUNTRY_CONTINENT "\@streq NA" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:REGION "\@streq CA" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:CITY "\@streq San Diego" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:POSTAL_CODE "\@streq 92123" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:LATITUDE "\@beginsWith 32.8" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:LONGITUDE "\@beginsWith 117.1" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:DMA_CODE "\@streq 825" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:AREA_CODE "\@streq 858" "phase:2,log,pass,t:none"
Packit Service 384592
#	),
Packit Service 384592
#	match_log => {
Packit Service 384592
#		debug => [ qr/Geo lookup for "216.75.21.122" succeeded.*match "US" at GEO:COUNTRY_CODE.*match "USA" at GEO:COUNTRY_CODE3.*match "United States" at GEO:COUNTRY_NAME.*match "NA" at GEO:COUNTRY_CONTINENT.*match "CA" at GEO:REGION.*match "San Diego" at GEO:CITY.*match "92123" at GEO:POSTAL_CODE.*match "32.8" at GEO:LATITUDE.*match "825" at GEO:DMA_CODE.*match "858" at GEO:AREA_CODE/si, 1 ],
Packit Service 384592
#	},
Packit Service 384592
#	match_response => {
Packit Service 384592
#		status => qr/^200$/,
Packit Service 384592
#	},
Packit Service 384592
#	request => new HTTP::Request(
Packit Service 384592
#		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?ip=216.75.21.122",
Packit Service 384592
#	),
Packit Service 384592
#},
Packit Service 384592
#{
Packit Service 384592
#	type => "target",
Packit Service 384592
#	comment => "GEO (host)",
Packit Service 384592
#	conf => qq(
Packit Service 384592
#		SecRuleEngine On
Packit Service 384592
#		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
#		SecDebugLogLevel 9
Packit Service 384592
#        SecGeoLookupDB GeoLiteCity.dat
Packit Service 384592
#		SecRule ARGS:host "\@geoLookup" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:COUNTRY_CODE "\@streq US" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:COUNTRY_CODE3 "\@streq USA" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:COUNTRY_NAME "\@streq United States" "phase:2,log,pass,t:none"
Packit Service 384592
#        # ENH: Not in this database?
Packit Service 384592
#		SecRule GEO:COUNTRY_CONTINENT "\@streq NA" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:REGION "\@streq CA" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:CITY "\@streq San Diego" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:POSTAL_CODE "\@streq 92123" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:LATITUDE "\@beginsWith 32.8" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:LONGITUDE "\@beginsWith 117.1" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:DMA_CODE "\@streq 825" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule GEO:AREA_CODE "\@streq 858" "phase:2,log,pass,t:none"
Packit Service 384592
#	),
Packit Service 384592
#	match_log => {
Packit Service 384592
#		debug => [ qr/Using address "\d+\.\d+\.\d+\.\d+".*Geo lookup for "www\.modsecurity\.org" succeeded.*match "US" at GEO:COUNTRY_CODE.*match "USA" at GEO:COUNTRY_CODE3.*match "United States" at GEO:COUNTRY_NAME.*match "NA" at GEO:COUNTRY_CONTINENT.*match "CA" at GEO:REGION.*match "San Diego" at GEO:CITY.*match "92123" at GEO:POSTAL_CODE.*match "32.8" at GEO:LATITUDE.*match "825" at GEO:DMA_CODE.*match "858" at GEO:AREA_CODE/si, 1 ],
Packit Service 384592
#	},
Packit Service 384592
#	match_response => {
Packit Service 384592
#		status => qr/^200$/,
Packit Service 384592
#	},
Packit Service 384592
#	request => new HTTP::Request(
Packit Service 384592
#		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?host=www.modsecurity.org",
Packit Service 384592
#	),
Packit Service 384592
#},
Packit Service 384592
#{
Packit Service 384592
#	type => "target",
Packit Service 384592
#	comment => "GEO (failed lookup)",
Packit Service 384592
#	conf => qq(
Packit Service 384592
#		SecRuleEngine On
Packit Service 384592
#		SecDebugLog $ENV{DEBUG_LOG}
Packit Service 384592
#		SecDebugLogLevel 9
Packit Service 384592
#        SecGeoLookupDB GeoLiteCity.dat
Packit Service 384592
#		SecRule ARGS:ip "\@geoLookup" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule \&GEO "\@eq 0" "phase:2,log,deny,status:403,t:none"
Packit Service 384592
#		SecRule ARGS:badip "\@geoLookup" "phase:2,log,pass,t:none"
Packit Service 384592
#		SecRule \&GEO "!\@eq 0" "phase:2,log,deny,status:403,t:none"
Packit Service 384592
#	),
Packit Service 384592
#	match_log => {
Packit Service 384592
#		-debug => [ qr/Geo lookup for "127\.0\.0\.1" succeeded/si, 1 ],
Packit Service 384592
#	},
Packit Service 384592
#	match_response => {
Packit Service 384592
#		status => qr/^200$/,
Packit Service 384592
#	},
Packit Service 384592
#	request => new HTTP::Request(
Packit Service 384592
#		GET => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt?ip=216.75.21.122&badip=127.0.0.1",
Packit Service 384592
#	),
Packit Service 384592
#},
Packit Service 384592
Packit Service 384592
# TODO: ENV
Packit Service 384592
# TODO: FILES
Packit Service 384592
# TODO: FILES_COMBINED_SIZE
Packit Service 384592
# TODO: FILES_NAMES
Packit Service 384592
# TODO: FILES_SIZES
Packit Service 384592
# TODO: FILES_TMPNAMES
Packit Service 384592
# TODO: HIGHEST_SEVERITY
Packit Service 384592
# TODO: MATCHED_VAR
Packit Service 384592
# TODO: MATCHED_VAR_NAME
Packit Service 384592
# TODO: MODSEC_BUILD
Packit Service 384592
# TODO: MULTIPART_CRLF_LF_LINES
Packit Service 384592
# TODO: MULTIPART_STRICT_ERROR
Packit Service 384592
# TODO: MULTIPART_UNMATCHED_BOUNDARY
Packit Service 384592
# TODO: PATH_INFO
Packit Service 384592
# TODO: QUERY_STRING
Packit Service 384592
# TODO: REMOTE_ADDR
Packit Service 384592
# TODO: REMOTE_HOST
Packit Service 384592
# TODO: REMOTE_PORT
Packit Service 384592
# TODO: REMOTE_USER
Packit Service 384592
# TODO: REQBODY_PROCESSOR
Packit Service 384592
# TODO: REQBODY_PROCESSOR_ERROR
Packit Service 384592
# TODO: REQBODY_PROCESSOR_ERROR_MSG
Packit Service 384592
# TODO: REQUEST_BASENAME
Packit Service 384592
# TODO: REQUEST_BODY
Packit Service 384592
# TODO: REQUEST_COOKIES
Packit Service 384592
# TODO: REQUEST_COOKIES_NAMES
Packit Service 384592
# TODO: REQUEST_FILENAME
Packit Service 384592
# TODO: REQUEST_HEADERS
Packit Service 384592
# TODO: REQUEST_HEADERS_NAMES
Packit Service 384592
# TODO: REQUEST_LINE
Packit Service 384592
# TODO: REQUEST_METHOD
Packit Service 384592
# TODO: REQUEST_PROTOCOL
Packit Service 384592
# TODO: REQUEST_URI
Packit Service 384592
# TODO: REQUEST_URI_RAW
Packit Service 384592
# TODO: RESPONSE_BODY
Packit Service 384592
# TODO: RESPONSE_CONTENT_LENGTH
Packit Service 384592
# TODO: RESPONSE_CONTENT_TYPE
Packit Service 384592
# TODO: RESPONSE_HEADERS
Packit Service 384592
# TODO: RESPONSE_HEADERS_NAMES
Packit Service 384592
# TODO: RESPONSE_PROTOCOL
Packit Service 384592
# TODO: RESPONSE_STATUS
Packit Service 384592
# TODO: RULE
Packit Service 384592
# TODO: SCRIPT_BASENAME
Packit Service 384592
# TODO: SCRIPT_FILENAME
Packit Service 384592
# TODO: SCRIPT_GID
Packit Service 384592
# TODO: SCRIPT_GROUPNAME
Packit Service 384592
# TODO: SCRIPT_MODE
Packit Service 384592
# TODO: SCRIPT_UID
Packit Service 384592
# TODO: SCRIPT_USERNAME
Packit Service 384592
# TODO: SERVER_ADDR
Packit Service 384592
# TODO: SERVER_NAME
Packit Service 384592
# TODO: SERVER_PORT
Packit Service 384592
# TODO: SESSION
Packit Service 384592
# TODO: SESSIONID
Packit Service 384592
# TODO: TIME
Packit Service 384592
# TODO: TIME_DAY
Packit Service 384592
# TODO: TIME_EPOCH
Packit Service 384592
# TODO: TIME_HOUR
Packit Service 384592
# TODO: TIME_MIN
Packit Service 384592
# TODO: TIME_MON
Packit Service 384592
# TODO: TIME_SEC
Packit Service 384592
# TODO: TIME_WDAY
Packit Service 384592
# TODO: TIME_YEAR
Packit Service 384592
# TODO: TX
Packit Service 384592
# TODO: USERID
Packit Service 384592
# TODO: WEBAPPID
Packit Service 384592
# TODO: WEBSERVER_ERROR_LOG
Packit Service 384592
# TODO: XML
Packit Service 384592