comparison mod_firewall/marks.lib.lua @ 6549:d2e50b587721

mod_firewall: marks: switch to keyval+ store API
author Matthew Wild <mwild1@gmail.com>
date Sun, 24 May 2026 10:49:09 +0100
parents 430584888704
children f9d93d7cd6d5
comparison
equal deleted inserted replaced
6548:430584888704 6549:d2e50b587721
1 local mark_storage = module:open_store("firewall_marks"); 1 local mark_storage = module:open_store("firewall_marks", "keyval+");
2 local mark_map_storage = module:open_store("firewall_marks", "map");
3 2
4 local user_sessions = prosody.hosts[module.host].sessions; 3 local user_sessions = prosody.hosts[module.host].sessions;
5 4
6 module:hook("resource-bind", function (event) 5 module:hook("resource-bind", function (event)
7 local session = event.session; 6 local session = event.session;
25 user.firewall_marks = marks; --luacheck: ignore 122 24 user.firewall_marks = marks; --luacheck: ignore 122
26 end 25 end
27 if marks then 26 if marks then
28 marks[event.mark] = event.timestamp; 27 marks[event.mark] = event.timestamp;
29 end 28 end
30 local ok, err = mark_map_storage:set(event.username, event.mark, event.timestamp); 29 local ok, err = mark_storage:set_key(event.username, event.mark, event.timestamp);
31 if not ok then 30 if not ok then
32 module:log("error", "Failed to mark user %q with %q: %s", event.username, event.mark, err); 31 module:log("error", "Failed to mark user %q with %q: %s", event.username, event.mark, err);
33 end 32 end
34 return true; 33 return true;
35 end, -1); 34 end, -1);
38 local user = user_sessions[event.username]; 37 local user = user_sessions[event.username];
39 local marks = user and user.firewall_marks; 38 local marks = user and user.firewall_marks;
40 if marks then 39 if marks then
41 marks[event.mark] = nil; 40 marks[event.mark] = nil;
42 end 41 end
43 local ok, err = mark_map_storage:set(event.username, event.mark, nil); 42 local ok, err = mark_storage:set_key(event.username, event.mark, nil);
44 if not ok then 43 if not ok then
45 module:log("error", "Failed to unmark user %q with %q: %s", event.username, event.mark, err); 44 module:log("error", "Failed to unmark user %q with %q: %s", event.username, event.mark, err);
46 end 45 end
47 return true; 46 return true;
48 end, -1); 47 end, -1);