Mercurial > prosody-modules
comparison mod_register_dnsbl/mod_register_dnsbl.lua @ 4118:82482e7e92cb
mod_register_dnsbl: Handle missing session in user-registering event (thanks meaz)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 14 Sep 2020 13:58:47 +0100 |
| parents | bf9fc41bf7ad |
| children |
comparison
equal
deleted
inserted
replaced
| 4117:a1c6eea971ce | 4118:82482e7e92cb |
|---|---|
| 16 end | 16 end |
| 17 end | 17 end |
| 18 | 18 |
| 19 module:hook("user-registering", function (event) | 19 module:hook("user-registering", function (event) |
| 20 local session, ip = event.session, event.ip; | 20 local session, ip = event.session, event.ip; |
| 21 local log = (session and session.log) or module._log; | |
| 21 if not ip then | 22 if not ip then |
| 22 session.log("debug", "Unable to check DNSBL when IP is unknown"); | 23 log("debug", "Unable to check DNSBL when IP is unknown"); |
| 23 return; | 24 return; |
| 24 end | 25 end |
| 25 local rbl_ip, err = reverse(ip, rbl); | 26 local rbl_ip, err = reverse(ip, rbl); |
| 26 if not rbl_ip then | 27 if not rbl_ip then |
| 27 session.log("debug", "Unable to check DNSBL for ip %s: %s", ip, err); | 28 log("debug", "Unable to check DNSBL for ip %s: %s", ip, err); |
| 28 return; | 29 return; |
| 29 end | 30 end |
| 30 | 31 |
| 31 local wait, done = async.waiter(); | 32 local wait, done = async.waiter(); |
| 32 adns.lookup(function (reply) | 33 adns.lookup(function (reply) |
| 33 if reply and reply[1] and reply[1].a then | 34 if reply and reply[1] and reply[1].a then |
| 34 session.log("debug", "DNSBL response: %s IN A %s", rbl_ip, reply[1].a); | 35 log("debug", "DNSBL response: %s IN A %s", rbl_ip, reply[1].a); |
| 35 session.log("info", "Blocking %s from registering %s (dnsbl hit)", ip, event.username); | 36 log("info", "Blocking %s from registering %s (dnsbl hit)", ip, event.username); |
| 36 event.allowed = false; | 37 event.allowed = false; |
| 37 event.reason = "Blocked by DNSBL"; | 38 event.reason = "Blocked by DNSBL"; |
| 38 end | 39 end |
| 39 done(); | 40 done(); |
| 40 end, rbl_ip); | 41 end, rbl_ip); |
