Fix lighttpd PATH_INFO extraction with MAPSERVER_BASE_PATH#1373
Fix lighttpd PATH_INFO extraction with MAPSERVER_BASE_PATH#1373
Conversation
|
@johannes Does it looks good to you? |
|
I wouldn't use variable names But I am not the person you were looking for :) |
Co-authored-by: sbrunner <353872+sbrunner@users.noreply.github.com>
7e4d0e8 to
86a478c
Compare
|
Thanks for the quick reaction @sbrunner . Turns out I missed that mapserver uses So with my solution above, this duplicates the So one needs to remove the So I end up with: local base_path = os.getenv("MAPSERVER_BASE_PATH", "")
local path = lighty.r.req_attr["uri.path"]
local base_index = path:find(base_path, 1, true)
local base_length = base_path:len()
if base_index == 1 and path:len() > base_length then
lighty.r.req_attr["uri.path"] = base_path
lighty.r.req_attr["request.path-info"] = path:sub(base_length + 1)
end |
path_info.luaused Lua'sgsubwith a pattern built fromMAPSERVER_BASE_PATH, which fails to correctly setrequest.path-infoin lighttpd's mod_magnet environment — breaking mapfile alias resolution andows_onlineresourceconstruction in WMS GetCapabilities when the mapfile is specified as a path component.Changes
runtime/etc/lighttpd/path_info.lua: Replacegsub-based extraction with plain-textfind, as suggested in the upstream report:find(..., 1, true)uses plain-text matching (no pattern interpretation), correctly stripping the base path and leaving the mapfile component asPATH_INFO.acceptance_tests/test_wms.py: Addtest_lighttpd_capabilities_url— verifies thatGetMapoperation URLs in the WMS GetCapabilities response start withBASE_URL_LIGHTTPD(i.e., include the correct base path + mapfile path), catching thePATH_INFOregression described in the issue.✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.