Software / code / prosody
Comparison
plugins/mod_register.lua @ 4061:efa1f62a751b
mod_register: Add registration_compat config option to allow account remove requests addressed to='host' (defaults to true)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 04 Jan 2011 17:15:47 +0000 |
| parent | 3540:bc139431830b |
| child | 3996:7f35b292531b |
comparison
equal
deleted
inserted
replaced
| 4060:52b437eb7059 | 4061:efa1f62a751b |
|---|---|
| 13 local usermanager_user_exists = require "core.usermanager".user_exists; | 13 local usermanager_user_exists = require "core.usermanager".user_exists; |
| 14 local usermanager_create_user = require "core.usermanager".create_user; | 14 local usermanager_create_user = require "core.usermanager".create_user; |
| 15 local usermanager_set_password = require "core.usermanager".set_password; | 15 local usermanager_set_password = require "core.usermanager".set_password; |
| 16 local os_time = os.time; | 16 local os_time = os.time; |
| 17 local nodeprep = require "util.encodings".stringprep.nodeprep; | 17 local nodeprep = require "util.encodings".stringprep.nodeprep; |
| 18 local jid_bare = require "util.jid".bare; | |
| 19 | |
| 20 local compat = module:get_option_boolean("registration_compat", true); | |
| 18 | 21 |
| 19 module:add_feature("jabber:iq:register"); | 22 module:add_feature("jabber:iq:register"); |
| 20 | 23 |
| 21 module:hook("iq/self/jabber:iq:register:query", function(event) | 24 local function handle_registration_stanza(event) |
| 22 local session, stanza = event.origin, event.stanza; | 25 local session, stanza = event.origin, event.stanza; |
| 23 | 26 |
| 24 local query = stanza.tags[1]; | 27 local query = stanza.tags[1]; |
| 25 if stanza.attr.type == "get" then | 28 if stanza.attr.type == "get" then |
| 26 local reply = st.reply(stanza); | 29 local reply = st.reply(stanza); |
| 84 session.send(st.error_reply(stanza, "modify", "bad-request")); | 87 session.send(st.error_reply(stanza, "modify", "bad-request")); |
| 85 end | 88 end |
| 86 end | 89 end |
| 87 end | 90 end |
| 88 return true; | 91 return true; |
| 89 end); | 92 end |
| 93 | |
| 94 module:hook("iq/self/jabber:iq:register:query", handle_registration_stanza); | |
| 95 if compat then | |
| 96 module:hook("iq/host/jabber:iq:register:query", function (event) | |
| 97 local session, stanza = event.origin, event.stanza; | |
| 98 if session.type == "c2s" and jid_bare(stanza.attr.to) == session.host then | |
| 99 return handle_registration_stanza(event); | |
| 100 end | |
| 101 end); | |
| 102 end | |
| 90 | 103 |
| 91 local recent_ips = {}; | 104 local recent_ips = {}; |
| 92 local min_seconds_between_registrations = module:get_option("min_seconds_between_registrations"); | 105 local min_seconds_between_registrations = module:get_option("min_seconds_between_registrations"); |
| 93 local whitelist_only = module:get_option("whitelist_registration_only"); | 106 local whitelist_only = module:get_option("whitelist_registration_only"); |
| 94 local whitelisted_ips = module:get_option("registration_whitelist") or { "127.0.0.1" }; | 107 local whitelisted_ips = module:get_option("registration_whitelist") or { "127.0.0.1" }; |