### Test the SecStatusEngine # On { type => "misc", comment => "Setting SecStatusEngine to On", conf => qq( SecRuleEngine On SecStatusEngine On ), match_log => { error => [ qr/ModSecurity: StatusEngine call successfully sent/, 1], -error => [ qr/Status engine is currently disabled, enable it by set SecStatusEngine to On/, 1], }, match_response => { status => qr/^200$/, }, request => new HTTP::Request( POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt", [ "Content-Type" => "application/x-www-form-urlencoded", ], "arg1=val1&arg2=val2", ), }, # Off { type => "misc", comment => "Setting SecStatusEngine to Off", conf => qq( SecRuleEngine On SecStatusEngine Off ), match_log => { -error => [ qr/ModSecurity: StatusEngine call successfully sent/, 1], error => [ qr/Status engine is currently disabled, enable it by set SecStatusEngine to On/, 1], }, match_response => { status => qr/^200$/, }, request => new HTTP::Request( POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt", [ "Content-Type" => "application/x-www-form-urlencoded", ], "arg1=val1&arg2=val2", ), }, # On and SecServerSignature { type => "misc", comment => "SecStatusEngine On using SecServerSignature", conf => qq( SecRuleEngine On SecServerSignature "SpiderServer v0.1a" SecStatusEngine On ), match_log => { error => [ qr/ModSecurity: StatusEngine call successfully sent/, 1], -error => [ qr/StatusEngine call: .*SpiderServer v0.1a.*/, 1], }, match_response => { status => qr/^200$/, }, request => new HTTP::Request( POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt", [ "Content-Type" => "application/x-www-form-urlencoded", ], "arg1=val1&arg2=val2", ), }, # On and SecServerSignature { type => "misc", comment => "SecStatusEngine On/SecServerSignature - checking signature", conf => qq( SecRuleEngine On SecServerSignature "SpiderServer v0.1a" SecStatusEngine On ), match_log => { error => { apache => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,Apache/, 1], nginx => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,nginx/, 1], } }, match_response => { status => qr/^200$/, }, request => new HTTP::Request( POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt", [ "Content-Type" => "application/x-www-form-urlencoded", ], "arg1=val1&arg2=val2", ), }, # On and SecServerSignature { type => "misc", comment => "SecStatusEngine On - checking signature", conf => qq( SecStatusEngine On ), match_log => { error => { apache => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,Apache/, 1], nginx => [ qr/StatusEngine call: \"[0-9]+.[0-9]+.[0-9]+[-RC]*[0-9]*\,nginx/, 1], } }, match_response => { status => qr/^200$/, }, request => new HTTP::Request( POST => "http://$ENV{SERVER_NAME}:$ENV{SERVER_PORT}/test.txt", [ "Content-Type" => "application/x-www-form-urlencoded", ], "arg1=val1&arg2=val2", ), },