Mercurial > prosody-modules
annotate mod_dwd/mod_dwd.lua @ 4542:fb4a50bf60f1
mod_prometheus: Invoke stats collection if in 'manual' mode
Since 10d13e0554f9 a special value for statistics_interval "manual"
exists, where a module is expected to invoke processing in connection to
collection of stats. This makes internal collection and exporting to
Prometheus happens at the same time with no chance of timers getting out
of sync.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 13 Apr 2021 23:53:53 +0200 |
| parents | 4e235e565693 |
| children |
| rev | line source |
|---|---|
| 928 | 1 local hosts = _G.hosts; |
| 2 local st = require "util.stanza"; | |
| 3 local nameprep = require "util.encodings".stringprep.nameprep; | |
| 4 local cert_verify_identity = require "util.x509".verify_identity; | |
| 5 | |
| 6 module:hook("stanza/jabber:server:dialback:result", function(event) | |
| 7 local origin, stanza = event.origin, event.stanza; | |
| 8 | |
| 9 if origin.cert_chain_status == "valid" and origin.type == "s2sin_unauthed" or origin.type == "s2sin" then | |
| 10 local attr = stanza.attr; | |
| 11 local to, from = nameprep(attr.to), nameprep(attr.from); | |
| 12 | |
| 13 local conn = origin.conn:socket() | |
| 14 local cert; | |
| 15 if conn.getpeercertificate then | |
| 16 cert = conn:getpeercertificate() | |
| 17 end | |
| 18 | |
| 19 if cert and hosts[to] and cert_verify_identity(from, "xmpp-server", cert) then | |
| 20 | |
| 21 -- COMPAT: ejabberd, gmail and perhaps others do not always set 'to' and 'from' | |
| 22 -- on streams. We fill in the session's to/from here instead. | |
| 23 if not origin.from_host then | |
| 24 origin.from_host = from; | |
| 25 end | |
| 26 if not origin.to_host then | |
| 27 origin.to_host = to; | |
| 28 end | |
| 29 | |
| 30 module:log("info", "Accepting Dialback without Dialback for %s", from); | |
|
932
4e235e565693
mod_bidi, mod_dwd, mod_s2s_idle_timeout: Update for recent 0.9 changes (612467e263af)
Matthew Wild <mwild1@gmail.com>
parents:
928
diff
changeset
|
31 module:fire_event("s2s-authenticated", { session = origin, host = from }); |
| 928 | 32 origin.sends2s( |
| 33 st.stanza("db:result", { from = attr.to, to = attr.from, id = attr.id, type = "valid" })); | |
| 34 | |
| 35 return true; | |
| 36 end | |
| 37 end | |
| 38 end, 100); | |
| 39 | |
| 40 |
