2019-05-15 14:14:03 +00:00
|
|
|
diff -up firefox-67.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.mozilla-1540145 firefox-67.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
|
|
|
--- firefox-67.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.mozilla-1540145 2019-05-14 01:08:35.000000000 +0200
|
|
|
|
+++ firefox-67.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp 2019-05-15 15:20:13.365502186 +0200
|
|
|
|
@@ -34,16 +34,10 @@ class nsUnixSystemProxySettings final :
|
2019-04-01 07:46:45 +00:00
|
|
|
private:
|
|
|
|
~nsUnixSystemProxySettings() = default;
|
|
|
|
|
|
|
|
- nsCOMPtr<nsIGConfService> mGConf;
|
|
|
|
- nsCOMPtr<nsIGSettingsService> mGSettings;
|
|
|
|
+ nsCOMPtr<nsIGSettingsService> mGSettings;
|
|
|
|
nsCOMPtr<nsIGSettingsCollection> mProxySettings;
|
|
|
|
nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
|
|
|
|
mSchemeProxySettings;
|
|
|
|
- bool IsProxyMode(const char* aMode);
|
|
|
|
- nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType,
|
|
|
|
- nsACString& aResult);
|
|
|
|
- nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
|
|
|
|
- int32_t aPort, nsACString& aResult);
|
|
|
|
nsresult GetProxyFromGSettings(const nsACString& aScheme,
|
|
|
|
const nsACString& aHost, int32_t aPort,
|
|
|
|
nsACString& aResult);
|
2019-05-15 14:14:03 +00:00
|
|
|
@@ -68,16 +62,6 @@ void nsUnixSystemProxySettings::Init() {
|
2019-04-01 07:46:45 +00:00
|
|
|
NS_LITERAL_CSTRING("org.gnome.system.proxy"),
|
|
|
|
getter_AddRefs(mProxySettings));
|
|
|
|
}
|
|
|
|
- if (!mProxySettings) {
|
|
|
|
- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
|
|
|
|
- }
|
2019-05-15 14:14:03 +00:00
|
|
|
-}
|
|
|
|
-
|
2019-04-01 07:46:45 +00:00
|
|
|
-bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
|
|
|
|
- nsAutoCString mode;
|
|
|
|
- return NS_SUCCEEDED(mGConf->GetString(
|
|
|
|
- NS_LITERAL_CSTRING("/system/proxy/mode"), mode)) &&
|
|
|
|
- mode.EqualsASCII(aMode);
|
2019-05-15 14:14:03 +00:00
|
|
|
}
|
|
|
|
|
2019-04-01 07:46:45 +00:00
|
|
|
nsresult nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) {
|
2019-05-15 14:14:03 +00:00
|
|
|
@@ -92,14 +76,8 @@ nsresult nsUnixSystemProxySettings::GetP
|
2019-04-01 07:46:45 +00:00
|
|
|
}
|
|
|
|
/* The org.gnome.system.proxy schema has been found, but auto mode is not
|
|
|
|
* set. Don't try the GConf and return empty string. */
|
|
|
|
- aResult.Truncate();
|
|
|
|
- return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
- if (mGConf && IsProxyMode("auto")) {
|
|
|
|
- return mGConf->GetString(NS_LITERAL_CSTRING("/system/proxy/autoconfig_url"),
|
|
|
|
- aResult);
|
|
|
|
- }
|
|
|
|
// Return an empty string when auto mode is not set.
|
|
|
|
aResult.Truncate();
|
|
|
|
return NS_OK;
|
2019-05-15 14:14:03 +00:00
|
|
|
@@ -217,30 +195,6 @@ static nsresult GetProxyFromEnvironment(
|
2019-04-01 07:46:45 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
-nsresult nsUnixSystemProxySettings::SetProxyResultFromGConf(
|
|
|
|
- const char* aKeyBase, const char* aType, nsACString& aResult) {
|
|
|
|
- nsAutoCString hostKey;
|
|
|
|
- hostKey.AppendASCII(aKeyBase);
|
|
|
|
- hostKey.AppendLiteral("host");
|
|
|
|
- nsAutoCString host;
|
|
|
|
- nsresult rv = mGConf->GetString(hostKey, host);
|
|
|
|
- NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
- if (host.IsEmpty()) return NS_ERROR_FAILURE;
|
|
|
|
-
|
|
|
|
- nsAutoCString portKey;
|
|
|
|
- portKey.AppendASCII(aKeyBase);
|
|
|
|
- portKey.AppendLiteral("port");
|
|
|
|
- int32_t port;
|
|
|
|
- rv = mGConf->GetInt(portKey, &port);
|
|
|
|
- NS_ENSURE_SUCCESS(rv, rv);
|
|
|
|
-
|
|
|
|
- /* When port is 0, proxy is not considered as enabled even if host is set. */
|
|
|
|
- if (port == 0) return NS_ERROR_FAILURE;
|
|
|
|
-
|
|
|
|
- SetProxyResult(aType, host, port, aResult);
|
|
|
|
- return NS_OK;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
nsresult nsUnixSystemProxySettings::SetProxyResultFromGSettings(
|
|
|
|
const char* aKeyBase, const char* aType, nsACString& aResult) {
|
|
|
|
nsDependentCString key(aKeyBase);
|
2019-05-15 14:14:03 +00:00
|
|
|
@@ -366,63 +320,6 @@ static bool HostIgnoredByProxy(const nsA
|
2019-04-01 07:46:45 +00:00
|
|
|
return memcmp(&ignoreAddr, &hostAddr, sizeof(PRIPv6Addr)) == 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
-nsresult nsUnixSystemProxySettings::GetProxyFromGConf(const nsACString& aScheme,
|
|
|
|
- const nsACString& aHost,
|
|
|
|
- int32_t aPort,
|
|
|
|
- nsACString& aResult) {
|
|
|
|
- bool masterProxySwitch = false;
|
|
|
|
- mGConf->GetBool(NS_LITERAL_CSTRING("/system/http_proxy/use_http_proxy"),
|
|
|
|
- &masterProxySwitch);
|
|
|
|
- // if no proxy is set in GConf return NS_ERROR_FAILURE
|
|
|
|
- if (!(IsProxyMode("manual") || masterProxySwitch)) {
|
|
|
|
- return NS_ERROR_FAILURE;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- nsCOMPtr<nsIArray> ignoreList;
|
|
|
|
- if (NS_SUCCEEDED(mGConf->GetStringList(
|
|
|
|
- NS_LITERAL_CSTRING("/system/http_proxy/ignore_hosts"),
|
|
|
|
- getter_AddRefs(ignoreList))) &&
|
|
|
|
- ignoreList) {
|
|
|
|
- uint32_t len = 0;
|
|
|
|
- ignoreList->GetLength(&len);
|
|
|
|
- for (uint32_t i = 0; i < len; ++i) {
|
|
|
|
- nsCOMPtr<nsISupportsString> str = do_QueryElementAt(ignoreList, i);
|
|
|
|
- if (str) {
|
|
|
|
- nsAutoString s;
|
|
|
|
- if (NS_SUCCEEDED(str->GetData(s)) && !s.IsEmpty()) {
|
|
|
|
- if (HostIgnoredByProxy(NS_ConvertUTF16toUTF8(s), aHost)) {
|
|
|
|
- aResult.AppendLiteral("DIRECT");
|
|
|
|
- return NS_OK;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bool useHttpProxyForAll = false;
|
|
|
|
- // This setting sometimes doesn't exist, don't bail on failure
|
|
|
|
- mGConf->GetBool(NS_LITERAL_CSTRING("/system/http_proxy/use_same_proxy"),
|
|
|
|
- &useHttpProxyForAll);
|
|
|
|
-
|
|
|
|
- nsresult rv;
|
|
|
|
- if (!useHttpProxyForAll) {
|
|
|
|
- rv = SetProxyResultFromGConf("/system/proxy/socks_", "SOCKS", aResult);
|
|
|
|
- if (NS_SUCCEEDED(rv)) return rv;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (aScheme.LowerCaseEqualsLiteral("http") || useHttpProxyForAll) {
|
|
|
|
- rv = SetProxyResultFromGConf("/system/http_proxy/", "PROXY", aResult);
|
|
|
|
- } else if (aScheme.LowerCaseEqualsLiteral("https")) {
|
|
|
|
- rv = SetProxyResultFromGConf("/system/proxy/secure_", "PROXY", aResult);
|
|
|
|
- } else if (aScheme.LowerCaseEqualsLiteral("ftp")) {
|
|
|
|
- rv = SetProxyResultFromGConf("/system/proxy/ftp_", "PROXY", aResult);
|
|
|
|
- } else {
|
|
|
|
- rv = NS_ERROR_FAILURE;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return rv;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
nsresult nsUnixSystemProxySettings::GetProxyFromGSettings(
|
|
|
|
const nsACString& aScheme, const nsACString& aHost, int32_t aPort,
|
|
|
|
nsACString& aResult) {
|
2019-05-15 14:14:03 +00:00
|
|
|
@@ -494,7 +391,6 @@ nsresult nsUnixSystemProxySettings::GetP
|
2019-04-01 07:46:45 +00:00
|
|
|
nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
|
|
|
|
if (NS_SUCCEEDED(rv)) return rv;
|
|
|
|
}
|
|
|
|
- if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
|
|
|
|
|
|
|
|
return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
|
|
|
|
}
|