package org.gcube.dataanalysis.dataminer.poolmanager.util; ***REMOVED*** import java.net.Authenticator; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; import java.net.ProxySelector; import java.net.SocketAddress; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; ***REMOVED*** import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy; interface NetworkConfiguration ***REMOVED*** public String getProxyHost(); public String getProxyPort(); public String getProxyUser(); public String getProxyPassword(); public String getNonProxyHosts(); ***REMOVED*** class FileBasedProxyConfiguration implements NetworkConfiguration ***REMOVED*** private static PropertiesConfiguration configuration; public FileBasedProxyConfiguration(String path) ***REMOVED*** try ***REMOVED*** ***REMOVED*** load the configuration configuration = new PropertiesConfiguration(path); ***REMOVED*** set the reloading strategy to enable hot-configuration FileChangedReloadingStrategy fcrs = new FileChangedReloadingStrategy(); configuration.setReloadingStrategy(fcrs); ***REMOVED*** catch (ConfigurationException e) ***REMOVED*** e.printStackTrace(); ***REMOVED*** ***REMOVED*** @Override public String getProxyHost() ***REMOVED*** return configuration.getString("proxyHost"); ***REMOVED*** @Override public String getProxyPort() ***REMOVED*** return configuration.getString("proxyPort"); ***REMOVED*** @Override public String getProxyUser() ***REMOVED*** return configuration.getString("proxyUser"); ***REMOVED*** @Override public String getProxyPassword() ***REMOVED*** return configuration.getString("proxyPassword"); ***REMOVED*** @Override public String getNonProxyHosts() ***REMOVED*** return configuration.getString("nonProxyHosts"); ***REMOVED*** ***REMOVED*** public class PropertiesBasedProxySelector extends ProxySelector ***REMOVED*** List proxies = null; List nonProxyHosts = null; public PropertiesBasedProxySelector(String proxySettingsPath) ***REMOVED*** this(new FileBasedProxyConfiguration(proxySettingsPath)); ***REMOVED*** public PropertiesBasedProxySelector(NetworkConfiguration config) ***REMOVED*** if (config == null || config.getProxyHost() == null) ***REMOVED*** this.proxies = null; return; ***REMOVED*** String host = config.getProxyHost(); int port = 80; if (config.getProxyPort() != null) ***REMOVED*** port = Integer.valueOf(config.getProxyPort()); ***REMOVED*** if (config.getNonProxyHosts() != null) ***REMOVED*** this.nonProxyHosts = Arrays .asList(config.getNonProxyHosts().split("\\|")); ***REMOVED*** this.proxies = new ArrayList(); this.proxies.add(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port))); if (config.getProxyUser() != null) ***REMOVED*** final String username = config.getProxyUser(); final String password = config.getProxyPassword(); Authenticator.setDefault(new Authenticator() ***REMOVED*** @Override protected PasswordAuthentication getPasswordAuthentication() ***REMOVED*** return new PasswordAuthentication(username, password.toCharArray()); ***REMOVED*** ***REMOVED***); ***REMOVED*** ***REMOVED*** @Override public List select(URI uri) ***REMOVED*** if (this.nonProxyHosts == null) ***REMOVED*** return Arrays.asList(Proxy.NO_PROXY); ***REMOVED*** else ***REMOVED*** for (String entry : this.nonProxyHosts) ***REMOVED*** entry = entry.trim(); if (entry.startsWith("*") && uri.getHost().endsWith(entry.substring(1))) ***REMOVED*** return Arrays.asList(Proxy.NO_PROXY); ***REMOVED*** if (uri.getHost().equals(entry)) ***REMOVED*** return Arrays.asList(Proxy.NO_PROXY); ***REMOVED*** ***REMOVED*** return this.proxies; ***REMOVED*** ***REMOVED*** @Override public void connectFailed(URI uri, SocketAddress socketAddress, IOException e) ***REMOVED*** ***REMOVED*** ***REMOVED***