backport-3980-to-0-21-0 (#3986)

This commit is contained in:
Caleb Doxsey 2023-02-16 11:24:47 -07:00 committed by GitHub
parent 9f541438ef
commit 26d76501fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 4 deletions

View file

@ -205,7 +205,7 @@ func Test_buildMainHTTPConnectionManagerFilter(t *testing.T) {
"typedConfig": {
"@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua",
"defaultSourceCode": {
"inlineString": "function replace_prefix(str, prefix, value)\n return str:gsub(\"^\"..prefix, value)\nend\n\nfunction envoy_on_request(request_handle)\nend\n\nfunction envoy_on_response(response_handle)\n local headers = response_handle:headers()\n local metadata = response_handle:metadata()\n\n -- should be in the form:\n -- [{\n -- \"header\":\"Location\",\n -- \"prefix\":\"http://localhost:8000/two/\",\n -- \"value\":\"http://frontend/one/\"\n -- }]\n local rewrite_response_headers = metadata:get(\"rewrite_response_headers\")\n if rewrite_response_headers then\n for _, obj in pairs(rewrite_response_headers) do\n local hdr = headers:get(obj.header)\n if hdr ~= nil then\n local newhdr = replace_prefix(hdr, obj.prefix, obj.value)\n headers:replace(obj.header, newhdr)\n end\n end\n end\nend\n"
"inlineString": "function replace_prefix(str, prefix, value)\n if str:sub(0, prefix:len()) == prefix then\n return value..str:sub(prefix:len()+1)\n end\n return str\nend\n\nfunction envoy_on_request(request_handle)\nend\n\nfunction envoy_on_response(response_handle)\n local headers = response_handle:headers()\n local metadata = response_handle:metadata()\n\n -- should be in the form:\n -- [{\n -- \"header\":\"Location\",\n -- \"prefix\":\"http://localhost:8000/two/\",\n -- \"value\":\"http://frontend/one/\"\n -- }]\n local rewrite_response_headers = metadata:get(\"rewrite_response_headers\")\n if rewrite_response_headers then\n for _, obj in pairs(rewrite_response_headers) do\n local hdr = headers:get(obj.header)\n if hdr ~= nil then\n local newhdr = replace_prefix(hdr, obj.prefix, obj.value)\n headers:replace(obj.header, newhdr)\n end\n end\n end\nend\n"
}
}
},

View file

@ -54,13 +54,13 @@ func TestLuaRewriteHeaders(t *testing.T) {
require.NoError(t, err)
headers := map[string]string{
"Location": "https://localhost:8080/two/some/uri/",
"Location": "https://domain-with-dashes:8080/two/some/uri/",
}
metadata := map[string]interface{}{
"rewrite_response_headers": []interface{}{
map[string]interface{}{
"header": "Location",
"prefix": "https://localhost:8080/two/",
"prefix": "https://domain-with-dashes:8080/two/",
"value": "https://frontend/one/",
},
map[string]interface{}{

View file

@ -1,5 +1,8 @@
function replace_prefix(str, prefix, value)
return str:gsub("^"..prefix, value)
if str:sub(0, prefix:len()) == prefix then
return value..str:sub(prefix:len()+1)
end
return str
end
function envoy_on_request(request_handle)