Software / code / verse
Annotate
plugins/register.lua @ 369:074c547fe05a
init: Log the error message that caused loading of a connection module to fail
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sat, 05 Sep 2015 15:13:52 +0100 |
| 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 |