Running gitblit in a container it's easy to expose the ssh on the default port.
Using git.sshDisplayPort/git.sshDisplayHost you can expose the forwarded address
as the official location.
# RESTART REQUIRED
git.sshBindInterface =
+# Manually specify the hostname to use in advertised SSH repository urls.
+# This may be useful in complex forwarding setups.
+#
+# SINCE 1.7.0
+git.sshDisplayHost =
+
+# Manually specify the port to use in advertised SSH repository urls.
+# This may be useful in complex forwarding setups.
+#
+# SINCE 1.7.0
+git.sshDisplayPort =
+
# Specify the SSH key manager to use for retrieving, storing, and removing
# SSH keys.
#
response.getWriter().append("SSH is not active on this server!");\r
return;\r
}\r
+ int sshDisplayPort = settings.getInteger(Keys.git.sshDisplayPort, sshPort);\r
+\r
// extract repo name from request\r
String repoUrl = request.getPathInfo().substring(1);\r
\r
if (!StringUtils.isEmpty(url) && url.indexOf("localhost") == -1) {\r
host = new URL(url).getHost();\r
}\r
+ String sshDisplayHost = settings.getString(Keys.git.sshDisplayHost, "");\r
+ if(sshDisplayHost.isEmpty()) {\r
+ sshDisplayHost = host;\r
+ }\r
\r
UserModel user;\r
if (StringUtils.isEmpty(username)) {\r
StringBuilder sb = new StringBuilder();\r
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");\r
sb.append("<sparkleshare><invite>\n");\r
- sb.append(MessageFormat.format("<address>ssh://{0}@{1}:{2,number,0}/</address>\n", user.username, host, sshPort));\r
+ sb.append(MessageFormat.format("<address>ssh://{0}@{1}:{2,number,0}/</address>\n", user.username, sshDisplayHost, sshDisplayPort));\r
sb.append(MessageFormat.format("<remote_path>/{0}</remote_path>\n", model.name));\r
int fanoutPort = settings.getInteger(Keys.fanout.port, 0);\r
if (fanoutPort > 0) {\r
}
public String formatUrl(String gituser, String servername, String repository) {
- if (sshd.getPort() == DEFAULT_PORT) {
+ IStoredSettings settings = gitblit.getSettings();
+
+ int port = sshd.getPort();
+ int displayPort = settings.getInteger(Keys.git.sshDisplayPort, port);
+ String displayServername = settings.getString(Keys.git.sshDisplayHost, "");
+ if(displayServername.isEmpty()) {
+ displayServername = servername;
+ }
+ if (displayPort == DEFAULT_PORT) {
// standard port
- return MessageFormat.format("ssh://{0}@{1}/{2}", gituser, servername,
+ return MessageFormat.format("ssh://{0}@{1}/{2}", gituser, displayServername,
repository);
} else {
// non-standard port
return MessageFormat.format("ssh://{0}@{1}:{2,number,0}/{3}",
- gituser, servername, sshd.getPort(), repository);
+ gituser, displayServername, displayPort, repository);
}
}
}
private String formatUrl(String hostname, int port, String username) {
- if (port == 22) {
+ int displayPort = settings.getInteger(Keys.git.sshDisplayPort, port);
+ String displayHostname = settings.getString(Keys.git.sshDisplayHost, "");
+ if(displayHostname.isEmpty()) {
+ displayHostname = hostname;
+ }
+ if (displayPort == 22) {
// standard port
- return MessageFormat.format("{0}@{1}/REPOSITORY.git", username, hostname);
+ return MessageFormat.format("{0}@{1}/REPOSITORY.git", username, displayHostname);
} else {
// non-standard port
return MessageFormat.format("ssh://{0}@{1}:{2,number,0}/REPOSITORY.git",
- username, hostname, port);
+ username, displayHostname, displayPort);
}
}
}
*/
package com.gitblit.transport.ssh.commands;
+import com.gitblit.IStoredSettings;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.MalformedURLException;
protected String getRepositoryUrl(String repository) {
String username = getContext().getClient().getUsername();
- String hostname = getHostname();
- int port = getContext().getGitblit().getSettings().getInteger(Keys.git.sshPort, 0);
- if (port == 22) {
+ IStoredSettings settings = getContext().getGitblit().getSettings();
+ String displayHostname = settings.getString(Keys.git.sshDisplayHost, "");
+ if(displayHostname.isEmpty()) {
+ displayHostname = getHostname();
+ }
+ int port = settings.getInteger(Keys.git.sshPort, 0);
+ int displayPort = settings.getInteger(Keys.git.sshDisplayPort, port);
+ if (displayPort == 22) {
// standard port
- return MessageFormat.format("{0}@{1}/{2}.git", username, hostname, repository);
+ return MessageFormat.format("{0}@{1}/{2}.git", username, displayHostname, repository);
} else {
// non-standard port
return MessageFormat.format("ssh://{0}@{1}:{2,number,0}/{3}",
- username, hostname, port, repository);
+ username, displayHostname, displayPort, repository);
}
}