From ed552ba47c02779c270ffd62841d6d1048dade70 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 22 Nov 2015 14:37:16 -0500
Subject: [PATCH] Merge branch 'develop'

---
 src/main/java/com/gitblit/transport/ssh/WelcomeShell.java |   38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java b/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
index a9fe6f0..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");
@@ -134,8 +135,10 @@
 			msg.append(user.getDisplayName());
 			msg.append(", you have successfully connected over SSH.");
 			msg.append(nl);
+			msg.append(" Interactive shells are not available.");
 			msg.append(nl);
-			msg.append("   client: ");
+			msg.append(nl);
+			msg.append("   client:   ");
 			msg.append(session.getClientVersion());
 			msg.append(nl);
 			msg.append(nl);
@@ -156,17 +159,21 @@
 			msg.append(nl);
 			msg.append(nl);
 
-			msg.append(" You may upload an SSH public key with the following syntax:");
-			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 gitblit keys add -", user.username, port, hostname));
-			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);
+				msg.append(b2);
+				msg.append(nl);
+				msg.append(nl);
+			}
 
 			// display the core commands
 			SshCommandFactory cmdFactory = (SshCommandFactory) session.getFactoryManager().getCommandFactory();
@@ -193,13 +200,18 @@
 		}
 
 		private String formatUrl(String hostname, int port, String username) {
-			if (port == 22) {
+			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, 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);
 			}
 		}
 	}

--
Gitblit v1.9.1