diff --git a/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java b/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java index 06ee3cb7bf..b0dbf14d8d 100644 --- a/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java +++ b/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java @@ -94,6 +94,17 @@ public class ScmConfiguration return pluginUrl; } + /** + * Method description + * + * + * @return + */ + public int getPort() + { + return port; + } + /** * Method description * @@ -173,6 +184,17 @@ public class ScmConfiguration this.pluginUrl = pluginUrl; } + /** + * Method description + * + * + * @param port + */ + public void setPort(int port) + { + this.port = port; + } + /** * Method description * @@ -201,6 +223,9 @@ public class ScmConfiguration @XmlElement(name = "plugin-url") private String pluginUrl = DEFAULT_PLUGINURL; + /** Field description */ + private int port = -1; + /** Field description */ private String servername = "localhost"; diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java index 923102bd44..1accc40c59 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java @@ -233,7 +233,7 @@ public class RepositoryResource extends AbstractResource StringBuilder url = new StringBuilder(request.getScheme()); url.append("://").append(configuration.getServername()); - url.append(":").append(request.getLocalPort()); + url.append(":").append(getPort(request)); String ctxPath = request.getContextPath(); @@ -271,6 +271,35 @@ public class RepositoryResource extends AbstractResource //~--- 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 * diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.config.js b/scm-webapp/src/main/webapp/resources/js/sonia.config.js index 0602c0486f..3d16b9bcf4 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.config.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.config.js @@ -98,6 +98,11 @@ Sonia.config.ScmConfigPanel = Ext.extend(Sonia.config.ConfigPanel,{ fieldLabel: 'Servername', name: 'servername', allowBlank: false + },{ + xtype: 'textfield', + fieldLabel: 'Serverport', + name: 'port', + allowBlank: false },{ xtype: 'textfield', fieldLabel: 'Plugin repository',