Annotate

plugins/register.lua @ 445:b119dc4d8bc2

plugins.smacks: Don't warn about zero stanzas acked It's only if the count somehow goes backwards that something is really wrong. An ack for zero stanzas is fine and we don't need to do anything.
author Kim Alvefur <zash@zash.se>
date Thu, 10 Jun 2021 11:58:23 +0200
parent 343:0d8fb22404c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
250
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 235
diff changeset
1 local verse = require "verse";
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 235
diff changeset
2
235
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local xmlns_register = "jabber:iq:register";
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 function verse.plugins.register(stream)
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 local function handle_features(features_stanza)
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 if features_stanza:get_child("register", "http://jabber.org/features/iq-register") then
343
0d8fb22404c3 plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents: 342
diff changeset
8 local request = verse.iq({ to = stream.host_, type = "set" })
235
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 :tag("query", { xmlns = xmlns_register })
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 :tag("username"):text(stream.username):up()
343
0d8fb22404c3 plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents: 342
diff changeset
11 :tag("password"):text(stream.password):up();
0d8fb22404c3 plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents: 342
diff changeset
12 if stream.register_email then
0d8fb22404c3 plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents: 342
diff changeset
13 request:tag("email"):text(stream.register_email):up();
0d8fb22404c3 plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents: 342
diff changeset
14 end
0d8fb22404c3 plugins.register: Support submitting email when registering an account
Matthew Wild <mwild1@gmail.com>
parents: 342
diff changeset
15 stream:send_iq(request, function (result)
235
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 if result.attr.type == "result" then
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 stream:event("registration-success");
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 else
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 local type, condition, text = result:get_error();
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 stream:debug("Registration failed: %s", condition);
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 stream:event("registration-failure", { type = type, condition = condition, text = text });
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end);
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 else
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 stream:debug("In-band registration not offered by server");
342
7aed4bc4949c plugins.register: Fix event name (failure vs. failed)
Matthew Wild <mwild1@gmail.com>
parents: 250
diff changeset
26 stream:event("registration-failure", { condition = "service-unavailable" });
235
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 stream:unhook("stream-features", handle_features);
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 return true;
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 end
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 stream:hook("stream-features", handle_features, 310);
3c93d6119477 plugins.register: Add in-band registration plugin
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 end