+function new_from_config(ports, default_base, handle_request)
+ for _, options in ipairs(ports) do
+ local port, base, ssl, interface = 5280, default_base, false, nil;
+ if type(options) == "number" then
+ port = options;
+ elseif type(options) == "table" then
+ port, base, ssl, interface = options.port or 5280, options.path or default_base, options.ssl or false, options.interface;
+ elseif type(options) == "string" then
+ base = options;
+ end
+
+ if ssl then
+ ssl.mode = "server";
+ ssl.protocol = "sslv23";
+ end
+
+ new{ port = port, base = base, handler = handle_request, ssl = ssl, type = (ssl and "ssl") or "tcp" }
+ end
+end
+