6 |
6 |
7 local log = require "util.logger".init("mod_dialback"); |
7 local log = require "util.logger".init("mod_dialback"); |
8 |
8 |
9 local xmlns_dialback = "jabber:server:dialback"; |
9 local xmlns_dialback = "jabber:server:dialback"; |
10 |
10 |
11 add_handler({"s2sin_unauthed", "s2sin"}, "verify", xmlns_dialback, |
11 module:add_handler({"s2sin_unauthed", "s2sin"}, "verify", xmlns_dialback, |
12 function (origin, stanza) |
12 function (origin, stanza) |
13 -- We are being asked to verify the key, to ensure it was generated by us |
13 -- We are being asked to verify the key, to ensure it was generated by us |
14 log("debug", "verifying dialback key..."); |
14 log("debug", "verifying dialback key..."); |
15 local attr = stanza.attr; |
15 local attr = stanza.attr; |
16 -- FIXME: Grr, ejabberd breaks this one too?? it is black and white in XEP-220 example 34 |
16 -- FIXME: Grr, ejabberd breaks this one too?? it is black and white in XEP-220 example 34 |
24 end |
24 end |
25 log("debug", "verifyied dialback key... it is %s", type); |
25 log("debug", "verifyied dialback key... it is %s", type); |
26 origin.sends2s(format("<db:verify from='%s' to='%s' id='%s' type='%s'>%s</db:verify>", attr.to, attr.from, attr.id, type, stanza[1])); |
26 origin.sends2s(format("<db:verify from='%s' to='%s' id='%s' type='%s'>%s</db:verify>", attr.to, attr.from, attr.id, type, stanza[1])); |
27 end); |
27 end); |
28 |
28 |
29 add_handler("s2sin_unauthed", "result", xmlns_dialback, |
29 module:add_handler("s2sin_unauthed", "result", xmlns_dialback, |
30 function (origin, stanza) |
30 function (origin, stanza) |
31 -- he wants to be identified through dialback |
31 -- he wants to be identified through dialback |
32 -- We need to check the key with the Authoritative server |
32 -- We need to check the key with the Authoritative server |
33 local attr = stanza.attr; |
33 local attr = stanza.attr; |
34 local attr = stanza.attr; |
34 local attr = stanza.attr; |
40 format("<db:verify from='%s' to='%s' id='%s'>%s</db:verify>", origin.to_host, origin.from_host, |
40 format("<db:verify from='%s' to='%s' id='%s'>%s</db:verify>", origin.to_host, origin.from_host, |
41 origin.streamid, origin.dialback_key)); |
41 origin.streamid, origin.dialback_key)); |
42 hosts[origin.to_host].s2sout[origin.from_host].dialback_verifying = origin; |
42 hosts[origin.to_host].s2sout[origin.from_host].dialback_verifying = origin; |
43 end); |
43 end); |
44 |
44 |
45 add_handler({ "s2sout_unauthed", "s2sout" }, "verify", xmlns_dialback, |
45 module:add_handler({ "s2sout_unauthed", "s2sout" }, "verify", xmlns_dialback, |
46 function (origin, stanza) |
46 function (origin, stanza) |
47 if origin.dialback_verifying then |
47 if origin.dialback_verifying then |
48 local valid; |
48 local valid; |
49 local attr = stanza.attr; |
49 local attr = stanza.attr; |
50 if attr.type == "valid" then |
50 if attr.type == "valid" then |
62 attr.to, attr.from, attr.id, valid, origin.dialback_verifying.dialback_key)); |
62 attr.to, attr.from, attr.id, valid, origin.dialback_verifying.dialback_key)); |
63 end |
63 end |
64 end |
64 end |
65 end); |
65 end); |
66 |
66 |
67 add_handler({ "s2sout_unauthed", "s2sout" }, "result", xmlns_dialback, |
67 module:add_handler({ "s2sout_unauthed", "s2sout" }, "result", xmlns_dialback, |
68 function (origin, stanza) |
68 function (origin, stanza) |
69 if stanza.attr.type == "valid" then |
69 if stanza.attr.type == "valid" then |
70 s2s_make_authenticated(origin); |
70 s2s_make_authenticated(origin); |
71 else |
71 else |
72 -- FIXME |
72 -- FIXME |