169 lines
6.3 KiB
Diff
169 lines
6.3 KiB
Diff
|
diff -up firefox-66.0.1/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.mozilla-1540145 firefox-66.0.1/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||
|
--- firefox-66.0.1/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.mozilla-1540145 2019-03-22 06:06:07.000000000 +0100
|
||
|
+++ firefox-66.0.1/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp 2019-04-01 09:33:18.621166482 +0200
|
||
|
@@ -6,7 +6,6 @@
|
||
|
#include "nsISystemProxySettings.h"
|
||
|
#include "mozilla/ModuleUtils.h"
|
||
|
#include "nsIServiceManager.h"
|
||
|
-#include "nsIGConfService.h"
|
||
|
#include "nsIURI.h"
|
||
|
#include "nsReadableUtils.h"
|
||
|
#include "nsArrayUtils.h"
|
||
|
@@ -32,16 +31,10 @@ class nsUnixSystemProxySettings final :
|
||
|
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);
|
||
|
@@ -66,20 +59,10 @@ nsresult nsUnixSystemProxySettings::Init
|
||
|
NS_LITERAL_CSTRING("org.gnome.system.proxy"),
|
||
|
getter_AddRefs(mProxySettings));
|
||
|
}
|
||
|
- if (!mProxySettings) {
|
||
|
- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
|
||
|
- }
|
||
|
|
||
|
return NS_OK;
|
||
|
}
|
||
|
|
||
|
-bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
|
||
|
- nsAutoCString mode;
|
||
|
- return NS_SUCCEEDED(mGConf->GetString(
|
||
|
- NS_LITERAL_CSTRING("/system/proxy/mode"), mode)) &&
|
||
|
- mode.EqualsASCII(aMode);
|
||
|
-}
|
||
|
-
|
||
|
nsresult nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) {
|
||
|
if (mProxySettings) {
|
||
|
nsCString proxyMode;
|
||
|
@@ -92,14 +75,8 @@ nsresult nsUnixSystemProxySettings::GetP
|
||
|
}
|
||
|
/* 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;
|
||
|
@@ -217,30 +194,6 @@ static nsresult GetProxyFromEnvironment(
|
||
|
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);
|
||
|
@@ -366,63 +319,6 @@ static bool HostIgnoredByProxy(const nsA
|
||
|
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) {
|
||
|
@@ -494,7 +390,6 @@ nsresult nsUnixSystemProxySettings::GetP
|
||
|
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);
|
||
|
}
|