Mercurial > prosody-modules
view mod_http_stats_stream/mod_http_stats_stream.lua @ 3568:6b3181fe5617
mod_auth_token: Timezone fix for TOTP checking
luatz.time() returns milliseconds since epoch which is in UTC time, so we don't
need to convert to UTC with gmtime.
By calling gmtime, TOTP validation was failing when this module wasn't running
on machine set to UTC time.
author | JC Brand <jc@opkode.com> |
---|---|
date | Thu, 02 May 2019 11:07:27 +0200 |
parents | 47a6f01231b2 |
children | fd054689a64c |
line wrap: on
line source
local statsman = require "core.statsmanager"; local json = require "util.json"; local sessions = {}; local function updates_client_closed(response) module:log("debug", "Streamstats client closed"); sessions[response] = nil; end local function get_updates(event) local request, response = event.request, event.response; response.on_destroy = updates_client_closed; response.conn:write(table.concat({ "HTTP/1.1 200 OK"; "Content-Type: text/event-stream"; "X-Accel-Buffering: no"; -- For nginx maybe? ""; "event: stats-full"; "data: "..json.encode(statsman.get_stats()); ""; ""; }, "\r\n")); sessions[response] = request; return true; end module:hook_global("stats-updated", function (event) local data = table.concat({ "event: stats-updated"; "data: "..json.encode(event.changed_stats); ""; ""; }, "\r\n") for response in pairs(sessions) do response.conn:write(data); end end); module:depends("http"); module:provides("http", { route = { GET = get_updates; } });