Changeset

7709:0af1783d1592

mod_register: Additional logging for various registration failure cases
author Kim Alvefur <zash@zash.se>
date Wed, 02 Nov 2016 13:08:12 +0100
parents 7708:c420a38db5ef
children 7710:08f5b483ff00
files plugins/mod_register.lua
diffstat 1 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_register.lua	Tue Oct 18 22:47:26 2016 +0200
+++ b/plugins/mod_register.lua	Wed Nov 02 13:08:12 2016 +0100
@@ -204,6 +204,7 @@
 	local log = session.log or module._log;
 
 	if not(allow_registration) or session.type ~= "c2s_unauthed" then
+		log("debug", "Attempted registration when disabled or already authenticated");
 		session.send(st.error_reply(stanza, "cancel", "service-unavailable"));
 	else
 		local query = stanza.tags[1];
@@ -217,6 +218,10 @@
 			else
 				local data, errors = parse_response(query);
 				if errors then
+					log("debug", "Error parsing registration form:");
+					for field, err in pairs(errors) do
+						log("debug", "Field %q: %s", field, err);
+					end
 					session.send(st.error_reply(stanza, "modify", "not-acceptable"));
 				else
 					-- Check that the user is not blacklisted or registering too often
@@ -227,6 +232,7 @@
 						return true;
 					elseif min_seconds_between_registrations and not whitelisted_ips[session.ip] then
 						if not check_throttle(session.ip) then
+							log("debug", "Registrations over limit for ip %s", session.ip or "?");
 							session.send(st.error_reply(stanza, "wait", "not-acceptable"));
 							return true;
 						end
@@ -235,20 +241,24 @@
 					data.username, data.password = nil, nil;
 					local host = module.host;
 					if not username or username == "" then
+						log("debug", "The requested username is invalid.");
 						session.send(st.error_reply(stanza, "modify", "not-acceptable", "The requested username is invalid."));
 						return true;
 					end
 					local user = { username = username , host = host, allowed = true }
 					module:fire_event("user-registering", user);
 					if not user.allowed then
+						log("debug", "Registration disallowed by module");
 						session.send(st.error_reply(stanza, "modify", "not-acceptable", "The requested username is forbidden."));
 					elseif usermanager_user_exists(username, host) then
+						log("debug", "Attempt to register with existing username");
 						session.send(st.error_reply(stanza, "cancel", "conflict", "The requested username already exists."));
 					else
 						-- TODO unable to write file, file may be locked, etc, what's the correct error?
 						local error_reply = st.error_reply(stanza, "wait", "internal-server-error", "Failed to write data to disk.");
 						if usermanager_create_user(username, password, host) then
 							if next(data) and not account_details:set(username, data) then
+								log("debug", "Could not store extra details");
 								usermanager_delete_user(username, host);
 								session.send(error_reply);
 								return true;
@@ -259,6 +269,7 @@
 								username = username, host = host, source = "mod_register",
 								session = session });
 						else
+							log("debug", "Could not create user");
 							session.send(error_reply);
 						end
 					end