Mercurial > prosody-modules
view mod_http_logging/mod_http_logging.lua @ 3953:2c6d5734ae04
mod_rest: Add JSON mapping of XEP-0128: Service Discovery Extensions
Example XEP-0157 payload:
{
"disco" : {
"extensions" : {
"http://jabber.org/network/serverinfo" : {
"abuse-addresses" : [
"mailto:abuse@shakespeare.lit",
"xmpp:abuse@shakespeare.lit"
],
"admin-addresses" : [
"mailto:admin@shakespeare.lit",
"xmpp:admin@shakespeare.lit"
],
"feedback-addresses" : [
"http://shakespeare.lit/feedback.php",
"mailto:feedback@shakespeare.lit",
"xmpp:feedback@shakespeare.lit"
],
"sales-addresses" : [
"xmpp:bard@shakespeare.lit"
],
"security-addresses" : [
"xmpp:security@shakespeare.lit"
],
"support-addresses" : [
"http://shakespeare.lit/support.php",
"xmpp:support@shakespeare.lit"
]
}
}
}
}
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 23 Mar 2020 19:03:04 +0100 |
parents | c89be016a075 |
children |
line wrap: on
line source
-- mod_http_logging -- -- Copyright (C) 2015 Kim Alvefur -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- -- Produces HTTP logs in the style of Apache -- -- TODO -- * Configurable format? module:set_global(); local server = require "net.http.server"; local function get_content_len(response, body) local len = response.headers.content_length; if len then return len; end if not body then body = response.body; end if body then return #tostring(body); end end local function log_response(response, body) local len = tostring(get_content_len(response, body) or "-"); local request = response.request; local ip = request.ip; if not ip and request.conn then ip = request.conn:ip(); end local req = string.format("%s %s HTTP/%s", request.method, request.path, request.httpversion); local date = os.date("%d/%m/%Y:%H:%M:%S %z"); module:log("info", "%s - - [%s] \"%s\" %d %s", ip, date, req, response.status_code, len); end local send_response = server.send_response; local function log_and_send_response(response, body) if not response.finished then log_response(response, body); end return send_response(response, body); end local send_file = server.send_file; local function log_and_send_file(response, f) if not response.finished then log_response(response); end return send_file(response, f); end if module.wrap_object_event then -- Use object event wrapping, allows clean unloading of the module module:wrap_object_event(server._events, false, function (handlers, event_name, event_data) if event_data.response then event_data.response.send = log_and_send_response; event_data.response.send_file = log_and_send_file; end return handlers(event_name, event_data); end); else -- Fall back to monkeypatching, unlikely to behave nicely in the -- presence of other modules also doing this server.send_response = log_and_send_response; server.send_file = log_and_send_file; function module.unload() server.send_response = send_response; server.send_file = send_file; end end