diff mod_firewall/marks.lib.lua @ 2894:165d2877eeac

mod_firewall: Add experimental user-centric persistent marks behind a feature flag
author Kim Alvefur <zash@zash.se>
date Sat, 24 Feb 2018 21:40:56 +0100
parents
children 96dec7681af8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_firewall/marks.lib.lua	Sat Feb 24 21:40:56 2018 +0100
@@ -0,0 +1,23 @@
+local mark_storage = module:open_store("firewall_marks");
+
+local user_sessions = prosody.hosts[module.host].sessions;
+
+module:hook("resource-bind", function (event)
+	local session = event.session;
+	local username = session.username;
+	local user = user_sessions[username];
+	local marks = user.firewall_marks;
+	if not marks then
+		marks = mark_storage:get(username) or {};
+		user.firewall_marks = marks; -- luacheck: ignore 122
+	end
+	session.firewall_marks = marks;
+end);
+
+module:hook("resource-unbind", function (event)
+	local session = event.session;
+	local username = session.username;
+	local marks = session.firewall_marks;
+	mark_storage:set(username, marks);
+end);
+