package config; import java.io.IOException; import java.net.ProxySelector; import java.text.MessageFormat; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.Priority; import com.btr.proxy.search.ProxySearch; import com.btr.proxy.search.wpad.WpadProxySearchStrategy; import com.btr.proxy.util.ProxyException; import com.btr.proxy.util.Logger.LogBackEnd; import com.btr.proxy.util.Logger.LogLevel; /** * Configures the proxy * * @author Jonathan Bauer */ public class ConfigProxy { /** * Logger for this class */ private final static Logger LOGGER = Logger.getLogger(ConfigProxy.class); /** * Initialization method. */ public static void init() throws IOException { // first setup the logger of proxy_vole com.btr.proxy.util.Logger.setBackend(new LogBackEnd() { @SuppressWarnings("deprecation") public void log(Class clazz, LogLevel loglevel, String msg, Object... params) { Priority priority; switch (loglevel) { case ERROR: priority = Level.ERROR; break; case WARNING: priority = Priority.WARN; break; case INFO: priority = Priority.INFO; break; default: priority = Priority.DEBUG; } Logger.getLogger(clazz).log(priority, MessageFormat.format(msg, params)); } public boolean isLogginEnabled(LogLevel logLevel) { return true; } }); // try to find local proxy settings ProxySearch proxySearch = ProxySearch.getDefaultProxySearch(); ProxySelector myProxySelector = proxySearch.getProxySelector(); if (myProxySelector == null) { // didn't work, try WPAD detection LOGGER.error("No suitable proxy settings found, trying WPAD..."); WpadProxySearchStrategy ss = new WpadProxySearchStrategy(); try { myProxySelector = ss.getProxySelector(); } catch (ProxyException e) { LOGGER.error("WPAD proxy error, see trace: ", e); } } // final check to see if WPAD actually worked if (myProxySelector != null) { LOGGER.debug("Proxy initialised."); ProxySelector.setDefault(myProxySelector); } else { LOGGER.error("Could not find a suitable proxy!"); } } }