⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.124
Server IP:
50.28.103.30
Server:
Linux host.jcukjv-lwsites.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
Server Software:
nginx/1.28.0
PHP Version:
8.3.12
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
www
/
server
/
nginx
/
src
/
lua_nginx_module
/
t
/
View File Name :
040-gsub-o.t
# vim:set ft= ts=4 sw=4 et fdm=marker: use Test::Nginx::Socket::Lua; #worker_connections(1014); #master_on(); #workers(2); #log_level('warn'); repeat_each(2); plan tests => repeat_each() * (blocks() * 2); #no_diff(); no_long_string(); run_tests(); __DATA__ === TEST 1: sanity --- config location /re { content_by_lua ' local s, n = ngx.re.gsub("[hello, world]", "[a-z]+", "howdy", "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body [howdy, howdy] 2 === TEST 2: trimmed --- config location /re { content_by_lua ' local s, n = ngx.re.gsub("hello, world", "[a-z]+", "howdy", "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body howdy, howdy 2 === TEST 3: not matched --- config location /re { content_by_lua ' local s, n = ngx.re.gsub("hello, world", "[A-Z]+", "howdy", "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body hello, world 0 === TEST 4: replace by function (trimmed) --- config location /re { content_by_lua ' local f = function (m) return "[" .. m[0] .. "," .. m[1] .. "]" end local s, n = ngx.re.gsub("hello, world", "([a-z])[a-z]+", f, "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body [hello,h], [world,w] 2 === TEST 5: replace by function (not trimmed) --- config location /re { content_by_lua ' local f = function (m) return "[" .. m[0] .. "," .. m[1] .. "]" end local s, n = ngx.re.gsub("{hello, world}", "([a-z])[a-z]+", f, "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body {[hello,h], [world,w]} 2 === TEST 6: replace by script (trimmed) --- config location /re { content_by_lua ' local s, n = ngx.re.gsub("hello, world", "([a-z])[a-z]+", "[$0,$1]", "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body [hello,h], [world,w] 2 === TEST 7: replace by script (not trimmed) --- config location /re { content_by_lua ' local s, n = ngx.re.gsub("{hello, world}", "([a-z])[a-z]+", "[$0,$1]", "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body {[hello,h], [world,w]} 2 === TEST 8: set_by_lua --- config location /re { set_by_lua $res ' local f = function (m) return "[" .. m[0] .. "," .. m[1] .. "]" end local s, n = ngx.re.gsub("{hello, world}", "([a-z])[a-z]+", f, "o") return s '; echo $res; } --- request GET /re --- response_body {[hello,h], [world,w]} === TEST 9: look-behind assertion --- config location /re { content_by_lua ' local s, n = ngx.re.gsub("{foobarbaz}", "(?<=foo)bar|(?<=bar)baz", "h$0", "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body {foohbarhbaz} 2 === TEST 10: named pattern repl w/ callback --- config location /re { content_by_lua ' local repl = function (m) return "[" .. m[0] .. "," .. m["first"] .. "]" end local s, n = ngx.re.gsub("hello, world", "(?<first>[a-z])[a-z]+", repl, "o") ngx.say(s) ngx.say(n) '; } --- request GET /re --- response_body [hello,h], [world,w] 2