Mercurial > prosody-modules
comparison mod_register_json/mod_register_json.lua @ 430:f0fafd19fd72
mod_register_json: changed pestered code to something less pestered. (added nodeprep)
author | Marco Cirillo <maranda@lightwitch.org> |
---|---|
date | Thu, 15 Sep 2011 21:23:49 +0000 |
parents | ea6641deec12 |
children | 84e992f70ba3 |
comparison
equal
deleted
inserted
replaced
429:ea6641deec12 | 430:f0fafd19fd72 |
---|---|
9 local usermanager = require "core.usermanager"; | 9 local usermanager = require "core.usermanager"; |
10 local b64_decode = require "util.encodings".base64.decode; | 10 local b64_decode = require "util.encodings".base64.decode; |
11 local json_decode = require "util.json".decode; | 11 local json_decode = require "util.json".decode; |
12 local httpserver = require "net.httpserver"; | 12 local httpserver = require "net.httpserver"; |
13 local os_time = os.time; | 13 local os_time = os.time; |
14 local nodeprep = require "util.encodings".stringprep.nodeprep; | |
14 | 15 |
15 module.host = "*" -- HTTP/BOSH Servlets need to be global. | 16 module.host = "*" -- HTTP/BOSH Servlets need to be global. |
16 | 17 |
17 -- Pick up configuration. | 18 -- Pick up configuration. |
18 | 19 |
91 ip.time = os_time(); | 92 ip.time = os_time(); |
92 end | 93 end |
93 end | 94 end |
94 | 95 |
95 -- We first check if the supplied username for registration is already there. | 96 -- We first check if the supplied username for registration is already there. |
96 if not usermanager.user_exists(req_body["username"], req_body["host"]) then | 97 -- And nodeprep the username |
97 -- Sanity checks for the username. | 98 local username = nodeprep(req_body["username"]); |
98 if req_body["username"]:find(" ") or req_body["username"]:find("@") or req_body["username"]:find("<") or | 99 if not usermanager.user_exists(username, req_body["host"]) then |
99 req_body["username"]:find(">") or req_body["username"]:find("\"") or req_body["username"]:find("\'") or | 100 if not username then |
100 req_body["username"]:find("/") then | 101 module:log("debug", "%s supplied an username containing invalid characters: %s", user, username); |
101 module:log("debug", "%s supplied an username containing invalid characters: %s", user, req_body["username"]); | |
102 return http_response(406, "Supplied username contains invalid characters, see RFC 6122."); | 102 return http_response(406, "Supplied username contains invalid characters, see RFC 6122."); |
103 else | 103 else |
104 usermanager.create_user(req_body["username"], req_body["password"], req_body["host"]); | 104 usermanager.create_user(username, req_body["password"], req_body["host"]); |
105 module:log("debug", "%s registration data submission for %s is successful", user, req_body["username"]); | 105 module:log("debug", "%s registration data submission for %s is successful", user, username); |
106 return http_response(200, "Done."); | 106 return http_response(200, "Done."); |
107 end | 107 end |
108 else | 108 else |
109 module:log("debug", "%s registration data submission for %s failed (user already exists)", user, req_body["username"]); | 109 module:log("debug", "%s registration data submission for %s failed (user already exists)", user, username); |
110 return http_response(409, "User already exists."); | 110 return http_response(409, "User already exists."); |
111 end | 111 end |
112 end | 112 end |
113 end | 113 end |
114 end | 114 end |