diff --git a/Makefile.am b/Makefile.am index 1b594185..903f5660 100644 --- a/Makefile.am +++ b/Makefile.am @@ -131,6 +131,7 @@ TESTS+=test/test-cases/regression/variable-ARGS.json TESTS+=test/test-cases/regression/variable-ARGS_POST_NAMES.json TESTS+=test/test-cases/regression/config-remove_by_tag.json TESTS+=test/test-cases/regression/collection-regular_expression_selection.json +TESTS+=test/test-cases/regression/collection-lua.json TESTS+=test/test-cases/regression/issue-960.json TESTS+=test/test-cases/regression/variable-WEBAPPID.json TESTS+=test/test-cases/regression/variable-ARGS_GET_NAMES.json diff --git a/test/test-cases/data/setvar.lua b/test/test-cases/data/setvar.lua new file mode 100644 index 00000000..cb2e00f2 --- /dev/null +++ b/test/test-cases/data/setvar.lua @@ -0,0 +1,10 @@ +function main() + var = 2; + m.setvar("TX.lua_set_var", var); + m.setvar("IP.lua_set_var", var); + m.setvar("GLOBAL.lua_set_var", var); + m.setvar("RESOURCE.lua_set_var", var); + m.setvar("SESSION.lua_set_var", var); + m.setvar("USER.lua_set_var", var); + return nil; +end diff --git a/test/test-cases/regression/collection-lua.json b/test/test-cases/regression/collection-lua.json new file mode 100644 index 00000000..41a352b5 --- /dev/null +++ b/test/test-cases/regression/collection-lua.json @@ -0,0 +1,254 @@ +[ + { + "enabled":1, + "version_min":300000, + "title":"Testing LUA :: m.set TX (1/6)", + "resource":"lua", + "client":{ + "ip":"200.249.12.31", + "port":123 + }, + "server":{ + "ip":"200.249.12.31", + "port":80 + }, + "request":{ + "headers":{ + "Host":"localhost", + "User-Agent":"My sweet little browser", + "Accept":"*/*", + "Content-Length": "0" + }, + "uri":"/whee?res=1", + "method":"GET", + "body": [ ] + }, + "response":{ + "headers":{}, + "body":[ + "no need." + ] + }, + "expected":{ + "audit_log":"", + "debug_log":"Target value: \"2\" \\(Variable: TX.lua_set_var\\)", + "error_log":"" + }, + "rules":[ + "SecRuleEngine On", + "SecAction \"id:1,pass,setvar:TX.lua_set_var=1\"", + "SecRuleScript test-cases/data/setvar.lua \"id:2,pass\"", + "SecRule TX.lua_set_var \"@contains 2\" \"id:3,t:none\"" + ] + }, + { + "enabled":1, + "version_min":300000, + "title":"Testing LUA :: m.set IP (2/6)", + "resource":"lua", + "client":{ + "ip":"200.249.12.31", + "port":123 + }, + "server":{ + "ip":"200.249.12.31", + "port":80 + }, + "request":{ + "headers":{ + "Host":"localhost", + "User-Agent":"My sweet little browser", + "Accept":"*/*", + "Content-Length": "0" + }, + "uri":"/whee?res=1", + "method":"GET", + "body": [ ] + }, + "response":{ + "headers":{}, + "body":[ + "no need." + ] + }, + "expected":{ + "audit_log":"", + "debug_log":"Target value: \"2\" \\(Variable: IP:::::lua_set_var\\)", + "error_log":"" + }, + "rules":[ + "SecRuleEngine On", + "SecAction \"id:1,pass,setvar:IP.lua_set_var=1\"", + "SecRuleScript test-cases/data/setvar.lua \"id:2,pass\"", + "SecRule IP.lua_set_var \"@contains 2\" \"id:3,t:none\"" + ] + }, + { + "enabled":1, + "version_min":300000, + "title":"Testing LUA :: m.set GLOBAL (3/6)", + "resource":"lua", + "client":{ + "ip":"200.249.12.31", + "port":123 + }, + "server":{ + "ip":"200.249.12.31", + "port":80 + }, + "request":{ + "headers":{ + "Host":"localhost", + "User-Agent":"My sweet little browser", + "Accept":"*/*", + "Content-Length": "0" + }, + "uri":"/whee?res=1", + "method":"GET", + "body": [ ] + }, + "response":{ + "headers":{}, + "body":[ + "no need." + ] + }, + "expected":{ + "audit_log":"", + "debug_log":"Target value: \"2\" \\(Variable: GLOBAL:::::lua_set_var\\)", + "error_log":"" + }, + "rules":[ + "SecRuleEngine On", + "SecAction \"id:1,pass,setvar:GLOBAL.lua_set_var=1\"", + "SecRuleScript test-cases/data/setvar.lua \"id:2,pass\"", + "SecRule GLOBAL.lua_set_var \"@contains 2\" \"id:3,t:none\"" + ] + }, + { + "enabled":1, + "version_min":300000, + "title":"Testing LUA :: m.set RESOURCE (4/6)", + "resource":"lua", + "client":{ + "ip":"200.249.12.31", + "port":123 + }, + "server":{ + "ip":"200.249.12.31", + "port":80 + }, + "request":{ + "headers":{ + "Host":"localhost", + "User-Agent":"My sweet little browser", + "Accept":"*/*", + "Content-Length": "0" + }, + "uri":"/whee?res=1", + "method":"GET", + "body": [ ] + }, + "response":{ + "headers":{}, + "body":[ + "no need." + ] + }, + "expected":{ + "audit_log":"", + "debug_log":"Target value: \"2\" \\(Variable: RESOURCE:::::lua_set_var\\)", + "error_log":"" + }, + "rules":[ + "SecRuleEngine On", + "SecAction \"id:1,pass,setvar:RESOURCE.lua_set_var=1\"", + "SecRuleScript test-cases/data/setvar.lua \"id:2,pass\"", + "SecRule RESOURCE.lua_set_var \"@contains 2\" \"id:3,t:none\"" + ] + }, + { + "enabled":1, + "version_min":300000, + "title":"Testing LUA :: m.set SESSION (5/6)", + "resource":"lua", + "client":{ + "ip":"200.249.12.31", + "port":123 + }, + "server":{ + "ip":"200.249.12.31", + "port":80 + }, + "request":{ + "headers":{ + "Host":"localhost", + "User-Agent":"My sweet little browser", + "Accept":"*/*", + "Content-Length": "0" + }, + "uri":"/whee?res=1", + "method":"GET", + "body": [ ] + }, + "response":{ + "headers":{}, + "body":[ + "no need." + ] + }, + "expected":{ + "audit_log":"", + "debug_log":"Target value: \"2\" \\(Variable: SESSION:::::lua_set_var\\)", + "error_log":"" + }, + "rules":[ + "SecRuleEngine On", + "SecAction \"id:1,pass,setvar:SESSION.lua_set_var=1\"", + "SecRuleScript test-cases/data/setvar.lua \"id:2,pass\"", + "SecRule SESSION.lua_set_var \"@contains 2\" \"id:3,t:none\"" + ] + }, + { + "enabled":1, + "version_min":300000, + "title":"Testing LUA :: m.set USER (6/6)", + "resource":"lua", + "client":{ + "ip":"200.249.12.31", + "port":123 + }, + "server":{ + "ip":"200.249.12.31", + "port":80 + }, + "request":{ + "headers":{ + "Host":"localhost", + "User-Agent":"My sweet little browser", + "Accept":"*/*", + "Content-Length": "0" + }, + "uri":"/whee?res=1", + "method":"GET", + "body": [ ] + }, + "response":{ + "headers":{}, + "body":[ + "no need." + ] + }, + "expected":{ + "audit_log":"", + "debug_log":"Target value: \"2\" \\(Variable: USER:::::lua_set_var\\)", + "error_log":"" + }, + "rules":[ + "SecRuleEngine On", + "SecAction \"id:1,pass,setvar:USER.lua_set_var=1\"", + "SecRuleScript test-cases/data/setvar.lua \"id:2,pass\"", + "SecRule USER.lua_set_var \"@contains 2\" \"id:3,t:none\"" + ] + } +]