From b3aabb94c9935e61ba16bb5ab506c123ae29fbf3 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 15 Jun 2015 12:56:23 -0400
Subject: [PATCH] Renamed ssh.Display(Host|Port) to ssh.Advertised(Host|Port)
---
src/main/java/com/gitblit/transport/ssh/WelcomeShell.java | 86 ++++++++++++++++++++++++++++++++++---------
1 files changed, 68 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java b/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
index 819028c..ec6f729 100644
--- a/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
+++ b/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2009 The Android Open Source Project
* Copyright 2014 gitblit.com.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,6 +36,7 @@
import com.gitblit.Keys;
import com.gitblit.models.UserModel;
import com.gitblit.transport.ssh.commands.DispatchCommand;
+import com.gitblit.transport.ssh.commands.SshCommandFactory;
import com.gitblit.utils.StringUtils;
/**
@@ -112,36 +114,77 @@
String getMessage() {
SshDaemonClient client = session.getAttribute(SshDaemonClient.KEY);
UserModel user = client.getUser();
+ String hostname = getHostname();
+ int port = settings.getInteger(Keys.git.sshPort, 0);
+
+ final String b1 = StringUtils.rightPad("", 72, '═');
+ final String b2 = StringUtils.rightPad("", 72, '─');
+ final String nl = "\r\n";
StringBuilder msg = new StringBuilder();
- msg.append("\r\n");
- msg.append("Hi ");
+ msg.append(nl);
+ msg.append(b1);
+ msg.append(nl);
+ msg.append(" ");
+ msg.append(com.gitblit.Constants.getGitBlitVersion());
+ msg.append(nl);
+ msg.append(b1);
+ msg.append(nl);
+ msg.append(nl);
+ msg.append(" Hi ");
msg.append(user.getDisplayName());
- msg.append(", you have successfully connected to Gitblit over SSH");
- msg.append("\r\n");
- msg.append("with client: ");
+ msg.append(", you have successfully connected over SSH.");
+ msg.append(nl);
+ msg.append(" Interactive shells are not available.");
+ msg.append(nl);
+ msg.append(nl);
+ msg.append(" client: ");
msg.append(session.getClientVersion());
- msg.append("\r\n");
- msg.append("\r\n");
+ msg.append(nl);
+ msg.append(nl);
- msg.append("You may clone a repository with the following Git syntax:\r\n");
- msg.append("\r\n");
+ msg.append(b2);
+ msg.append(nl);
+ msg.append(nl);
+ msg.append(" You may clone a repository with the following Git syntax:");
+ msg.append(nl);
+ msg.append(nl);
msg.append(" git clone ");
- msg.append(formatUrl(user.username));
- msg.append("\r\n");
- msg.append("\r\n");
+ msg.append(formatUrl(hostname, port, user.username));
+ msg.append(nl);
+ msg.append(nl);
+
+ msg.append(b2);
+ msg.append(nl);
+ msg.append(nl);
+
+ if (client.getKey() == null) {
+ // user has authenticated with a password
+ // display add public key instructions
+ msg.append(" You may upload an SSH public key with the following syntax:");
+ msg.append(nl);
+ msg.append(nl);
+
+ msg.append(String.format(" cat ~/.ssh/id_rsa.pub | ssh -l %s -p %d %s keys add", user.username, port, hostname));
+ msg.append(nl);
+ msg.append(nl);
+
+ msg.append(b2);
+ msg.append(nl);
+ msg.append(nl);
+ }
// display the core commands
SshCommandFactory cmdFactory = (SshCommandFactory) session.getFactoryManager().getCommandFactory();
DispatchCommand root = cmdFactory.createRootDispatcher(client, "");
- String usage = root.usage().replace("\n", "\r\n");
+ String usage = root.usage().replace("\n", nl);
msg.append(usage);
return msg.toString();
}
- private String formatUrl(String username) {
+ private String getHostname() {
String host = null;
String url = settings.getString(Keys.web.canonicalUrl, "https://localhost:8443");
if (url != null) {
@@ -153,15 +196,22 @@
if (StringUtils.isEmpty(host)) {
host = SystemReader.getInstance().getHostname();
}
+ return host;
+ }
- int port = settings.getInteger(Keys.git.sshPort, 0);
- if (port == 22) {
+ private String formatUrl(String hostname, int port, String username) {
+ int displayPort = settings.getInteger(Keys.git.sshAdvertisedPort, port);
+ String displayHostname = settings.getString(Keys.git.sshAdvertisedHost, "");
+ if(displayHostname.isEmpty()) {
+ displayHostname = hostname;
+ }
+ if (displayPort == 22) {
// standard port
- return MessageFormat.format("{0}@{1}/REPOSITORY.git", username, host);
+ 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, host, port);
+ username, displayHostname, displayPort);
}
}
}
--
Gitblit v1.9.1