Software / code / verse
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 |
| rev | line source |
|---|---|
| 250 | 1 local verse = require "verse"; |
| 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 |