Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 157683 Details for
Bug 295030
Update Manager doesn't work with SOCKS proxy
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Untested patch
100129_patch_socksSocket.txt (text/plain), 19.32 KB, created by
Henrich Kraemer
on 2010-01-29 20:02:29 EST
(
hide
)
Description:
Untested patch
Filename:
MIME Type:
Creator:
Henrich Kraemer
Created:
2010-01-29 20:02:29 EST
Size:
19.32 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ecf.provider.filetransfer >Index: src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.ecf/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java,v >retrieving revision 1.49 >diff -u -r1.49 AbstractRetrieveFileTransfer.java >--- src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java 19 Nov 2009 06:44:01 -0000 1.49 >+++ src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java 30 Jan 2010 00:55:07 -0000 >@@ -18,13 +18,11 @@ > import java.io.InputStream; > import java.io.OutputStream; > import java.net.MalformedURLException; >-import java.net.URI; > import java.net.URL; > import java.text.DecimalFormat; > import java.util.Date; > import java.util.Map; > import org.eclipse.core.net.proxy.IProxyData; >-import org.eclipse.core.net.proxy.IProxyService; > import org.eclipse.core.runtime.Assert; > import org.eclipse.core.runtime.IAdapterManager; > import org.eclipse.core.runtime.IPath; >@@ -39,7 +37,6 @@ > import org.eclipse.ecf.core.identity.Namespace; > import org.eclipse.ecf.core.security.IConnectContext; > import org.eclipse.ecf.core.util.Proxy; >-import org.eclipse.ecf.core.util.ProxyAddress; > import org.eclipse.ecf.filetransfer.FileTransferJob; > import org.eclipse.ecf.filetransfer.IFileRangeSpecification; > import org.eclipse.ecf.filetransfer.IFileTransferListener; >@@ -57,6 +54,7 @@ > import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransfer; > import org.eclipse.ecf.internal.provider.filetransfer.Activator; > import org.eclipse.ecf.internal.provider.filetransfer.Messages; >+import org.eclipse.ecf.provider.filetransfer.ProxySetupHelper; > import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace; > import org.eclipse.ecf.provider.filetransfer.util.PollingInputStream; > import org.eclipse.ecf.provider.filetransfer.util.TimeoutInputStream; >@@ -918,26 +916,7 @@ > // If it's been set directly (via ECF API) then this overrides platform > // settings > if (proxy == null) { >- try { >- IProxyService proxyService = Activator.getDefault().getProxyService(); >- // Only do this if platform service exists >- if (proxyService != null && proxyService.isProxiesEnabled()) { >- // Setup via proxyService entry >- URI target = new URI(getRemoteFileURL().toExternalForm()); >- final IProxyData[] proxies = proxyService.select(target); >- IProxyData selectedProxy = selectProxyFromProxies(target.getScheme(), proxies); >- if (selectedProxy != null) { >- proxy = new Proxy(((selectedProxy.getType().equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(selectedProxy.getHost(), selectedProxy.getPort()), selectedProxy.getUserId(), selectedProxy.getPassword()); >- } >- } >- } catch (Exception e) { >- // If we don't even have the classes for this (i.e. the >- // org.eclipse.core.net plugin not available) >- // then we simply log and ignore >- Activator.logNoProxyWarning(e); >- } catch (NoClassDefFoundError e) { >- Activator.logNoProxyWarning(e); >- } >+ proxy = ProxySetupHelper.getProxy(getRemoteFileURL().toExternalForm()); > } > if (proxy != null) > setupProxy(proxy); >Index: src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.ecf/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java,v >retrieving revision 1.13 >diff -u -r1.13 AbstractOutgoingFileTransfer.java >--- src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java 22 Oct 2009 15:22:25 -0000 1.13 >+++ src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java 30 Jan 2010 00:55:06 -0000 >@@ -14,11 +14,9 @@ > import java.io.InputStream; > import java.io.OutputStream; > import java.net.MalformedURLException; >-import java.net.URI; > import java.net.URL; > import java.util.Map; > import org.eclipse.core.net.proxy.IProxyData; >-import org.eclipse.core.net.proxy.IProxyService; > import org.eclipse.core.runtime.Assert; > import org.eclipse.core.runtime.IAdapterManager; > import org.eclipse.core.runtime.IProgressMonitor; >@@ -30,7 +28,6 @@ > import org.eclipse.ecf.core.identity.Namespace; > import org.eclipse.ecf.core.security.IConnectContext; > import org.eclipse.ecf.core.util.Proxy; >-import org.eclipse.ecf.core.util.ProxyAddress; > import org.eclipse.ecf.filetransfer.FileTransferInfo; > import org.eclipse.ecf.filetransfer.FileTransferJob; > import org.eclipse.ecf.filetransfer.IFileTransferInfo; >@@ -47,6 +44,7 @@ > import org.eclipse.ecf.filetransfer.service.ISendFileTransfer; > import org.eclipse.ecf.internal.provider.filetransfer.Activator; > import org.eclipse.ecf.internal.provider.filetransfer.Messages; >+import org.eclipse.ecf.provider.filetransfer.ProxySetupHelper; > import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace; > import org.eclipse.osgi.util.NLS; > >@@ -357,31 +355,7 @@ > protected void setupProxies() { > // If it's been set directly (via ECF API) then this overrides platform settings > if (proxy == null) { >- try { >- IProxyService proxyService = Activator.getDefault().getProxyService(); >- // Only do this if platform service exists >- if (proxyService != null && proxyService.isProxiesEnabled()) { >- // Setup via proxyService entry >- URI target = new URI(getRemoteFileURL().toExternalForm()); >- String type = IProxyData.SOCKS_PROXY_TYPE; >- if (target.getScheme().equalsIgnoreCase(IProxyData.HTTP_PROXY_TYPE)) { >- type = IProxyData.HTTP_PROXY_TYPE; >- } else if (target.getScheme().equalsIgnoreCase(IProxyData.HTTPS_PROXY_TYPE)) { >- type = IProxyData.HTTPS_PROXY_TYPE; >- } >- final IProxyData[] proxyDatas = proxyService.select(target); >- final IProxyData proxyData = selectProxyFromProxies(target.getScheme(), proxyDatas); >- if (proxyData != null) { >- proxy = new Proxy(((type.equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(proxyData.getHost(), proxyData.getPort()), proxyData.getUserId(), proxyData.getPassword()); >- } >- } >- } catch (Exception e) { >- // If we don't even have the classes for this (i.e. the org.eclipse.core.net plugin not available) >- // then we simply log and ignore >- Activator.logNoProxyWarning(e); >- } catch (NoClassDefFoundError e) { >- Activator.logNoProxyWarning(e); >- } >+ proxy = ProxySetupHelper.getProxy(getRemoteFileURL().toExternalForm()); > } > if (proxy != null) > setupProxy(proxy); >Index: src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.ecf/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java,v >retrieving revision 1.12 >diff -u -r1.12 AbstractFileSystemBrowser.java >--- src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java 16 Mar 2009 21:37:39 -0000 1.12 >+++ src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java 30 Jan 2010 00:55:06 -0000 >@@ -12,12 +12,9 @@ > > package org.eclipse.ecf.provider.filetransfer.browse; > >-import java.net.URI; > import java.net.URL; > import java.util.Arrays; > import java.util.List; >-import org.eclipse.core.net.proxy.IProxyData; >-import org.eclipse.core.net.proxy.IProxyService; > import org.eclipse.core.runtime.Assert; > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.IStatus; >@@ -25,7 +22,6 @@ > import org.eclipse.core.runtime.jobs.Job; > import org.eclipse.ecf.core.security.IConnectContext; > import org.eclipse.ecf.core.util.Proxy; >-import org.eclipse.ecf.core.util.ProxyAddress; > import org.eclipse.ecf.filetransfer.IRemoteFile; > import org.eclipse.ecf.filetransfer.IRemoteFileSystemListener; > import org.eclipse.ecf.filetransfer.IRemoteFileSystemRequest; >@@ -33,8 +29,8 @@ > import org.eclipse.ecf.filetransfer.events.IRemoteFileSystemBrowseEvent; > import org.eclipse.ecf.filetransfer.events.IRemoteFileSystemEvent; > import org.eclipse.ecf.filetransfer.identity.IFileID; >-import org.eclipse.ecf.internal.provider.filetransfer.Activator; > import org.eclipse.ecf.internal.provider.filetransfer.Messages; >+import org.eclipse.ecf.provider.filetransfer.ProxySetupHelper; > > /** > * Abstract class for browsing an efs file system. >@@ -197,64 +193,10 @@ > > protected abstract void setupProxy(Proxy proxy); > >- /** >- * Select a single proxy from a set of proxies available for the given host. This implementation >- * selects in the following manner: 1) If proxies provided is null or array of 0 length, null >- * is returned. If only one proxy is available (array of length 1) then the entry is returned. >- * If proxies provided is length > 1, then if the type of a proxy in the array matches the given >- * protocol (e.g. http, https), then the first matching proxy is returned. If the protocol does >- * not match any of the proxies, then the *first* proxy (i.e. proxies[0]) is returned. Subclasses may >- * override if desired. >- * >- * @param protocol the target protocol (e.g. http, https, scp, etc). Will not be <code>null</code>. >- * @param proxies the proxies to select from. May be <code>null</code> or array of length 0. >- * @return proxy data selected from the proxies provided. >- */ >- protected IProxyData selectProxyFromProxies(String protocol, IProxyData[] proxies) { >- if (proxies == null || proxies.length == 0) >- return null; >- // If only one proxy is available, then use that >- if (proxies.length == 1) >- return proxies[0]; >- // If more than one proxy is available, then if http/https protocol then look for that >- // one...if not found then use first >- if (protocol.equalsIgnoreCase("http")) { //$NON-NLS-1$ >- for (int i = 0; i < proxies.length; i++) { >- if (proxies[i].getType().equals(IProxyData.HTTP_PROXY_TYPE)) >- return proxies[i]; >- } >- } else if (protocol.equalsIgnoreCase("https")) { //$NON-NLS-1$ >- for (int i = 0; i < proxies.length; i++) { >- if (proxies[i].getType().equals(IProxyData.HTTPS_PROXY_TYPE)) >- return proxies[i]; >- } >- } >- // If we haven't found it yet, then return the first one. >- return proxies[0]; >- } >- > protected void setupProxies() { > // If it's been set directly (via ECF API) then this overrides platform settings > if (proxy == null) { >- try { >- IProxyService proxyService = Activator.getDefault().getProxyService(); >- // Only do this if platform service exists >- if (proxyService != null && proxyService.isProxiesEnabled()) { >- // Setup via proxyService entry >- URI target = new URI(directoryOrFile.toExternalForm()); >- final IProxyData[] proxies = proxyService.select(target); >- IProxyData selectedProxy = selectProxyFromProxies(target.getScheme(), proxies); >- if (selectedProxy != null) { >- proxy = new Proxy(((selectedProxy.getType().equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(selectedProxy.getHost(), selectedProxy.getPort()), selectedProxy.getUserId(), selectedProxy.getPassword()); >- } >- } >- } catch (Exception e) { >- // If we don't even have the classes for this (i.e. the org.eclipse.core.net plugin not available) >- // then we simply log and ignore >- Activator.logNoProxyWarning(e); >- } catch (NoClassDefFoundError e) { >- Activator.logNoProxyWarning(e); >- } >+ proxy = ProxySetupHelper.getProxy(directoryOrFile.toExternalForm()); > } > if (proxy != null) > setupProxy(proxy); >Index: src/org/eclipse/ecf/provider/filetransfer/ProxySetupHelper.java >=================================================================== >RCS file: src/org/eclipse/ecf/provider/filetransfer/ProxySetupHelper.java >diff -N src/org/eclipse/ecf/provider/filetransfer/ProxySetupHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ecf/provider/filetransfer/ProxySetupHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,82 @@ >+package org.eclipse.ecf.provider.filetransfer; >+ >+import java.net.URI; >+import java.net.URL; >+import org.eclipse.core.net.proxy.IProxyData; >+import org.eclipse.core.net.proxy.IProxyService; >+import org.eclipse.ecf.core.util.Proxy; >+import org.eclipse.ecf.core.util.ProxyAddress; >+import org.eclipse.ecf.internal.provider.filetransfer.Activator; >+ >+public class ProxySetupHelper { >+ public static Proxy getProxy(String url) { >+ Proxy proxy = null; >+ try { >+ IProxyService proxyService = Activator.getDefault().getProxyService(); >+ // Only do this if platform service exists >+ if (proxyService != null && proxyService.isProxiesEnabled()) { >+ // Setup via proxyService entry >+ URI uri = new URI(url); >+ final IProxyData[] proxies = proxyService.select(uri); >+ IProxyData selectedProxy = selectProxyFromProxies(uri.getScheme(), proxies); >+ if (selectedProxy != null) { >+ proxy = new Proxy(((selectedProxy.getType().equalsIgnoreCase(IProxyData.SOCKS_PROXY_TYPE)) ? Proxy.Type.SOCKS : Proxy.Type.HTTP), new ProxyAddress(selectedProxy.getHost(), selectedProxy.getPort()), selectedProxy.getUserId(), selectedProxy.getPassword()); >+ } >+ } >+ } catch (Exception e) { >+ // If we don't even have the classes for this (i.e. the org.eclipse.core.net plugin not available) >+ // then we simply log and ignore >+ Activator.logNoProxyWarning(e); >+ } catch (NoClassDefFoundError e) { >+ Activator.logNoProxyWarning(e); >+ } >+ return proxy; >+ } >+ >+ public static Proxy getSocksProxy(URL url) { >+ String host = url.getHost(); >+ int port = url.getPort(); >+ String strURL = IProxyData.SOCKS_PROXY_TYPE + "://" + host; //$NON-NLS-1$ >+ if (port != -1) { >+ strURL += ":" + port; //$NON-NLS-1$ >+ } >+ return ProxySetupHelper.getProxy(strURL); >+ } >+ >+ /** >+ * Select a single proxy from a set of proxies available for the given host. This implementation >+ * selects in the following manner: 1) If proxies provided is null or array of 0 length, null >+ * is returned. If only one proxy is available (array of length 1) then the entry is returned. >+ * If proxies provided is length > 1, then if the type of a proxy in the array matches the given >+ * protocol (e.g. http, https), then the first matching proxy is returned. If the protocol does >+ * not match any of the proxies, then the *first* proxy (i.e. proxies[0]) is returned. Subclasses may >+ * override if desired. >+ * >+ * @param protocol the target protocol (e.g. http, https, scp, etc). Will not be <code>null</code>. >+ * @param proxies the proxies to select from. May be <code>null</code> or array of length 0. >+ * @return proxy data selected from the proxies provided. >+ */ >+ private static IProxyData selectProxyFromProxies(String protocol, IProxyData[] proxies) { >+ if (proxies == null || proxies.length == 0) >+ return null; >+ // If only one proxy is available, then use that >+ if (proxies.length == 1) >+ return proxies[0]; >+ // If more than one proxy is available, then if http/https protocol then look for that >+ // one...if not found then use first >+ if (protocol.equalsIgnoreCase("http")) { //$NON-NLS-1$ >+ for (int i = 0; i < proxies.length; i++) { >+ if (proxies[i].getType().equals(IProxyData.HTTP_PROXY_TYPE)) >+ return proxies[i]; >+ } >+ } else if (protocol.equalsIgnoreCase("https")) { //$NON-NLS-1$ >+ for (int i = 0; i < proxies.length; i++) { >+ if (proxies[i].getType().equals(IProxyData.HTTPS_PROXY_TYPE)) >+ return proxies[i]; >+ } >+ } >+ // If we haven't found it yet, then return the first one. >+ return proxies[0]; >+ } >+ >+} >#P org.eclipse.ecf.provider.filetransfer.httpclient >Index: src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.ecf/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java,v >retrieving revision 1.68 >diff -u -r1.68 HttpClientRetrieveFileTransfer.java >--- src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java 17 Dec 2009 06:12:49 -0000 1.68 >+++ src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java 30 Jan 2010 00:55:08 -0000 >@@ -72,6 +72,7 @@ > import org.eclipse.ecf.internal.provider.filetransfer.httpclient.HttpClientProxyCredentialProvider; > import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ISSLSocketFactoryModifier; > import org.eclipse.ecf.internal.provider.filetransfer.httpclient.Messages; >+import org.eclipse.ecf.provider.filetransfer.ProxySetupHelper; > import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource; > import org.eclipse.ecf.provider.filetransfer.identity.FileTransferID; > import org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer; >@@ -415,6 +416,14 @@ > return new UsernamePasswordCredentials(username, password); > } > >+ protected void setupProxies() { >+ super.setupProxies(); >+ Proxy socksProxy = ProxySetupHelper.getSocksProxy(getRemoteFileURL()); >+ if (socksProxy != null) { >+ setupProxy(socksProxy); >+ } >+ } >+ > protected void setupAuthentication(String urlString) throws UnsupportedCallbackException, IOException { > Credentials credentials = null; > if (username == null) { >Index: src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.ecf/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java,v >retrieving revision 1.17 >diff -u -r1.17 HttpClientFileSystemBrowser.java >--- src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java 26 Oct 2009 19:18:35 -0000 1.17 >+++ src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java 30 Jan 2010 00:55:08 -0000 >@@ -47,6 +47,7 @@ > import org.eclipse.ecf.internal.provider.filetransfer.httpclient.DebugOptions; > import org.eclipse.ecf.internal.provider.filetransfer.httpclient.HttpClientProxyCredentialProvider; > import org.eclipse.ecf.internal.provider.filetransfer.httpclient.Messages; >+import org.eclipse.ecf.provider.filetransfer.ProxySetupHelper; > import org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser; > import org.eclipse.ecf.provider.filetransfer.browse.URLRemoteFile; > import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource; >@@ -158,6 +159,14 @@ > return (System.getProperties().getProperty(HttpClientOptions.FORCE_NTLM_PROP) != null); > } > >+ protected void setupProxies() { >+ super.setupProxies(); >+ Proxy socksProxy = ProxySetupHelper.getSocksProxy(directoryOrFile); >+ if (socksProxy != null) { >+ setupProxy(socksProxy); >+ } >+ } >+ > /* (non-Javadoc) > * @see org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser#runRequest() > */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 295030
:
152132
|
152176
|
152177
|
152212
|
157623
|
157652
| 157683 |
165828
|
165852
|
165981