use configured server port in cgis for mod_proxy

This commit is contained in:
Sebastian Sdorra
2011-02-06 16:22:54 +01:00
parent 6be07f0756
commit fb10867652
6 changed files with 76 additions and 36 deletions

View File

@@ -39,6 +39,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.io.RegexResourceProcessor; import sonia.scm.io.RegexResourceProcessor;
import sonia.scm.io.ResourceProcessor; import sonia.scm.io.ResourceProcessor;
import sonia.scm.repository.BzrConfig; import sonia.scm.repository.BzrConfig;
@@ -116,15 +117,19 @@ public class BzrCGIServlet extends AbstractCGIServlet
* *
* *
* *
*
* @param configuration
* @param securityContextProvider * @param securityContextProvider
* @param repositoryManager * @param repositoryManager
* @param handler * @param handler
*/ */
@Inject @Inject
public BzrCGIServlet(Provider<WebSecurityContext> securityContextProvider, public BzrCGIServlet(ScmConfiguration configuration,
Provider<WebSecurityContext> securityContextProvider,
RepositoryManager repositoryManager, RepositoryManager repositoryManager,
BzrRepositoryHandler handler) BzrRepositoryHandler handler)
{ {
super(configuration);
this.securityContextProvider = securityContextProvider; this.securityContextProvider = securityContextProvider;
this.repositoryManager = repositoryManager; this.repositoryManager = repositoryManager;
this.handler = handler; this.handler = handler;

View File

@@ -38,6 +38,7 @@ package sonia.scm.web;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.repository.HgConfig; import sonia.scm.repository.HgConfig;
import sonia.scm.repository.HgRepositoryHandler; import sonia.scm.repository.HgRepositoryHandler;
import sonia.scm.repository.Repository; import sonia.scm.repository.Repository;
@@ -88,13 +89,17 @@ public class HgCGIServlet extends AbstractCGIServlet
* *
* *
* *
*
* @param configuration
* @param repositoryManager * @param repositoryManager
* @param handler * @param handler
*/ */
@Inject @Inject
public HgCGIServlet(RepositoryManager repositoryManager, public HgCGIServlet(ScmConfiguration configuration,
RepositoryManager repositoryManager,
HgRepositoryHandler handler) HgRepositoryHandler handler)
{ {
super(configuration);
this.repositoryManager = repositoryManager; this.repositoryManager = repositoryManager;
this.handler = handler; this.handler = handler;
} }

View File

@@ -33,6 +33,10 @@
package sonia.scm.util; package sonia.scm.util;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.config.ScmConfiguration;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -75,6 +79,37 @@ public class HttpUtil
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @param configuration
* @param request
*
* @return
*/
public static int getServerPort(ScmConfiguration configuration,
HttpServletRequest request)
{
int port = 0;
if (configuration.isEnableSSL())
{
port = configuration.getSslPort();
}
else
{
port = configuration.getPort();
}
if (port <= 0)
{
port = request.getLocalPort();
}
return port;
}
/** /**
* Method description * Method description
* *

View File

@@ -33,6 +33,11 @@
package sonia.scm.web.cgi; package sonia.scm.web.cgi;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.config.ScmConfiguration;
import sonia.scm.util.HttpUtil;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.io.File; import java.io.File;
@@ -55,6 +60,19 @@ public abstract class AbstractCGIServlet extends HttpServlet
/** Field description */ /** Field description */
private static final long serialVersionUID = -8638099037069714140L; private static final long serialVersionUID = -8638099037069714140L;
//~--- constructors ---------------------------------------------------------
/**
* Constructs ...
*
*
* @param configuration
*/
public AbstractCGIServlet(ScmConfiguration configuration)
{
this.configuration = configuration;
}
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
/** /**
@@ -157,7 +175,7 @@ public abstract class AbstractCGIServlet extends HttpServlet
{ {
cgiRunner.exec(createRequestEnvironment(req, baseEnvironment), cgiRunner.exec(createRequestEnvironment(req, baseEnvironment),
getCmdPrefix(), getCommand(req), req.getPathInfo(), req, getCmdPrefix(), getCommand(req), req.getPathInfo(), req,
resp); resp, HttpUtil.getServerPort(configuration, req));
} }
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
@@ -191,4 +209,7 @@ public abstract class AbstractCGIServlet extends HttpServlet
/** Field description */ /** Field description */
private CGIRunner cgiRunner; private CGIRunner cgiRunner;
/** Field description */
private ScmConfiguration configuration;
} }

View File

@@ -103,10 +103,10 @@ public class CGIRunner
* @throws IOException * @throws IOException
*/ */
public void exec(EnvList environment, File command, String pathInfo, public void exec(EnvList environment, File command, String pathInfo,
HttpServletRequest req, HttpServletResponse res) HttpServletRequest req, HttpServletResponse res, int serverPort)
throws IOException throws IOException
{ {
exec(environment, defaultCmdPrefix, command, pathInfo, req, res); exec(environment, defaultCmdPrefix, command, pathInfo, req, res, serverPort);
} }
/** /**
@@ -125,7 +125,7 @@ public class CGIRunner
*/ */
public void exec(EnvList environment, String cmdPrefix, File command, public void exec(EnvList environment, String cmdPrefix, File command,
String pathInfo, HttpServletRequest req, String pathInfo, HttpServletRequest req,
HttpServletResponse res) HttpServletResponse res, int serverPort)
throws IOException throws IOException
{ {
String path = command.getAbsolutePath(); String path = command.getAbsolutePath();
@@ -169,7 +169,7 @@ public class CGIRunner
environment.set("SCRIPT_NAME", scriptName); environment.set("SCRIPT_NAME", scriptName);
environment.set("SCRIPT_FILENAME", scriptPath); environment.set("SCRIPT_FILENAME", scriptPath);
environment.set("SERVER_NAME", req.getServerName()); environment.set("SERVER_NAME", req.getServerName());
environment.set("SERVER_PORT", Integer.toString(req.getServerPort())); environment.set("SERVER_PORT", Integer.toString(serverPort));
environment.set("SERVER_PROTOCOL", req.getProtocol()); environment.set("SERVER_PROTOCOL", req.getProtocol());
environment.set("SERVER_SOFTWARE", context.getServerInfo()); environment.set("SERVER_SOFTWARE", context.getServerInfo());

View File

@@ -59,6 +59,7 @@ import java.util.Collection;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import sonia.scm.util.HttpUtil;
/** /**
* *
@@ -233,7 +234,7 @@ public class RepositoryResource extends AbstractResource<Repository>
StringBuilder url = new StringBuilder(request.getScheme()); StringBuilder url = new StringBuilder(request.getScheme());
url.append("://").append(configuration.getServername()); url.append("://").append(configuration.getServername());
url.append(":").append(getPort(request)); url.append(":").append(HttpUtil.getServerPort(configuration, request));
String ctxPath = request.getContextPath(); String ctxPath = request.getContextPath();
@@ -271,34 +272,7 @@ public class RepositoryResource extends AbstractResource<Repository>
//~--- get methods ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @param request
*
* @return
*/
private int getPort(HttpServletRequest request)
{
int port = 0;
if (configuration.isEnableSSL())
{
port = configuration.getSslPort();
}
else
{
port = configuration.getPort();
}
if (port <= 0)
{
port = request.getLocalPort();
}
return port;
}
/** /**
* Method description * Method description