blob: 6ee3ee8e85dfa4b1de138792209b9f97fe330002 [file]
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you under the Apache License, Version 2.0 (the
-- "License"); you may not use this file except in compliance
-- with the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
function do_remap()
local result = ""
-- Test 1: Check if verified address is initially nil
local ip1, family1 = ts.client_request.client_addr.get_verified_addr()
if not ip1 then
result = result .. "initial:nil;"
end
-- Test 2: Set an IPv4 verified address from X-Real-IP header
local real_ip = ts.client_request.header["X-Real-IP"]
if real_ip then
local success, err = pcall(function()
ts.client_request.client_addr.set_verified_addr(real_ip, TS_LUA_AF_INET)
end)
if success then
result = result .. "set:success;"
-- Test 3: Get the verified address we just set
local ip2, family2 = ts.client_request.client_addr.get_verified_addr()
if ip2 then
result = result .. "get:" .. ip2 .. ":" .. tostring(family2) .. ";"
else
result = result .. "get:failed;"
end
else
result = result .. "set:failed;"
end
end
-- Test 4: Try setting an IPv6 address from X-Real-IP-V6 header
local real_ipv6 = ts.client_request.header["X-Real-IP-V6"]
if real_ipv6 then
local success, err = pcall(function()
ts.client_request.client_addr.set_verified_addr(real_ipv6, TS_LUA_AF_INET6)
end)
if success then
result = result .. "setv6:success;"
-- Get the IPv6 verified address
local ip3, family3 = ts.client_request.client_addr.get_verified_addr()
if ip3 then
result = result .. "getv6:" .. ip3 .. ":" .. tostring(family3) .. ";"
else
result = result .. "getv6:failed;"
end
else
result = result .. "setv6:failed;"
end
end
-- Test 5: Try setting an invalid address (should fail)
local invalid_ip = ts.client_request.header["X-Invalid-IP"]
if invalid_ip then
local success, err = pcall(function()
ts.client_request.client_addr.set_verified_addr(invalid_ip, TS_LUA_AF_INET)
end)
if not success then
result = result .. "invalid:rejected;"
else
result = result .. "invalid:accepted;"
end
end
-- Return the result in the response
ts.http.set_resp(200, result)
return 0
end