mirror of
https://github.com/YunoHost/SSOwat.git
synced 2024-09-03 20:06:27 +02:00
fix string.match
This commit is contained in:
parent
972d858959
commit
19ae10200d
2 changed files with 23 additions and 23 deletions
32
access.lua
32
access.lua
|
@ -22,9 +22,6 @@ local conf = config.get_config()
|
|||
-- Import helpers
|
||||
local hlp = require "helpers"
|
||||
|
||||
-- Import Perl regular expressions library
|
||||
local rex = require "rex_pcre"
|
||||
|
||||
-- Load logging module
|
||||
local logger = require("log")
|
||||
|
||||
|
@ -208,17 +205,6 @@ end
|
|||
-- If the URL matches one of the `redirected_urls` in the configuration file,
|
||||
-- just redirect to the target URL/URI
|
||||
--
|
||||
-- The 'match' function uses PCRE regex as default
|
||||
-- If '%.' is found in the regex, we assume it's a LUA regex (legacy code)
|
||||
-- 'match' returns the matched text.
|
||||
function match(s, regex)
|
||||
if not string.find(regex, '%%%.') then
|
||||
return rex.match(s, regex)
|
||||
else
|
||||
return string.match(s,regex)
|
||||
end
|
||||
end
|
||||
|
||||
function detect_redirection(redirect_url)
|
||||
if hlp.string.starts(redirect_url, "http://")
|
||||
or hlp.string.starts(redirect_url, "https://") then
|
||||
|
@ -243,9 +229,9 @@ end
|
|||
|
||||
if conf["redirected_regex"] then
|
||||
for regex, redirect_url in pairs(conf["redirected_regex"]) do
|
||||
if match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or match(ngx.var.scheme.."://"..ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or match(ngx.var.uri..hlp.uri_args_string(), regex) then
|
||||
if hlp.match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or hlp.match(ngx.var.scheme.."://"..ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or hlp.match(ngx.var.uri..hlp.uri_args_string(), regex) then
|
||||
logger.debug("Requested URI is in redirected_regex")
|
||||
detect_redirection(redirect_url)
|
||||
end
|
||||
|
@ -274,8 +260,8 @@ end
|
|||
|
||||
if conf["skipped_regex"] then
|
||||
for _, regex in ipairs(conf["skipped_regex"]) do
|
||||
if (match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or match(ngx.var.uri..hlp.uri_args_string(), regex))
|
||||
if (hlp.match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or hlp.match(ngx.var.uri..hlp.uri_args_string(), regex))
|
||||
then
|
||||
logger.debug("Skipping "..ngx.var.uri)
|
||||
return hlp.pass()
|
||||
|
@ -308,8 +294,8 @@ function is_protected()
|
|||
end
|
||||
end
|
||||
for _, regex in ipairs(conf["protected_regex"]) do
|
||||
if match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or match(ngx.var.uri..hlp.uri_args_string(), regex) then
|
||||
if hlp.match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or hlp.match(ngx.var.uri..hlp.uri_args_string(), regex) then
|
||||
logger.debug(ngx.var.uri.." is in protected_regex")
|
||||
return true
|
||||
end
|
||||
|
@ -399,8 +385,8 @@ end
|
|||
|
||||
if conf["unprotected_regex"] then
|
||||
for _, regex in ipairs(conf["unprotected_regex"]) do
|
||||
if (match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or match(ngx.var.uri..hlp.uri_args_string(), regex))
|
||||
if (hlp.match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||
or hlp.match(ngx.var.uri..hlp.uri_args_string(), regex))
|
||||
and not is_protected() then
|
||||
if hlp.is_logged_in() then
|
||||
hlp.set_headers()
|
||||
|
|
14
helpers.lua
14
helpers.lua
|
@ -14,6 +14,20 @@ local logger = require("log")
|
|||
-- url parser, c.f. https://rosettacode.org/wiki/URL_parser#Lua
|
||||
local url_parser = require "socket.url"
|
||||
|
||||
-- Import Perl regular expressions library
|
||||
local rex = require "rex_pcre"
|
||||
|
||||
|
||||
-- The 'match' function uses PCRE regex as default
|
||||
-- If '%.' is found in the regex, we assume it's a LUA regex (legacy code)
|
||||
-- 'match' returns the matched text.
|
||||
function match(s, regex)
|
||||
if not string.find(regex, '%%%.') then
|
||||
return rex.match(s, regex)
|
||||
else
|
||||
return string.match(s,regex)
|
||||
end
|
||||
end
|
||||
|
||||
-- Read a FS stored file
|
||||
function read_file(file)
|
||||
|
|
Loading…
Reference in a new issue