Comparison

mod_muc_ban_ip/mod_muc_ban_ip.lua @ 3403:823027110e29

mod_muc_ban_ip: Improve logging to use session, and log when a ban is enforced
author Matthew Wild <mwild1@gmail.com>
date Thu, 13 Dec 2018 10:35:26 +0000
parent 1651:933403ee07ec
child 3995:4c9805f29f2d
comparison
equal deleted inserted replaced
3402:6a3060d5e85d 3403:823027110e29
17 if not banned_from then 17 if not banned_from then
18 banned_from = {}; 18 banned_from = {};
19 ip_bans[ip] = banned_from; 19 ip_bans[ip] = banned_from;
20 end 20 end
21 banned_from[from] = true; 21 banned_from[from] = true;
22 module:log("debug", "Banned IP address %s from %s", ip, from); 22 module:log("debug", "Added ban for IP address %s from %s", ip, from);
23 end 23 end
24 24
25 local function check_for_incoming_ban(event) 25 local function check_for_incoming_ban(event)
26 local stanza = event.stanza; 26 local stanza = event.stanza;
27 local to_session = full_sessions[stanza.attr.to]; 27 local to_session = full_sessions[stanza.attr.to];
41 end 41 end
42 end 42 end
43 end 43 end
44 44
45 local function check_for_ban(event) 45 local function check_for_ban(event)
46 local ip = event.origin.ip; 46 local origin, stanza = event.origin, event.stanza;
47 local to = jid_bare(event.stanza.attr.to); 47 local ip = origin.ip;
48 local to = jid_bare(stanza.attr.to);
48 if ip_bans[ip] and ip_bans[ip][to] then 49 if ip_bans[ip] and ip_bans[ip][to] then
49 event.origin.send(st.error_reply(event.stanza, "auth", "forbidden") 50 origin.log("debug", "IP banned: %s is banned from %s", ip, to)
51 origin.send(st.error_reply(stanza, "auth", "forbidden")
50 :tag("x", { xmlns = xmlns_muc_user }) 52 :tag("x", { xmlns = xmlns_muc_user })
51 :tag("status", { code = '301' })); 53 :tag("status", { code = '301' }));
52 return true; 54 return true;
53 end 55 end
54 module:log("debug", "Not banned: %s from %s", ip, to) 56 origin.log("debug", "IP not banned: %s from %s", ip, to)
55 end 57 end
56 58
57 function module.add_host(module) 59 function module.add_host(module)
58 module:hook("presence/full", check_for_incoming_ban, 100); 60 module:hook("presence/full", check_for_incoming_ban, 100);
59 module:hook("pre-presence/full", check_for_ban, 100); 61 module:hook("pre-presence/full", check_for_ban, 100);