From 4b4dac70e4214a726b0ae3177a23fddacdd34c1a Mon Sep 17 00:00:00 2001 From: tianrking Date: Fri, 20 Mar 2026 18:25:57 +0800 Subject: [PATCH] fix(ci): harden dns fake-ip assertions across linux distros --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6e6033..7d9ca9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,11 +110,11 @@ jobs: DNS_V4="$(cargo run -q -p proxychains-bin -- -q -f ./ci.e2e.conf python3 -c "import socket;print(socket.getaddrinfo(\"dns-proxychains-e2e.invalid\",443,0,socket.SOCK_STREAM)[0][4][0])" | tr -d "\r\n")" echo "dns v4 fake ip: ${DNS_V4}" - DNS_V4="${DNS_V4}" python3 -c "import ipaddress, os; ip = ipaddress.ip_address(os.environ['DNS_V4']); assert ip.version == 4 and ip in ipaddress.ip_network('224.0.0.0/8')" + DNS_V4="${DNS_V4}" python3 -c "import ipaddress, os; n = ipaddress.ip_network(\"224.0.0.0/8\"); ip = ipaddress.ip_address(os.environ[\"DNS_V4\"]); mapped = getattr(ip, \"ipv4_mapped\", None); ok = (ip.version == 4 and ip in n) or (ip.version == 6 and mapped is not None and mapped in n); assert ok" DNS_V6="$(cargo run -q -p proxychains-bin -- -q -f ./ci.e2e.conf python3 -c "import socket;print(socket.getaddrinfo(\"dns-proxychains-e2e.invalid\",443,socket.AF_INET6,socket.SOCK_STREAM)[0][4][0])" | tr -d "\r\n")" echo "dns v6 fake ip: ${DNS_V6}" - DNS_V6="${DNS_V6}" python3 -c "import ipaddress, os; ip = ipaddress.ip_address(os.environ['DNS_V6']); mapped = ip.ipv4_mapped; assert ip.version == 6 and mapped is not None and mapped in ipaddress.ip_network('224.0.0.0/8')" + DNS_V6="${DNS_V6}" python3 -c "import ipaddress, os; n = ipaddress.ip_network(\"224.0.0.0/8\"); lo_min = int(ipaddress.ip_address(\"224.0.0.0\")); lo_max = int(ipaddress.ip_address(\"239.255.255.255\")); ip = ipaddress.ip_address(os.environ[\"DNS_V6\"]); mapped = getattr(ip, \"ipv4_mapped\", None); v4compat = ip.version == 6 and (int(ip) >> 32) == 0 and lo_min <= (int(ip) & 0xffffffff) <= lo_max; v4mapped = ip.version == 6 and mapped is not None and mapped in n; assert v4compat or v4mapped" PROXYCHAINS_TEST_SOCKS5_ADDR=127.0.0.1:19080 \ PROXYCHAINS_TEST_HTTP_ADDR=127.0.0.1:18080 \