From 46d5614be76c8ecc6295dfb5419510c8b33cfca3 Mon Sep 17 00:00:00 2001 From: saturneric Date: Sat, 8 Nov 2025 15:32:22 +0000 Subject: feat(server): add URL redirect for uppercase paths * Introduce Lua-based redirect to handle requests for uppercase `GpgFrontend` URLs, ensuring they are rewritten to lowercase equivalents for consistency. * Enable the `mod_magnet` module in the server config, applying the Lua redirect logic before other rewrites. * Improve user experience by preventing duplicate route handling and enforcing a unified URL structure. --- lua/redirect_lower_url.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lua/redirect_lower_url.lua (limited to 'lua/redirect_lower_url.lua') diff --git a/lua/redirect_lower_url.lua b/lua/redirect_lower_url.lua new file mode 100644 index 0000000..74ffc30 --- /dev/null +++ b/lua/redirect_lower_url.lua @@ -0,0 +1,31 @@ +-- /usr/lib/cgit/lua/debug_gpgfrontend.lua +local r = lighty.r +local a = r.req_attr + +-- Get the "original" path to avoid being affected by rewrites +local raw = a["uri.path-raw"] or a["uri.path"] or "/" +local orig = a["request.orig-uri"] or raw + +-- Match two entry points: +-- 1) /GpgFrontend/... +-- 2) /cgit.cgi/GpgFrontend/... (when the user accessed cgit.cgi directly) +local new_path + +if orig:match("^/GpgFrontend") then + new_path = orig:gsub("^/GpgFrontend", "/gpgfrontend") +elseif orig:match("^/cgit%.cgi/GpgFrontend") then + -- Convert /cgit.cgi/GpgFrontend/... to /gpgfrontend/... so rewrite adds /cgit.cgi only once + new_path = orig:gsub("^/cgit%.cgi/GpgFrontend", "/gpgfrontend") +end + +if new_path then + local q = a["uri.query"] + if q and #q > 0 and not new_path:find("%?") then + new_path = new_path .. "?" .. q + end + r.resp_header["Location"] = new_path + return 301 +end + +r.resp_header["X-Magnet-Probed"] = "1" +return 0 \ No newline at end of file -- cgit