diff mod_firewall/mod_firewall.lua @ 2928:b0d92332b87f

mod_firewall: Add special case for $local zone (fixes #1090)
author Kim Alvefur <zash@zash.se>
date Mon, 12 Mar 2018 12:26:15 +0100
parents 165d2877eeac
children 7e8f2e36419d
line wrap: on
line diff
--- a/mod_firewall/mod_firewall.lua	Sat Mar 10 05:01:15 2018 +0100
+++ b/mod_firewall/mod_firewall.lua	Mon Mar 12 12:26:15 2018 +0100
@@ -183,8 +183,13 @@
 	is_admin = { global_code = [[local is_admin = require "core.usermanager".is_admin;]]};
 	core_post_stanza = { global_code = [[local core_post_stanza = prosody.core_post_stanza;]] };
 	zone = { global_code = function (zone)
-		assert(idsafe(zone), "Invalid zone name: "..zone);
-		return ("local zone_%s = zones[%q] or {};"):format(zone, zone);
+		local var = zone;
+		if var == "$local" then
+			var = "_local"; -- See #1090
+		else
+			assert(idsafe(var), "Invalid zone name: "..zone);
+		end
+		return ("local zone_%s = zones[%q] or {};"):format(var, zone);
 	end };
 	date_time = { global_code = [[local os_date = os.date]]; local_code = [[local current_date_time = os_date("*t");]] };
 	time = { local_code = function (what)