Software /
code /
prosody-modules
Annotate
mod_dwd/mod_dwd.lua @ 5186:fa3059e653fa
mod_http_oauth2: Implement the Implicit flow
Everyone says this is insecure and bad, but it's also the only thing
that makes sense for e.g. pure JavaScript clients, but hey implement
this even more complicated thing instead!
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 02 Mar 2023 22:06:50 +0100 |
parent | 932:4e235e565693 |
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 |