From 701032bb4f2da9aa4bf76f4b2db4a68071c96b1c Mon Sep 17 00:00:00 2001 From: database64128 Date: Fri, 30 Oct 2020 19:01:11 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=83=20PAC:=20direct=20connection=20for?= =?UTF-8?q?=20private=20IP=20ranges=20by=20@studentmain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shadowsocks-csharp/Data/abp.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/shadowsocks-csharp/Data/abp.js b/shadowsocks-csharp/Data/abp.js index 432a6385..7dd0246c 100644 --- a/shadowsocks-csharp/Data/abp.js +++ b/shadowsocks-csharp/Data/abp.js @@ -793,7 +793,22 @@ for (var i = 0; i < rules.length; i++) { defaultMatcher.add(Filter.fromText(rules[i])); } +// PAC has no v6 support, it sucks +var ip4Re = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/ + +var privateNet = [ + ["10.0.0.0", "255.0.0.0"], + ["127.0.0.0", "255.0.0.0"], + ["172.16.0.0", "255.240.0.0"], + ["192.168.0.0", "255.255.0.0"], +] + function FindProxyForURL(url, host) { + if (host.match(ip4Re)) { + for (var i = 0; i < privateNet.length; i++) { + if (isInNet(host, privateNet[i][0], privateNet[i][1])) return direct; + } + } if (userrulesMatcher.matchesAny(url, host) instanceof BlockingFilter) { return proxy; }