Software /
code /
prosody
Comparison
plugins/mod_http.lua @ 13125:90394be5e6a5
mod_http: Handle bracketed IP address format from RFC 7239
There are hints that this format might be used in X-Forwarded-For as
well, so best handle it everywhere. Strips both brackets and optional
port number.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 03 Jun 2023 17:10:12 +0200 |
parent | 13107:9c4dc1e6d2c9 |
child | 13126:d043834f15d2 |
comparison
equal
deleted
inserted
replaced
13124:f15e23840780 | 13125:90394be5e6a5 |
---|---|
295 | 295 |
296 module.add_host(module); -- set up handling on global context too | 296 module.add_host(module); -- set up handling on global context too |
297 | 297 |
298 local trusted_proxies = module:get_option_set("trusted_proxies", { "127.0.0.1", "::1" })._items; | 298 local trusted_proxies = module:get_option_set("trusted_proxies", { "127.0.0.1", "::1" })._items; |
299 | 299 |
300 --- deal with [ipv6]:port / ip:port format | |
301 local function normal_ip(ip) | |
302 return ip:match("^%[([%x:]*)%]") or ip:match("^([%d.]+)") or ip; | |
303 end | |
304 | |
300 local function is_trusted_proxy(ip) | 305 local function is_trusted_proxy(ip) |
306 ip = normal_ip(ip); | |
301 if trusted_proxies[ip] then | 307 if trusted_proxies[ip] then |
302 return true; | 308 return true; |
303 end | 309 end |
304 local parsed_ip = new_ip(ip) | 310 local parsed_ip = new_ip(ip) |
305 for trusted_proxy in trusted_proxies do | 311 for trusted_proxy in trusted_proxies do |