Mercurial > prosody-modules
comparison mod_firewall/conditions.lib.lua @ 2070:2356114ff505
mod_firewall: Optimize string match operations, string.find is faster than .match since no string is returned
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 11 Mar 2016 18:13:53 +0100 |
parents | 7ba6ed553c93 |
children | 4161ff87e5a4 |
comparison
equal
deleted
inserted
replaced
2069:cf9cd666ba00 | 2070:2356114ff505 |
---|---|
26 local pattern = match:match("<(.*)>"); | 26 local pattern = match:match("<(.*)>"); |
27 if pattern then | 27 if pattern then |
28 if pattern == "*" then | 28 if pattern == "*" then |
29 return part; | 29 return part; |
30 end | 30 end |
31 if pattern:match("^<.*>$") then | 31 if pattern:find("^<.*>$") then |
32 pattern = pattern:match("^<(.*)>$"); | 32 pattern = pattern:match("^<(.*)>$"); |
33 else | 33 else |
34 pattern = pattern:gsub("%p", "%%%0"):gsub("%%(%p)", wildcard_equivs); | 34 pattern = pattern:gsub("%p", "%%%0"):gsub("%%(%p)", wildcard_equivs); |
35 end | 35 end |
36 return ("%s:match(%q)"):format(part, "^"..pattern.."$"); | 36 return ("%s:match(%q)"):format(part, "^"..pattern.."$"); |
142 local op = "and"; | 142 local op = "and"; |
143 if day_end_num < day_start_num then | 143 if day_end_num < day_start_num then |
144 op = "or"; | 144 op = "or"; |
145 end | 145 end |
146 table.insert(conditions, ("current_day >= %d %s current_day <= %d"):format(day_start_num, op, day_end_num)); | 146 table.insert(conditions, ("current_day >= %d %s current_day <= %d"):format(day_start_num, op, day_end_num)); |
147 elseif day_range:match("%a") then | 147 elseif day_range:find("%a") then |
148 local day = resolve_day_number(day_range:match("%a+")); | 148 local day = resolve_day_number(day_range:match("%a+")); |
149 table.insert(conditions, "current_day == "..day); | 149 table.insert(conditions, "current_day == "..day); |
150 else | 150 else |
151 error("Unable to parse day/day range: "..day_range); | 151 error("Unable to parse day/day range: "..day_range); |
152 end | 152 end |