Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/ProxyManager.java')
-rw-r--r--bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/ProxyManager.java373
1 files changed, 0 insertions, 373 deletions
diff --git a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/ProxyManager.java b/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/ProxyManager.java
deleted file mode 100644
index defb130e7..000000000
--- a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/ProxyManager.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.net;
-
-import java.net.Authenticator;
-import java.util.*;
-
-import org.eclipse.core.net.proxy.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-public class ProxyManager implements IProxyService, IPreferenceChangeListener {
-
- private static final String PREF_HAS_MIGRATED = "org.eclipse.core.net.hasMigrated"; //$NON-NLS-1$
-
- /**
- * Preference constants used by Update to record the HTTP proxy
- */
- private static String HTTP_PROXY_HOST = "org.eclipse.update.core.proxy.host"; //$NON-NLS-1$
- private static String HTTP_PROXY_PORT = "org.eclipse.update.core.proxy.port"; //$NON-NLS-1$
- private static String HTTP_PROXY_ENABLE = "org.eclipse.update.core.proxy.enable"; //$NON-NLS-1$
-
- private static final String PREF_NON_PROXIED_HOSTS = "nonProxiedHosts"; //$NON-NLS-1$
- private static final String PREF_ENABLED = "proxiesEnabled"; //$NON-NLS-1$
-
- private static IProxyService proxyManager;
-
- ListenerList listeners = new ListenerList(ListenerList.IDENTITY);
- private String[] nonProxiedHosts;
- private final ProxyType[] proxies = new ProxyType[] {
- new ProxyType(IProxyData.HTTP_PROXY_TYPE),
- new ProxyType(IProxyData.HTTPS_PROXY_TYPE),
- new ProxyType(IProxyData.SOCKS_PROXY_TYPE)
- };
-
- /**
- * Return the proxy manager.
- * @return the proxy manager
- */
- public synchronized static IProxyService getProxyManager() {
- if (proxyManager == null)
- proxyManager = new ProxyManager();
- return proxyManager;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.net.IProxyManager#addProxyChangeListener(org.eclipse.core.net.IProxyChangeListener)
- */
- public void addProxyChangeListener(IProxyChangeListener listener) {
- listeners.add(listener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.net.IProxyManager#removeProxyChangeListener(org.eclipse.core.net.IProxyChangeListener)
- */
- public void removeProxyChangeListener(IProxyChangeListener listener) {
- listeners.remove(listener);
- }
-
- private void fireChange(final IProxyChangeEvent event) {
- Object[] l = listeners.getListeners();
- for (int i = 0; i < l.length; i++) {
- final IProxyChangeListener listener = (IProxyChangeListener)l[i];
- SafeRunner.run(new ISafeRunnable() {
- public void run() throws Exception {
- listener.proxyInfoChanged(event);
- }
- public void handleException(Throwable exception) {
- // Logged by SafeRunner
- }
- });
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.net.IProxyManager#getNonProxiedHosts()
- */
- public synchronized String[] getNonProxiedHosts() {
- if (nonProxiedHosts == null) {
- String prop = Activator.getInstance().getInstancePreferences().get(PREF_NON_PROXIED_HOSTS, "localhost|127.0.0.1"); //$NON-NLS-1$
- nonProxiedHosts = ProxyType.convertPropertyStringToHosts(prop);
- }
- if (nonProxiedHosts.length == 0)
- return nonProxiedHosts;
- String[] result = new String[nonProxiedHosts.length];
- System.arraycopy(nonProxiedHosts, 0, result, 0, nonProxiedHosts.length );
- return result;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.net.IProxyManager#setNonProxiedHosts(java.lang.String[])
- */
- public void setNonProxiedHosts(String[] hosts) {
- Assert.isNotNull(hosts);
- for (int i = 0; i < hosts.length; i++) {
- String host = hosts[i];
- Assert.isNotNull(host);
- Assert.isTrue(host.length() > 0);
- }
- String[] oldHosts = nonProxiedHosts;
- nonProxiedHosts = hosts;
- Activator.getInstance().getInstancePreferences().put(PREF_NON_PROXIED_HOSTS, ProxyType.convertHostsToPropertyString(nonProxiedHosts));
- try {
- Activator.getInstance().getInstancePreferences().flush();
- } catch (BackingStoreException e) {
- Activator.logError(
- "An error occurred while writing out the non-proxied hosts list", e); //$NON-NLS-1$
- }
- IProxyData[] data = getProxyData();
- IProxyChangeEvent event = new ProxyChangeEvent(IProxyChangeEvent.NONPROXIED_HOSTS_CHANGED, oldHosts, getNonProxiedHosts(), data, new IProxyData[0]);
- fireChange(event);
- }
-
-
- public IProxyData[] getProxyData() {
- IProxyData[] result = new IProxyData[proxies.length];
- for (int i = 0; i < proxies.length; i++) {
- ProxyType type = proxies[i];
- result[i] = type.getProxyData(ProxyType.VERIFY_EQUAL);
- }
- return result;
- }
-
- public void setProxyData(IProxyData[] proxies) {
- doSetProxyData(proxies);
- }
-
- private void doSetProxyData(IProxyData[] proxyDatas) {
- IProxyData[] oldData = getProxyData();
- String[] hosts = getNonProxiedHosts();
- IProxyData[] changedProxies = internalSetProxyData(proxyDatas);
- if (changedProxies.length > 0) {
- IProxyChangeEvent event = new ProxyChangeEvent(IProxyChangeEvent.PROXY_SERVICE_ENABLEMENT_CHANGE, hosts, hosts, oldData, changedProxies);
- fireChange(event);
- }
- }
-
- private IProxyData[] internalSetProxyData(IProxyData[] proxyDatas) {
- List result = new ArrayList();
- for (int i = 0; i < proxyDatas.length; i++) {
- IProxyData proxyData = proxyDatas[i];
- ProxyType type = getType(proxyData);
- if (type != null && type.setProxyData(proxyData, isProxiesEnabled())) {
- result.add(proxyData);
- }
- }
- return (IProxyData[]) result.toArray(new IProxyData[result.size()]);
- }
-
- private ProxyType getType(IProxyData proxyData) {
- for (int i = 0; i < proxies.length; i++) {
- ProxyType type = proxies[i];
- if (type.getName().equals(proxyData.getType())) {
- return type;
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.net.IProxyManager#isProxiesEnabled()
- */
- public boolean isProxiesEnabled() {
- return Activator.getInstance().getInstancePreferences().getBoolean(PREF_ENABLED, false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.net.IProxyManager#setProxiesEnabled(boolean)
- */
- public void setProxiesEnabled(boolean enabled) {
- boolean current = isProxiesEnabled();
- if (current == enabled)
- return;
- // Setting the preference will trigger the system property update
- // (see preferenceChange)
- Activator.getInstance().getInstancePreferences().putBoolean(PREF_ENABLED, enabled);
- }
-
- private void internalSetEnabled(boolean enabled) {
- Properties sysProps = System.getProperties();
- sysProps.put("proxySet", enabled ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- updateSystemProperties();
- try {
- Activator.getInstance().getInstancePreferences().flush();
- } catch (BackingStoreException e) {
- Activator.logError(
- "An error occurred while writing out the enablement state", e); //$NON-NLS-1$
- }
- String[] hosts = getNonProxiedHosts();
- IProxyData[] data = getProxyData();
- IProxyChangeEvent event = new ProxyChangeEvent(IProxyChangeEvent.PROXY_DATA_CHANGED, hosts, hosts, data, data);
- fireChange(event);
- }
-
- private void updateSystemProperties() {
- for (int i = 0; i < proxies.length; i++) {
- ProxyType type = proxies[i];
- type.updateSystemProperties(internalGetProxyData(type.getName(), ProxyType.DO_NOT_VERIFY), isProxiesEnabled());
- }
- }
-
- public void initialize() {
- // First see if there is an http proxy to migrate
- migrateUpdateHttpProxy(new InstanceScope().getNode(""), true); //$NON-NLS-1$
- ((IEclipsePreferences)Activator.getInstance().getInstancePreferences()).addPreferenceChangeListener(this);
- // Now initialize each proxy type
- for (int i = 0; i < proxies.length; i++) {
- ProxyType type = proxies[i];
- type.initialize(isProxiesEnabled());
- }
- registerAuthenticator();
- }
-
- public IProxyData getProxyData(String type) {
- return internalGetProxyData(type, ProxyType.VERIFY_EQUAL);
- }
-
- private IProxyData internalGetProxyData(String type, int verifySystemProperties) {
- for (int i = 0; i < proxies.length; i++) {
- ProxyType pt = proxies[i];
- if (pt.getName().equals(type)) {
- return pt.getProxyData(verifySystemProperties);
- }
- }
- return null;
- }
-
- public IProxyData[] getProxyDataForHost(String host) {
- if (isHostFiltered(host))
- return new IProxyData[0];
- IProxyData[] data = getProxyData();
- List result = new ArrayList();
- for (int i = 0; i < data.length; i++) {
- IProxyData proxyData = data[i];
- if (proxyData.getHost() != null)
- result.add(proxyData);
- }
- return (IProxyData[]) result.toArray(new IProxyData[result.size()]);
- }
-
- private boolean isHostFiltered(String host) {
- String[] filters = getNonProxiedHosts();
- for (int i = 0; i < filters.length; i++) {
- String filter = filters[i];
- if (matchesFilter(host, filter))
- return true;
- }
- return false;
- }
-
- private boolean matchesFilter(String host, String filter) {
- StringMatcher matcher = new StringMatcher(filter, false, false);
- return matcher.match(host);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.net.core.IProxyManager#getProxyDataForHost(java.lang.String, java.lang.String)
- */
- public IProxyData getProxyDataForHost(String host, String type) {
- IProxyData[] data = getProxyDataForHost(host);
- for (int i = 0; i < data.length; i++) {
- IProxyData proxyData = data[i];
- if (proxyData.getType().equals(type) && proxyData.getHost() != null)
- return proxyData;
- }
- return null;
- }
-
- private void registerAuthenticator() {
- Authenticator a = getPluggedInAuthenticator();
- if (a != null) {
- Authenticator.setDefault(a);
- }
- }
-
- private Authenticator getPluggedInAuthenticator() {
- IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(Activator.ID, Activator.PT_AUTHENTICATOR).getExtensions();
- if (extensions.length == 0)
- return null;
- IExtension extension = extensions[0];
- IConfigurationElement[] configs = extension.getConfigurationElements();
- if (configs.length == 0) {
- Activator.log(IStatus.ERROR, NLS.bind("Authenticator {0} is missing required fields", (new Object[] {extension.getUniqueIdentifier()})), null);//$NON-NLS-1$
- return null;
- }
- try {
- IConfigurationElement config = configs[0];
- return (Authenticator) config.createExecutableExtension("class");//$NON-NLS-1$
- } catch (CoreException ex) {
- Activator.log(IStatus.ERROR, NLS.bind("Unable to instantiate authenticator {0}", (new Object[] {extension.getUniqueIdentifier()})), ex);//$NON-NLS-1$
- return null;
- }
- }
-
- void migrateUpdateHttpProxy(Preferences node, boolean isInitialize) {
- Preferences netPrefs = node.node(Activator.ID);
- if (!netPrefs.getBoolean(PREF_HAS_MIGRATED, false)) {
- // Only set the migration bit when initializing
- if (isInitialize)
- netPrefs.putBoolean(PREF_HAS_MIGRATED, true);
- Preferences updatePrefs = node.node("org.eclipse.update.core"); //$NON-NLS-1$
- String httpProxyHost = getHostToMigrate(updatePrefs, isInitialize /* checkSystemProperties */);
- int port = getPortToMigrate(updatePrefs, isInitialize /* checkSystemProperties */);
- boolean httpProxyEnable = getEnablementToMigrate(updatePrefs, isInitialize /* checkSystemProperties */);
- if (httpProxyHost != null) {
- ProxyData proxyData = new ProxyData(IProxyData.HTTP_PROXY_TYPE, httpProxyHost, port, false);
- ProxyType type = getType(proxyData);
- type.updatePreferencesIfMissing(netPrefs, proxyData);
- if (httpProxyEnable) {
- netPrefs.putBoolean(ProxyManager.PREF_ENABLED, true);
- }
- }
- }
- }
-
- private boolean getEnablementToMigrate(Preferences updatePrefs, boolean checkSystemProperties) {
- boolean httpProxyEnable = false;
- if (checkSystemProperties && updatePrefs.get(HTTP_PROXY_ENABLE, null) == null) {
- httpProxyEnable = Boolean.getBoolean("http.proxySet"); //$NON-NLS-1$
- } else {
- httpProxyEnable = updatePrefs.getBoolean(HTTP_PROXY_ENABLE, false);
- updatePrefs.remove(HTTP_PROXY_ENABLE);
- }
- return httpProxyEnable;
- }
-
- private int getPortToMigrate(Preferences updatePrefs, boolean checkSystemProperties) {
- String httpProxyPort = updatePrefs.get(HTTP_PROXY_PORT, ""); //$NON-NLS-1$
- if (checkSystemProperties && "".equals(httpProxyPort)) { //$NON-NLS-1$
- httpProxyPort = System.getProperty("http.proxyPort", ""); //$NON-NLS-1$ //$NON-NLS-2$
- }
- updatePrefs.remove(HTTP_PROXY_PORT);
- int port = -1;
- if (httpProxyPort != null && !"".equals(httpProxyPort)) //$NON-NLS-1$
- try {
- port = Integer.parseInt(httpProxyPort);
- } catch (NumberFormatException e) {
- // Ignore
- }
- return port;
- }
-
- private String getHostToMigrate(Preferences updatePrefs, boolean checkSystemProperties) {
- String httpProxyHost = updatePrefs.get(HTTP_PROXY_HOST, ""); //$NON-NLS-1$
- if (checkSystemProperties && "".equals(httpProxyHost)) { //$NON-NLS-1$
- httpProxyHost = System.getProperty("http.proxyHost", ""); //$NON-NLS-1$ //$NON-NLS-2$
- }
- if ("".equals(httpProxyHost)) //$NON-NLS-1$
- httpProxyHost = null;
- updatePrefs.remove(HTTP_PROXY_HOST);
- return httpProxyHost;
- }
-
- public void preferenceChange(PreferenceChangeEvent event) {
- if (event.getKey().equals(PREF_ENABLED)) {
- internalSetEnabled(Activator.getInstance().getInstancePreferences().getBoolean(PREF_ENABLED, false));
- }
- }
-
-}

Back to the top