-- (C) 2011, Marco Cirillo (LW.Org) -- Exposes stats on HTTP for the stanza counter module. module:set_global() local ports = module:get_option_array("stanza_counter_http_ports", {{ port = 5280 }}) local httpserver = require "net.httpserver" -- http handlers local r_200 = "\n\n\nProsody's Stanza Counter\n\n\n\n\n

Incoming and Outgoing stanzas divided per type

\n

Incoming IQs: %d
\nOutgoing IQs: %d
\nIncoming Messages: %d
\nOutgoing Messages: %d
\nIncoming Presences: %d
\nOutgoing Presences: %d

\n\n\n\n" local r_err = "\n\n\nProsody's Stanza Counter - Error %s\n\n\n\n\n

%s

\n\n\n\n" local function res(code, r, h) local response = { status = code, body = r } if h then response.headers = h end return response end local function req(method, body, request) if not prosody.stanza_counter then local err500 = r_err:format("500", "Stats not found, is the counter module loaded?") return res(500, err500) end if method == "GET" then local forge_res = r_200:format(prosody.stanza_counter.iq["incoming"], prosody.stanza_counter.iq["outgoing"], prosody.stanza_counter.message["incoming"], prosody.stanza_counter.message["outgoing"], prosody.stanza_counter.presence["incoming"], prosody.stanza_counter.presence["outgoing"]) return res(200, forge_res) else local err405 = r_err:format("405", "Only GET is supported") return res(405, err405, {["Allow"] = "GET"}) end end -- initialization. -- init http and cleanup interface local function setup() httpserver.new_from_config(ports, req, { base = "stanza-counter" }) end -- set it if prosody.start_time then setup() else module:hook("server-started", setup) end