Mercurial > prosody-modules
comparison mod_firewall/mod_firewall.lua @ 1343:7dbde05b48a9
all the things: Remove trailing whitespace
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Tue, 11 Mar 2014 18:44:01 +0100 |
parents | b21236b6b8d8 |
children | 2356114ff505 |
comparison
equal
deleted
inserted
replaced
1342:0ae065453dc9 | 1343:7dbde05b48a9 |
---|---|
136 return rule; | 136 return rule; |
137 end | 137 end |
138 | 138 |
139 local function compile_firewall_rules(filename) | 139 local function compile_firewall_rules(filename) |
140 local line_no = 0; | 140 local line_no = 0; |
141 | 141 |
142 local function errmsg(err) | 142 local function errmsg(err) |
143 return "Error compiling "..filename.." on line "..line_no..": "..err; | 143 return "Error compiling "..filename.." on line "..line_no..": "..err; |
144 end | 144 end |
145 | 145 |
146 local ruleset = { | 146 local ruleset = { |
147 deliver = {}; | 147 deliver = {}; |
148 }; | 148 }; |
149 | 149 |
150 local chain = "deliver"; -- Default chain | 150 local chain = "deliver"; -- Default chain |
151 local rule; | 151 local rule; |
152 | 152 |
153 local file, err = io.open(filename); | 153 local file, err = io.open(filename); |
154 if not file then return nil, err; end | 154 if not file then return nil, err; end |
155 | 155 |
156 local state; -- nil -> "rules" -> "actions" -> nil -> ... | 156 local state; -- nil -> "rules" -> "actions" -> nil -> ... |
157 | 157 |
158 local line_hold; | 158 local line_hold; |
159 for line in file:lines() do | 159 for line in file:lines() do |
160 line = line:match("^%s*(.-)%s*$"); | 160 line = line:match("^%s*(.-)%s*$"); |
161 if line_hold and line:sub(-1,-1) ~= "\\" then | 161 if line_hold and line:sub(-1,-1) ~= "\\" then |
162 line = line_hold..line; | 162 line = line_hold..line; |
163 line_hold = nil; | 163 line_hold = nil; |
164 elseif line:sub(-1,-1) == "\\" then | 164 elseif line:sub(-1,-1) == "\\" then |
165 line_hold = (line_hold or "")..line:sub(1,-2); | 165 line_hold = (line_hold or "")..line:sub(1,-2); |
166 end | 166 end |
167 line_no = line_no + 1; | 167 line_no = line_no + 1; |
168 | 168 |
169 if line_hold or line:match("^[#;]") then | 169 if line_hold or line:match("^[#;]") then |
170 -- No action; comment or partial line | 170 -- No action; comment or partial line |
171 elseif line == "" then | 171 elseif line == "" then |
172 if state == "rules" then | 172 if state == "rules" then |
173 return nil, ("Expected an action on line %d for preceding criteria") | 173 return nil, ("Expected an action on line %d for preceding criteria") |
266 for _, dep in ipairs(condition_deps or {}) do | 266 for _, dep in ipairs(condition_deps or {}) do |
267 table.insert(rule.deps, dep); | 267 table.insert(rule.deps, dep); |
268 end | 268 end |
269 end | 269 end |
270 end | 270 end |
271 | 271 |
272 -- Compile ruleset and return complete code | 272 -- Compile ruleset and return complete code |
273 | 273 |
274 local chain_handlers = {}; | 274 local chain_handlers = {}; |
275 | 275 |
276 -- Loop through the chains in the parsed ruleset (e.g. incoming, outgoing) | 276 -- Loop through the chains in the parsed ruleset (e.g. incoming, outgoing) |
277 for chain_name, rules in pairs(ruleset) do | 277 for chain_name, rules in pairs(ruleset) do |
278 local code = { included_deps = {}, global_header = {} }; | 278 local code = { included_deps = {}, global_header = {} }; |
336 ..table.concat(code, "") | 336 ..table.concat(code, "") |
337 .."\n\tend;\nend"; | 337 .."\n\tend;\nend"; |
338 | 338 |
339 chain_handlers[chain_name] = code_string; | 339 chain_handlers[chain_name] = code_string; |
340 end | 340 end |
341 | 341 |
342 return chain_handlers; | 342 return chain_handlers; |
343 end | 343 end |
344 | 344 |
345 local function compile_handler(code_string, filename) | 345 local function compile_handler(code_string, filename) |
346 -- Prepare event handler function | 346 -- Prepare event handler function |
360 active_definitions = {}; | 360 active_definitions = {}; |
361 local firewall_scripts = module:get_option_set("firewall_scripts", {}); | 361 local firewall_scripts = module:get_option_set("firewall_scripts", {}); |
362 for script in firewall_scripts do | 362 for script in firewall_scripts do |
363 script = resolve_relative_path(prosody.paths.config, script); | 363 script = resolve_relative_path(prosody.paths.config, script); |
364 local chain_functions, err = compile_firewall_rules(script) | 364 local chain_functions, err = compile_firewall_rules(script) |
365 | 365 |
366 if not chain_functions then | 366 if not chain_functions then |
367 module:log("error", "Error compiling %s: %s", script, err or "unknown error"); | 367 module:log("error", "Error compiling %s: %s", script, err or "unknown error"); |
368 else | 368 else |
369 for chain, handler_code in pairs(chain_functions) do | 369 for chain, handler_code in pairs(chain_functions) do |
370 local handler, err = compile_handler(handler_code, "mod_firewall::"..chain); | 370 local handler, err = compile_handler(handler_code, "mod_firewall::"..chain); |