-add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, stanza)
- if stanza.tags[1].name == "query" then
+local recent_ips = {};
+local min_seconds_between_registrations = config.get(module.host, "core", "min_seconds_between_registrations");
+local whitelist_only = config.get(module.host, "core", "whitelist_registration_only");
+local whitelisted_ips = config.get(module.host, "core", "registration_whitelist") or { "127.0.0.1" };
+local blacklisted_ips = config.get(module.host, "core", "registration_blacklist") or {};
+
+for _, ip in ipairs(whitelisted_ips) do whitelisted_ips[ip] = true; end
+for _, ip in ipairs(blacklisted_ips) do blacklisted_ips[ip] = true; end
+
+module:add_iq_handler("c2s_unauthed", "jabber:iq:register", function (session, stanza)
+ if config.get(module.host, "core", "allow_registration") == false then
+ session.send(st.error_reply(stanza, "cancel", "service-unavailable"));
+ elseif stanza.tags[1].name == "query" then