session: add proxyBypassRules option to setProxy api
This commit is contained in:
parent
a0c5749ac1
commit
aa6d79a3d8
3 changed files with 69 additions and 1 deletions
|
@ -133,7 +133,7 @@ struct Converter<net::ProxyConfig> {
|
||||||
static bool FromV8(v8::Isolate* isolate,
|
static bool FromV8(v8::Isolate* isolate,
|
||||||
v8::Local<v8::Value> val,
|
v8::Local<v8::Value> val,
|
||||||
net::ProxyConfig* out) {
|
net::ProxyConfig* out) {
|
||||||
std::string proxy_rules;
|
std::string proxy_rules, proxy_bypass_rules;
|
||||||
GURL pac_url;
|
GURL pac_url;
|
||||||
mate::Dictionary options;
|
mate::Dictionary options;
|
||||||
// Fallback to previous API when passed String.
|
// Fallback to previous API when passed String.
|
||||||
|
@ -143,6 +143,7 @@ struct Converter<net::ProxyConfig> {
|
||||||
} else if (ConvertFromV8(isolate, val, &options)) {
|
} else if (ConvertFromV8(isolate, val, &options)) {
|
||||||
options.Get("pacScript", &pac_url);
|
options.Get("pacScript", &pac_url);
|
||||||
options.Get("proxyRules", &proxy_rules);
|
options.Get("proxyRules", &proxy_rules);
|
||||||
|
options.Get("proxyBypassRules", &proxy_bypass_rules);
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -152,6 +153,7 @@ struct Converter<net::ProxyConfig> {
|
||||||
out->set_pac_url(pac_url);
|
out->set_pac_url(pac_url);
|
||||||
} else {
|
} else {
|
||||||
out->proxy_rules().ParseFromString(proxy_rules);
|
out->proxy_rules().ParseFromString(proxy_rules);
|
||||||
|
out->proxy_rules().bypass_rules.ParseFromString(proxy_bypass_rules);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,6 +121,8 @@ Writes any unwritten DOMStorage data to disk.
|
||||||
* `config` Object
|
* `config` Object
|
||||||
* `pacScript` String - The URL associated with the PAC file.
|
* `pacScript` String - The URL associated with the PAC file.
|
||||||
* `proxyRules` String - Rules indicating which proxies to use.
|
* `proxyRules` String - Rules indicating which proxies to use.
|
||||||
|
* `proxyBypassRules` String - Rules indicating which URLs should
|
||||||
|
bypass the proxy settings.
|
||||||
* `callback` Function - Called when operation is done.
|
* `callback` Function - Called when operation is done.
|
||||||
|
|
||||||
Sets the proxy settings.
|
Sets the proxy settings.
|
||||||
|
@ -153,6 +155,43 @@ For example:
|
||||||
* `http=foopy;socks=foopy2` - Use HTTP proxy `foopy` for http URLs, and use
|
* `http=foopy;socks=foopy2` - Use HTTP proxy `foopy` for http URLs, and use
|
||||||
`socks4://foopy2` for all other URLs.
|
`socks4://foopy2` for all other URLs.
|
||||||
|
|
||||||
|
The `proxyBypassRules` is a comma separated list of rules described below:
|
||||||
|
|
||||||
|
* `[ URL_SCHEME "://" ] HOSTNAME_PATTERN [ ":" <port> ]`
|
||||||
|
|
||||||
|
Match all hostnames that match the pattern HOSTNAME_PATTERN.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99",
|
||||||
|
"https://x.*.y.com:99"
|
||||||
|
|
||||||
|
* `"." HOSTNAME_SUFFIX_PATTERN [ ":" PORT ]`
|
||||||
|
|
||||||
|
Match a particular domain suffix.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
".google.com", ".com", "http://.google.com"
|
||||||
|
|
||||||
|
* `[ SCHEME "://" ] IP_LITERAL [ ":" PORT ]`
|
||||||
|
|
||||||
|
Match URLs which are IP address literals.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
"127.0.1", "[0:0::1]", "[::1]", "http://[::1]:99"
|
||||||
|
|
||||||
|
* `IP_LITERAL "/" PREFIX_LENGHT_IN_BITS`
|
||||||
|
|
||||||
|
Match any URL that is to an IP literal that falls between the
|
||||||
|
given range. IP range is specified using CIDR notation.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
"192.168.1.1/16", "fefe:13::abc/33".
|
||||||
|
|
||||||
|
* `<local>`
|
||||||
|
|
||||||
|
Match local addresses. The meaning of `<local>` is whether the
|
||||||
|
host matches one of: "127.0.0.1", "::1", "localhost".
|
||||||
|
|
||||||
### `ses.resolveProxy(url, callback)`
|
### `ses.resolveProxy(url, callback)`
|
||||||
|
|
||||||
* `url` URL
|
* `url` URL
|
||||||
|
|
|
@ -342,4 +342,31 @@ describe('session module', function () {
|
||||||
w.loadURL(`${protocolName}://fake-host`)
|
w.loadURL(`${protocolName}://fake-host`)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('ses.setProxy(options, callback)', function () {
|
||||||
|
it('allows configuring proxy settings', function (done) {
|
||||||
|
const config = {
|
||||||
|
proxyRules: 'http=myproxy:80'
|
||||||
|
}
|
||||||
|
session.defaultSession.setProxy(config, function () {
|
||||||
|
session.defaultSession.resolveProxy('http://localhost', function (proxy) {
|
||||||
|
assert.equal(proxy, 'PROXY myproxy:80')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('allows bypassing proxy settings', function (done) {
|
||||||
|
const config = {
|
||||||
|
proxyRules: 'http=myproxy:80',
|
||||||
|
proxyBypassRules: '<local>'
|
||||||
|
}
|
||||||
|
session.defaultSession.setProxy(config, function () {
|
||||||
|
session.defaultSession.resolveProxy('http://localhost', function (proxy) {
|
||||||
|
assert.equal(proxy, 'DIRECT')
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue