annotate mod_http_debug/mod_http_debug.lua @ 5648:c217f4edfc4f

misc/mtail: Start of an mtail config Stashing it here in case anyone wants to continue working on it. Currently it's only counting log messages by level. Due to the permissions set by systemd on Prosody logs, mtail never managed to start correctly until permissions were manually relaxed.
author Kim Alvefur <zash@zash.se>
date Sun, 17 Sep 2023 13:36:30 +0200
parents b6af4d1ff8c1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5333
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local json = require "util.json"
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 module:depends("http")
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
4 local function handle_request(event)
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
5 local request = event.request;
5491
7842502c1157 mod_http_debug: Log some extended info about requests
Kim Alvefur <zash@zash.se>
parents: 5490
diff changeset
6 (request.log or module._log)("debug", "%s -- %s %q HTTP/%s -- %q -- %s", request.ip, request.method, request.url, request.httpversion, request.headers, request.body);
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
7 return {
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
8 status_code = 200;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
9 headers = { content_type = "application/json" };
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
10 host = module.host;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
11 body = json.encode {
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
12 body = request.body;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
13 headers = request.headers;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
14 httpversion = request.httpversion;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
15 id = request.id;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
16 ip = request.ip;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
17 method = request.method;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
18 path = request.path;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
19 secure = request.secure;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
20 url = request.url;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
21 };
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
22 }
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
23 end
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
24
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
25 local methods = module:get_option_set("http_debug_methods", { "GET"; "HEAD"; "DELETE"; "OPTIONS"; "PATCH"; "POST"; "PUT" });
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
26 local route = {};
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
27 for method in methods do
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
28 route[method] = handle_request;
5492
b6af4d1ff8c1 mod_http_debug: Handle any path under /debug/* as well
Kim Alvefur <zash@zash.se>
parents: 5491
diff changeset
29 route[method .. " /*"] = handle_request;
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
30 end
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
31
5333
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 module:provides("http", {
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
33 route = route;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
34 })