Update AppImage 1.2.3

This commit is contained in:
MacRimi
2026-07-16 23:43:58 +02:00
parent 9dc077feec
commit db79470d32
3 changed files with 14 additions and 2 deletions

Binary file not shown.

View File

@@ -1 +1 @@
cd07523bc6d5127029d352fcd9488bb90b37c42809d5061cb22aa8a442f036bb ProxMenux-1.2.3.AppImage
7b5dd3ff6fe70a190caf00d1ce5198dfe1917af53d01ab4fd1a3908f3204c0ff ProxMenux-1.2.3.AppImage

View File

@@ -227,6 +227,14 @@ def _is_own_host_ip(value: str) -> bool:
CGNAT, WireGuard, LAN, IPv6 GUA…). Without this, PVE hits the layer 3
``X-ProxMenux-Timestamp`` check — a header PVE cannot inject dynamically —
and every notification target test returns ``401 missing_timestamp``.
IMPORTANT: Flask bound to ``*:8008`` (dual-stack) reports IPv4 peers
in v4-mapped IPv6 form (``::ffff:192.168.0.55``). psutil reports the
same interface as plain IPv4 (``192.168.0.55``). Without unmapping,
literal comparison fails and the fix effectively does nothing in
production — reproduced end-to-end on 192.168.0.55: passing the raw
literal returned True, but ``::ffff:192.168.0.55`` returned False,
which is what Flask actually hands us at runtime.
"""
if _is_loopback_addr(value):
return True
@@ -234,7 +242,11 @@ def _is_own_host_ip(value: str) -> bool:
import ipaddress
import socket
import psutil
client = ipaddress.ip_address(value).compressed
addr = ipaddress.ip_address(value)
mapped = getattr(addr, 'ipv4_mapped', None)
if mapped is not None:
addr = mapped
client = addr.compressed
for _iface, addrs in psutil.net_if_addrs().items():
for a in addrs:
if a.family in (socket.AF_INET, socket.AF_INET6):