Mercurial > prosody-modules
view mod_log_json/mod_log_json.lua @ 5407:149634647b48
mod_http_oauth2: Don't issue client_secret when not using authentication
This is pretty much only for implicit flow, which is considered insecure
anyway, so this is of limited value. If we delete all the implicit flow
code, this could be reverted.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 02 May 2023 16:39:32 +0200 |
parents | 807007913f67 |
children | 0b347a7c5b5f |
line wrap: on
line source
local pack = table.pack or require "util.table".pack; local json = require "util.json"; local array = require "util.array"; local datetime = require "util.datetime".datetime; local socket = require "socket"; module:set_global(); local function sink_maker(config) local send = function () end if config.filename then local logfile = io.open(config.filename, "a+"); logfile:setvbuf("no"); function send(payload) logfile:write(payload, "\n"); end elseif config.udp_host and config.udp_port then local conn = socket.udp(); conn:setpeername(config.udp_host, config.udp_port); function send(payload) conn:send(payload); end end local format = require "util.format".format; local do_format = config.formatted_as or false; return function (source, level, message, ...) local args = pack(...); for i = 1, args.n do if args[i] == nil then args[i] = json.null; elseif type(args[i]) ~= "string" or type(args[i]) ~= "number" then args[i] = tostring(args[i]); end end args.n = nil; local payload = { datetime = datetime(), source = source, level = level, message = message, args = array(args); }; if do_format then payload[do_format] = format(message, ...) end send(json.encode(payload)); end end function module.unload() -- deregister require"core.loggingmanager".register_sink_type("json", nil); end require"core.loggingmanager".register_sink_type("json", sink_maker);