mod_http_debug/mod_http_debug.lua
author Kim Alvefur <zash@zash.se>
Sun, 03 Mar 2024 11:23:40 +0100
changeset 5857 97c9b76867ca
parent 5496 b6af4d1ff8c1
permissions -rw-r--r--
mod_log_ringbuffer: Detach event handlers on logging reload (thanks Menel) Otherwise the global event handlers accumulate, one added each time logging is reoladed, and each invocation of the signal or event triggers one dump of each created ringbuffer.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5337
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")
5494
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
     4
local function handle_request(event)
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
     5
	local request = event.request;
5495
7842502c1157 mod_http_debug: Log some extended info about requests
Kim Alvefur <zash@zash.se>
parents: 5494
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);
5494
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
     7
	return {
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
     8
		status_code = 200;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
     9
		headers = { content_type = "application/json" };
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    10
		host = module.host;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    11
		body = json.encode {
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    12
			body = request.body;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    13
			headers = request.headers;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    14
			httpversion = request.httpversion;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    15
			id = request.id;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    16
			ip = request.ip;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    17
			method = request.method;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    18
			path = request.path;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    19
			secure = request.secure;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    20
			url = request.url;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    21
		};
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    22
	}
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    23
end
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    24
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
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: 5337
diff changeset
    26
local route = {};
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    27
for method in methods do
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    28
	route[method] = handle_request;
5496
b6af4d1ff8c1 mod_http_debug: Handle any path under /debug/* as well
Kim Alvefur <zash@zash.se>
parents: 5495
diff changeset
    29
	route[method .. " /*"] = handle_request;
5494
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    30
end
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    31
5337
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", {
5494
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    33
	route = route;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5337
diff changeset
    34
})