Fix --proxy parsing

This commit is contained in:
klzgrad 2019-01-16 04:54:35 -05:00
parent ca838dfdd9
commit f958215ea8
2 changed files with 11 additions and 10 deletions

View File

@ -242,13 +242,11 @@ void GetCommandLineFromConfig(const base::FilePath& config_path,
} }
std::string GetProxyFromURL(const GURL& url) { std::string GetProxyFromURL(const GURL& url) {
auto shp = url::SchemeHostPort(url); std::string str = url.GetWithEmptyPath().spec();
if (url::DefaultPortForScheme(shp.scheme().c_str(), shp.scheme().size()) == if (str.size() && str.back() == '/') {
url::PORT_UNSPECIFIED) { str.pop_back();
return shp.Serialize() + ":" + base::IntToString(shp.port());
} else {
return shp.Serialize();
} }
return str;
} }
bool ParseCommandLine(const CommandLine& cmdline, Params* params) { bool ParseCommandLine(const CommandLine& cmdline, Params* params) {
@ -298,7 +296,6 @@ bool ParseCommandLine(const CommandLine& cmdline, Params* params) {
return false; return false;
} }
params->proxy_url = GetProxyFromURL(url_no_auth); params->proxy_url = GetProxyFromURL(url_no_auth);
params->proxy_url.erase();
params->proxy_user = url.username(); params->proxy_user = url.username();
params->proxy_pass = url.password(); params->proxy_pass = url.password();
} }

View File

@ -40,19 +40,23 @@ echo '{"listen":"socks://127.0.0.1:61080","log":""}' >/tmp/config.json
test_naive 'Config file' socks5h://127.0.0.1:61080 '/tmp/config.json' test_naive 'Config file' socks5h://127.0.0.1:61080 '/tmp/config.json'
rm -f /tmp/config.json rm -f /tmp/config.json
test_naive 'Trivial - scheme only' socks5h://127.0.0.1:1080 \ test_naive 'Trivial - listen scheme only' socks5h://127.0.0.1:1080 \
'--log --listen=socks://' '--log --listen=socks://'
test_naive 'Trivial - no host' socks5h://127.0.0.1:61080 \ test_naive 'Trivial - listen no host' socks5h://127.0.0.1:61080 \
'--log --listen=socks://:61080' '--log --listen=socks://:61080'
test_naive 'Trivial - no port' socks5h://127.0.0.1:1080 \ test_naive 'Trivial - listen no port' socks5h://127.0.0.1:1080 \
'--log --listen=socks://127.0.0.1' '--log --listen=socks://127.0.0.1'
test_naive 'SOCKS-SOCKS' socks5h://127.0.0.1:11080 \ test_naive 'SOCKS-SOCKS' socks5h://127.0.0.1:11080 \
'--log --listen=socks://:11080 --proxy=socks://127.0.0.1:21080' \ '--log --listen=socks://:11080 --proxy=socks://127.0.0.1:21080' \
'--log --listen=socks://:21080' '--log --listen=socks://:21080'
test_naive 'SOCKS-SOCKS - proxy no port' socks5h://127.0.0.1:11080 \
'--log --listen=socks://:11080 --proxy=socks://127.0.0.1' \
'--log --listen=socks://:1080'
test_naive 'SOCKS-HTTP' socks5h://127.0.0.1:11080 \ test_naive 'SOCKS-HTTP' socks5h://127.0.0.1:11080 \
'--log --listen=socks://:11080 --proxy=http://127.0.0.1:28080' \ '--log --listen=socks://:11080 --proxy=http://127.0.0.1:28080' \
'--log --listen=http://:28080' '--log --listen=http://:28080'