author | Ben Smith <bens@effortlessis.com> |
Tue, 14 May 2024 07:31:34 -0700 | |
changeset 5912 | dcea4b4c415d |
parent 5496 | b6af4d1ff8c1 |
permissions | -rw-r--r-- |
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 |
}) |