+ return true;
+ end
+end);
+
+module:hook_stanza("urn:ietf:params:xml:ns:xmpp-sasl", "failure", function (origin, stanza)
+ if origin.external_auth == "failed" then
+ module:log("debug", "SASL EXTERNAL failed, falling back to dialback");
+ initiate_dialback(origin);
+ return true;
+ end
+end, 100);
+
+module:hook_stanza(xmlns_stream, "features", function (origin, stanza)
+ if not origin.external_auth or origin.external_auth == "failed" then
+ module:log("debug", "Initiating dialback...");
+ initiate_dialback(origin);
+ return true;
+ end
+end, 100);
+
+module:hook("s2sout-authenticate-legacy", function (event)
+ module:log("debug", "Initiating dialback...");
+ initiate_dialback(event.origin);
+ return true;
+end, 100);
+
+-- Offer dialback to incoming hosts
+module:hook("s2s-stream-features", function (data)
+ data.features:tag("dialback", { xmlns='urn:xmpp:features:dialback' }):up();
+end);