blob: b2397f7b2908b184f31407c8d00210fba31fd5ea [file] [log] [blame]
// Proxy script which sends requests to a non-existent proxy on
// success, otherwise sends them DIRECT.
let kFailure = "DIRECT";
let kSuccess = "PROXY 0.0.0.0:8000";
// Returns true if |ip| is a valid IP literal.
function isIpAddress(ip) {
// This relies on isInNetEx() parsing the IP literal, and /0 trivially matching
// all IPs. (Since validating an IPv6 literal is not trivial)
return isInNetEx(ip, "0.0.0.0/0") || isInNetEx(ip, "::/0");
}
function isLoopback(ip) {
return isInNetEx(ip, "127.0.0.1/8") || isInNetEx(ip, "::1/128");
}
// Verifies that |s| is a valid result from myIpAddress() or myIpAddressEx().
function isValidResult(s) {
if (!s)
return false;
let ips = s.split(";");
if (ips.length == 0)
return false;
for (let ip of ips) {
if (isLoopback(ip) || !isIpAddress(ip))
return false;
}
return true;
}
function FindProxyForURL(url, host) {
let r1 = myIpAddress();
if (!isValidResult(r1)) {
alert("myIpAddress() unexpectedly returned: " + JSON.stringify(r1));
return kFailure;
}
let r2 = myIpAddressEx();
if (!isValidResult(r2)) {
alert("myIpAddressEx() unexpectedly returned: " + JSON.stringify(r2));
return kFailure;
}
return kSuccess;
}