// Some interpreters do not implement alert - this can be used in either case. function safeAlert(message) { if (typeof alert !== 'undefined') { alert(message); } } function FindProxyForURL(url, host) { // Allow a direct connection to IANA reserved private interest ranges. // See: https://datatracker.ietf.org/doc/html/rfc1918#section-3 // // MDN states that isInNet resolves a hostnamed if passed, but this function // seems to crash on Safari if passed a hostname - hence pre-resolving. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file#isinnet const resolvedHost = dnsResolve(host); if ( isInNet(resolvedHost, '10.0.0.0', '255.0.0.0') || isInNet(resolvedHost, '172.16.0.0', '255.240.0.0') || isInNet(resolvedHost, '192.168.0.0', '255.255.0.0') ) { safeAlert('using DIRECT for ' + host); return 'DIRECT'; } const rv = 'PROXY 82.219.26.70:4000'; safeAlert('using ' + rv + ' for ' + host); return rv; }