annotate mod_http_debug/mod_http_debug.lua @ 5803:f55e65315ba0

mod_pubsub_serverinfo: implemented all basic features This commit replaces the earlier proof-of-concept to a solution that: - reports on remotely-connected domains - uses disco/info to detect if those domains opt-in - publishes domain names for remote domains that do so - caches the disco/info response
author Guus der Kinderen <guus.der.kinderen@gmail.com>
date Wed, 03 Jan 2024 23:05:14 +0100
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 })