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 { public String getProxyHost(); public String getProxyPort(); public String getProxyUser(); public String getProxyPassword(); public String getNonProxyHosts(); ***REMOVED*** class FileBasedProxyConfiguration implements NetworkConfiguration { private static PropertiesConfiguration configuration; public FileBasedProxyConfiguration(String path) { try { ***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) { e.printStackTrace(); ***REMOVED*** ***REMOVED*** @Override public String getProxyHost() { return configuration.getString("proxyHost"); ***REMOVED*** @Override public String getProxyPort() { return configuration.getString("proxyPort"); ***REMOVED*** @Override public String getProxyUser() { return configuration.getString("proxyUser"); ***REMOVED*** @Override public String getProxyPassword() { return configuration.getString("proxyPassword"); ***REMOVED*** @Override public String getNonProxyHosts() { return configuration.getString("nonProxyHosts"); ***REMOVED*** ***REMOVED*** public class PropertiesBasedProxySelector extends ProxySelector { List proxies = null; List nonProxyHosts = null; public PropertiesBasedProxySelector(String proxySettingsPath) { this(new FileBasedProxyConfiguration(proxySettingsPath)); ***REMOVED*** public PropertiesBasedProxySelector(NetworkConfiguration config) { if (config == null || config.getProxyHost() == null) { this.proxies = null; return; ***REMOVED*** String host = config.getProxyHost(); int port = 80; if (config.getProxyPort() != null) { port = Integer.valueOf(config.getProxyPort()); ***REMOVED*** if (config.getNonProxyHosts() != null) { 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) { final String username = config.getProxyUser(); final String password = config.getProxyPassword(); Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password.toCharArray()); ***REMOVED*** ***REMOVED***); ***REMOVED*** ***REMOVED*** @Override public List select(URI uri) { if (this.nonProxyHosts == null) { return Arrays.asList(Proxy.NO_PROXY); ***REMOVED*** else { for (String entry : this.nonProxyHosts) { entry = entry.trim(); if (entry.startsWith("*") && uri.getHost().endsWith(entry.substring(1))) { return Arrays.asList(Proxy.NO_PROXY); ***REMOVED*** if (uri.getHost().equals(entry)) { 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***