comparison mod_register_json/register_json/mod_register_json.lua @ 1343:7dbde05b48a9

all the things: Remove trailing whitespace
author Florian Zeitz <florob@babelmonkeys.de>
date Tue, 11 Mar 2014 18:44:01 +0100
parents 716a2b9cc18d
children
comparison
equal deleted inserted replaced
1342:0ae065453dc9 1343:7dbde05b48a9
64 module:log("error", "Failed to save the mail addresses' hashes store.") 64 module:log("error", "Failed to save the mail addresses' hashes store.")
65 end 65 end
66 end 66 end
67 67
68 local function check_mail(address) 68 local function check_mail(address)
69 for _, pattern in ipairs(fm_patterns) do 69 for _, pattern in ipairs(fm_patterns) do
70 if address:match(pattern) then return false end 70 if address:match(pattern) then return false end
71 end 71 end
72 return true 72 return true
73 end 73 end
74 74
91 if secure and not request.secure then return nil end 91 if secure and not request.secure then return nil end
92 92
93 if request.method ~= "POST" then 93 if request.method ~= "POST" then
94 return http_response(event, 405, "Bad method.", {["Allow"] = "POST"}) 94 return http_response(event, 405, "Bad method.", {["Allow"] = "POST"})
95 end 95 end
96 96
97 local req_body 97 local req_body
98 -- We check that what we have is valid JSON wise else we throw an error... 98 -- We check that what we have is valid JSON wise else we throw an error...
99 if not pcall(function() req_body = json_decode(b64_decode(request.body)) end) then 99 if not pcall(function() req_body = json_decode(b64_decode(request.body)) end) then
100 module:log("debug", "Data submitted for user registration by %s failed to Decode.", user) 100 module:log("debug", "Data submitted for user registration by %s failed to Decode.", user)
101 return http_response(event, 400, "Decoding failed.") 101 return http_response(event, 400, "Decoding failed.")
111 111
112 -- Check if user is an admin of said host 112 -- Check if user is an admin of said host
113 if token ~= auth_token then 113 if token ~= auth_token then
114 module:log("warn", "%s tried to retrieve a registration token for %s@%s", request.ip, username, module.host) 114 module:log("warn", "%s tried to retrieve a registration token for %s@%s", request.ip, username, module.host)
115 return http_response(event, 401, "Auth token is invalid! The attempt has been logged.") 115 return http_response(event, 401, "Auth token is invalid! The attempt has been logged.")
116 else 116 else
117 -- Blacklist can be checked here. 117 -- Blacklist can be checked here.
118 if blacklist:contains(ip) then 118 if blacklist:contains(ip) then
119 module:log("warn", "Attempt of reg. submission to the JSON servlet from blacklisted address: %s", ip) 119 module:log("warn", "Attempt of reg. submission to the JSON servlet from blacklisted address: %s", ip)
120 return http_response(event, 403, "The specified address is blacklisted, sorry.") 120 return http_response(event, 403, "The specified address is blacklisted, sorry.")
121 end 121 end
122 122
123 if not check_mail(mail) then 123 if not check_mail(mail) then
124 module:log("warn", "%s attempted to use a mail address (%s) matching one of the forbidden patterns.", ip, mail) 124 module:log("warn", "%s attempted to use a mail address (%s) matching one of the forbidden patterns.", ip, mail)
125 return http_response(event, 403, "Requesting to register using this E-Mail address is forbidden, sorry.") 125 return http_response(event, 403, "Requesting to register using this E-Mail address is forbidden, sorry.")
140 if not usermanager.user_exists(username, module.host) then 140 if not usermanager.user_exists(username, module.host) then
141 -- if username fails to register successive requests shouldn't be throttled until one is successful. 141 -- if username fails to register successive requests shouldn't be throttled until one is successful.
142 if throttle_time and not whitelist:contains(ip) then 142 if throttle_time and not whitelist:contains(ip) then
143 if not recent_ips[ip] then 143 if not recent_ips[ip] then
144 recent_ips[ip] = os_time() 144 recent_ips[ip] = os_time()
145 else 145 else
146 if os_time() - recent_ips[ip] < throttle_time then 146 if os_time() - recent_ips[ip] < throttle_time then
147 recent_ips[ip] = os_time() 147 recent_ips[ip] = os_time()
148 module:log("warn", "JSON Registration request from %s has been throttled.", req_body["ip"]) 148 module:log("warn", "JSON Registration request from %s has been throttled.", req_body["ip"])
149 return http_response(event, 503, "Request throttled, wait a bit and try again.") 149 return http_response(event, 503, "Request throttled, wait a bit and try again.")
150 end 150 end
206 } 206 }
207 207
208 if request.method == "GET" then 208 if request.method == "GET" then
209 if path == "" then 209 if path == "" then
210 return r_template(event, "form") 210 return r_template(event, "form")
211 end 211 end
212 212
213 if valid_files[path] then 213 if valid_files[path] then
214 local data = open_file(valid_files[path]) 214 local data = open_file(valid_files[path])
215 if data then return data 215 if data then return data
216 else return http_response(event, 404, "Not found.") end 216 else return http_response(event, 404, "Not found.") end
221 local uuid = urldecode(body):match("^uuid=(.*)$") 221 local uuid = urldecode(body):match("^uuid=(.*)$")
222 222
223 if not pending[uuid] then 223 if not pending[uuid] then
224 return r_template(event, "fail") 224 return r_template(event, "fail")
225 else 225 else
226 local username, password, ip = 226 local username, password, ip =
227 pending[uuid].node, pending[uuid].password, pending[uuid].ip 227 pending[uuid].node, pending[uuid].password, pending[uuid].ip
228 228
229 local ok, error = usermanager.create_user(username, password, module.host) 229 local ok, error = usermanager.create_user(username, password, module.host)
230 if ok then 230 if ok then
231 module:fire_event( 231 module:fire_event(
232 "user-registered", 232 "user-registered",
233 { username = username, host = module.host, source = "mod_register_json", session = { ip = ip } } 233 { username = username, host = module.host, source = "mod_register_json", session = { ip = ip } }
234 ) 234 )
235 module:log("info", "Account %s@%s is successfully verified and activated", username, module.host) 235 module:log("info", "Account %s@%s is successfully verified and activated", username, module.host)
236 -- we shall not clean the user from the pending lists as long as registration doesn't succeed. 236 -- we shall not clean the user from the pending lists as long as registration doesn't succeed.
237 pending[uuid] = nil ; pending_node[username] = nil 237 pending[uuid] = nil ; pending_node[username] = nil
238 return r_template(event, "success") 238 return r_template(event, "success")
239 else 239 else
240 module:log("error", "User creation failed: "..error) 240 module:log("error", "User creation failed: "..error)
241 return http_response(event, 500, "Encountered server error while creating the user: "..error) 241 return http_response(event, 500, "Encountered server error while creating the user: "..error)
242 end 242 end
243 end 243 end
244 end 244 end
245 else 245 else
246 return http_response(event, 405, "Invalid method.") 246 return http_response(event, 405, "Invalid method.")
247 end 247 end
248 end 248 end
249 249