From: Stephan Toggweiler <609601+rheoli@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:07:12 +0000 (+0200) Subject: icap.lua: ipv6 pseudo hostname in GET request X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F5532%2Fhead;p=thirdparty%2Frspamd.git icap.lua: ipv6 pseudo hostname in GET request ipv6 addresses need to be changed to a pseudo hostname in GET request who is encapsulated in ICAP. A change to [::] did not work in SkyHigh Web Gateway (aka McAfee) Didn't use Lua often maybe the code can be optimized. --- diff --git a/lualib/lua_scanners/icap.lua b/lualib/lua_scanners/icap.lua index 2e3ced0344..5328587939 100644 --- a/lualib/lua_scanners/icap.lua +++ b/lualib/lua_scanners/icap.lua @@ -239,13 +239,16 @@ local function icap_check(task, content, digest, rule, maybe_part) end end - local function get_req_headers() - + local function get_req_headers() local in_client_ip = task:get_from_ip() + local in_client_ip_str = in_client_ip:to_string() local req_hlen = 2 + if in_client_ip:get_version() == 6 then + in_client_ip_str = "ip6-" .. string.gsub(in_client_ip_str, ":", "-") + end if maybe_part then table.insert(req_headers, - string.format('GET http://%s/%s HTTP/1.0\r\n', in_client_ip, lua_util.url_encode_string(maybe_part:get_filename()))) + string.format('GET http://%s/%s HTTP/1.0\r\n', in_client_ip_str, lua_util.url_encode_string(maybe_part:get_filename()))) if rule.use_specific_content_type then table.insert(http_headers, string.format('Content-Type: %s/%s\r\n', maybe_part:get_detected_type())) --else