40 return res(405, err405, {["Allow"] = "GET"}) |
40 return res(405, err405, {["Allow"] = "GET"}) |
41 end |
41 end |
42 end |
42 end |
43 |
43 |
44 -- initialization. |
44 -- initialization. |
45 -- init http interface |
45 -- init http and cleanup interface |
|
46 |
|
47 function cleanup() -- recycled from mod_register_json, it's handy |
|
48 module:log("debug", "Cleaning up handlers and stuff as module is being unloaded.") |
|
49 for _, options in ipairs(ports) do |
|
50 if options.port then |
|
51 httpserver.new.http_servers[options.port].handlers[options.path or "stanza-counter"] = nil |
|
52 end |
|
53 end |
|
54 |
|
55 -- if there are no handlers left clean and close the socket, doesn't work with server_event |
|
56 local event = require "core.configmanager".get("*", "core", "use_libevent") |
|
57 |
|
58 if not event then |
|
59 for _, options in ipairs(ports) do |
|
60 if options.port and not next(httpserver.new.http_servers[options.port].handlers) then |
|
61 httpserver.new.http_servers[options.port] = nil |
|
62 if options.interface then |
|
63 for _, value in ipairs(options.interface) do |
|
64 if server.getserver(value, options.port) then server.removeserver(value, options.port) end |
|
65 end |
|
66 else if server.getserver("*", options.port) then server.removeserver("*", options.port) end end |
|
67 end |
|
68 end |
|
69 end |
|
70 |
|
71 prosody.events.remove_handler("module-unloaded", cleanup) |
|
72 end |
|
73 |
46 local function setup() |
74 local function setup() |
47 httpserver.new_from_config(ports, req, { base = "stanza-counter" }) |
75 httpserver.new_from_config(ports, req, { base = "stanza-counter" }) |
|
76 prosody.events.add_handler("module-unloaded", cleanup) |
48 end |
77 end |
49 |
78 |
50 -- set it |
79 -- set it |
51 if prosody.start_time then setup() else module:hook("server-started", setup) end |
80 if prosody.start_time then setup() else module:hook("server-started", setup) end |