Comparison

mod_register_json/mod_register_json.lua @ 370:16da8cd69715

mod_register_json: There again, finally found the right way to pass the ports table to be processed correctly.
author Marco Cirillo <maranda@lightwitch.org>
date Fri, 22 Apr 2011 01:49:53 +0000
parent 369:29a8828243ce
child 429:ea6641deec12
comparison
equal deleted inserted replaced
369:29a8828243ce 370:16da8cd69715
7 local jid_prep = require "util.jid".prep; 7 local jid_prep = require "util.jid".prep;
8 local jid_split = require "util.jid".split; 8 local jid_split = require "util.jid".split;
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 os_time = os.time; 13 local os_time = os.time;
13 14
14 module.host = "*" -- HTTP/BOSH Servlets need to be global. 15 module.host = "*" -- HTTP/BOSH Servlets need to be global.
15 16
16 -- Pick up configuration. 17 -- Pick up configuration.
104 end 105 end
105 end 106 end
106 107
107 -- Set it up! 108 -- Set it up!
108 local function setup() 109 local function setup()
109 local port = module:get_option("reg_servlet_port") or 9280; 110 local ports = module:get_option("reg_servlet_ports") or { 9280 };
110 local base_name = module:get_option("reg_servlet_base") or "register_account"; 111 local port_number, base_name, ssl_table;
111 local ssl_cert = module:get_option("reg_servlet_sslcert") or false; 112 for _, opts in ipairs(ports) do
112 local ssl_key = module:get_option("reg_servlet_sslkey") or false; 113 if type(opts) == "number" then
113 if not ssl_cert or not ssl_key then 114 port_number, base_name = opts, "register_account";
114 require "net.httpserver".new_from_config({ port = port }, handle_req, { base = base_name }); 115 elseif type(opts) == "table" then
116 port_number, base_name, ssl_table = opts.port or 9280, opts.path or "register_account", opts.ssl or nil;
117 elseif type(opts) == "string" then
118 base_name, port_number = opts, 9280;
119 end
120 end
121
122 if ssl_table == nil then
123 ports = { { port = port_number } };
124 httpserver.new_from_config(ports, handle_req, { base = base_name });
115 else 125 else
116 if module:get_option("reg_servlet_port") == nil then port = 9443; end 126 if port_number == 9280 then port_number = 9443; end
117 require "net.httpserver".new_from_config({ port = port; ssl = { key = ssl_key, certificate = ssl_cert }; }, handle_req, { base = base_name }); 127 ports = { { port = port_number, ssl = ssl_table } };
128 httpserver.new_from_config(ports, handle_req, { base = base_name });
118 end 129 end
119 end 130 end
120 131
121 if prosody.start_time then -- already started 132 if prosody.start_time then -- already started
122 setup(); 133 setup();