Mercurial > prosody-modules
comparison mod_register_json/mod_register_json.lua @ 357:59345fd38ad9
mod_register_json: Changed a few bits to allow the service to be specified as standalone (by default uses port 9443), Q: Does it work?
| author | Marco Cirillo <maranda@lightwitch.org> |
|---|---|
| date | Tue, 12 Apr 2011 17:13:38 +0000 |
| parents | 5dacfbc9cd86 |
| children | 4483bb889d12 |
comparison
equal
deleted
inserted
replaced
| 356:5dacfbc9cd86 | 357:59345fd38ad9 |
|---|---|
| 6 | 6 |
| 7 local usermanager = require "core.usermanager"; | 7 local usermanager = require "core.usermanager"; |
| 8 local b64_decode = require "util.encodings".base64.decode; | 8 local b64_decode = require "util.encodings".base64.decode; |
| 9 local json_decode = require "util.json".decode; | 9 local json_decode = require "util.json".decode; |
| 10 | 10 |
| 11 module.host = "*" -- HTTP/BOSH Servlets need to be loaded globally. | 11 module.host = "*" -- HTTP/BOSH Servlets need to be global. |
| 12 | 12 |
| 13 local set_realm_name = module:get_option("reg_servlet_realm") or "Restricted"; | 13 local set_realm_name = module:get_option("reg_servlet_realm") or "Restricted"; |
| 14 | 14 |
| 15 local function http_response(code, message, extra_headers) | 15 local function http_response(code, message, extra_headers) |
| 16 local response = { | 16 local response = { |
| 48 module:log("debug", "%s tried to submit registration data for %s but he's not an admin", user, req_body["host"]) | 48 module:log("debug", "%s tried to submit registration data for %s but he's not an admin", user, req_body["host"]) |
| 49 return http_response(401, "I obey only to my masters... Have a nice day."); | 49 return http_response(401, "I obey only to my masters... Have a nice day."); |
| 50 else | 50 else |
| 51 -- Various sanity checks. | 51 -- Various sanity checks. |
| 52 if req_body == nil then module:log("debug", "JSON data submitted for user registration by %s failed to Decode.", user); return http_response(400, "JSON Decoding failed."); end | 52 if req_body == nil then module:log("debug", "JSON data submitted for user registration by %s failed to Decode.", user); return http_response(400, "JSON Decoding failed."); end |
| 53 if req_body["password"]:match("%s") then module:log("debug", "Password submitted for user registration by %s contained spaces.", user); return http_response(400, "Supplied user passwords can't contain spaces."); end | |
| 54 -- We first check if the supplied username for registration is already there. | 53 -- We first check if the supplied username for registration is already there. |
| 55 if not usermanager.user_exists(req_body["username"], req_body["host"]) then | 54 if not usermanager.user_exists(req_body["username"], req_body["host"]) then |
| 56 usermanager.create_user(req_body["username"], req_body["password"], req_body["host"]); | 55 usermanager.create_user(req_body["username"], req_body["password"], req_body["host]); |
| 57 module:log("debug", "%s registration data submission for %s is successful", user, req_body["user"]); | 56 module:log("debug", "%s registration data submission for %s is successful", user, req_body["user"]); |
| 58 return http_response(200, "Done."); | 57 return http_response(200, "Done."); |
| 59 else | 58 else |
| 60 module:log("debug", "%s registration data submission for %s failed (user already exists)", user, req_body["user"]); | 59 module:log("debug", "%s registration data submission for %s failed (user already exists)", user, req_body["user"]); |
| 61 return http_response(409, "User already exists."); | 60 return http_response(409, "User already exists."); |
| 62 end | 61 end |
| 63 end | 62 end |
| 64 end | 63 end |
| 65 | 64 |
| 66 local function setup() | 65 local function setup() |
| 67 local ports = module:get_option("reg_servlet_port") or { 5280 }; | 66 local ports = module:get_option("reg_servlet_port") or { 9443 }; |
| 68 local base_name = module:get_option("reg_servlet_base") or "register_account"; | 67 local base_name = module:get_option("reg_servlet_base") or "register_account"; |
| 69 require "net.httpserver".new_from_config(ports, handle_req, { base = base_name }); | 68 local ssl_cert = module:get_option("reg_servlet_sslcert") or false; |
| 69 local ssl_key = module:get_option("reg_servlet_sslkey") or false; | |
| 70 if not ssl_cert or not ssl_key then | |
| 71 require "net.httpserver".new_from_config(ports, handle_req, { base = base_name }); | |
| 72 else | |
| 73 require "net.httpserver".new_from_config(ports, handle_req, { ssl = { key = ssl_key, certificate = ssl_cert }, base = base_name }); | |
| 74 end | |
| 70 end | 75 end |
| 71 if prosody.start_time then -- already started | 76 if prosody.start_time then -- already started |
| 72 setup(); | 77 setup(); |
| 73 else | 78 else |
| 74 prosody.events.add_handler("server-started", setup); | 79 prosody.events.add_handler("server-started", setup); |
