| /* |
| * weinre is available under *either* the terms of the modified BSD license *or* the |
| * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. |
| * |
| * Copyright (c) 2010, 2011 IBM Corporation |
| */ |
| |
| package com.phonegap.weinre.server.http; |
| |
| import java.io.IOException; |
| |
| import org.eclipse.jetty.server.Connector; |
| import org.eclipse.jetty.server.NCSARequestLog; |
| import org.eclipse.jetty.server.Server; |
| import org.eclipse.jetty.server.handler.HandlerList; |
| import org.eclipse.jetty.server.handler.RequestLogHandler; |
| import org.eclipse.jetty.server.nio.SelectChannelConnector; |
| import org.eclipse.jetty.servlet.ServletContextHandler; |
| import org.eclipse.jetty.servlet.ServletHolder; |
| import org.eclipse.jetty.servlets.ProxyServlet; |
| |
| import com.phonegap.weinre.server.Main; |
| import com.phonegap.weinre.server.ServerSettings; |
| |
| public class ProxyServer { |
| private ServerSettings settings; |
| |
| public ProxyServer(ServerSettings settings) { |
| super(); |
| |
| this.settings = settings; |
| } |
| |
| public void run() throws Exception { |
| SelectChannelConnector connector = new SelectChannelConnector(); |
| |
| connector = new SelectChannelConnector(); |
| |
| String hostName = settings.getBoundHost(); |
| |
| connector.setHost(hostName); |
| connector.setPort(settings.getHttpPort()+1); |
| connector.setReuseAddress(false); |
| |
| Server proxyServer = new Server(); |
| proxyServer.setConnectors(new Connector[] { connector }); |
| |
| HandlerList handlers = new HandlerList(); |
| |
| handlers = new HandlerList(); |
| |
| RequestLogHandler requestLogHandler = new RequestLogHandler(); |
| |
| requestLogHandler = new RequestLogHandler(); |
| |
| NCSARequestLog requestLog; |
| |
| requestLog = new NCSARequestLog(); |
| requestLog.setRetainDays(90); |
| requestLog.setAppend(true); |
| requestLog.setExtended(false); |
| requestLog.setLogTimeZone("GMT"); |
| requestLogHandler.setRequestLog(requestLog); |
| |
| handlers.addHandler(requestLogHandler); |
| |
| ServletContextHandler handlerProxy = new ServletContextHandler(); |
| handlerProxy.setContextPath("/"); |
| ProxyServlet proxyServlet = new ProxyServlet(); |
| handlerProxy.addServlet(new ServletHolder(proxyServlet), "/"); |
| handlers.addHandler(handlerProxy); |
| |
| proxyServer.setHandler(handlers); |
| |
| try { |
| proxyServer.start(); |
| } |
| catch (IOException e) { |
| Main.warn("unable to start proxy server: " + e.getMessage()); |
| proxyServer.stop(); |
| } |
| |
| Main.info("HTTP proxy server started at http://" + settings.getNiceHostName() + ":" + (settings.getHttpPort()+1)); |
| } |
| } |