From 8d96b960e472433d2b4a5b71df7000bf1fbde648 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:10 -0400
Subject: [PATCH] Track the SSH public key used for a session and add a `keys which` command
---
src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java b/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
index 61764c4..b42be17 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
@@ -48,6 +48,7 @@
register(user, AddKey.class);
register(user, RemoveKey.class);
register(user, ListKeys.class);
+ register(user, WhichKey.class);
}
@CommandMetaData(name = "add", description = "Add an SSH public key to your account")
@@ -177,4 +178,33 @@
stdout.println(FlipTable.of(headers, data, Borders.BODY_HCOLS));
}
}
+
+ @CommandMetaData(name = "which", description = "Display the SSH public key used for this session")
+ public static class WhichKey extends SshCommand {
+
+ @Option(name = "-L", usage = "list complete public key parameters")
+ private boolean showRaw;
+
+ @Override
+ public void run() throws UnloggedFailure {
+ SshKey key = getContext().getClient().getKey();
+ if (key == null) {
+ throw new UnloggedFailure(1, "You have not authenticated with an SSH public key.");
+ }
+
+ if (showRaw) {
+ stdout.println(key.getRawData());
+ } else {
+ asTable(key);
+ }
+ }
+
+ protected void asTable(SshKey key) {
+ String[] headers = { "Fingerprint", "Comment", "Type" };
+ Object[][] data = new Object[1][];
+ data[0] = new Object[] { key.getFingerprint(), key.getComment(), key.getAlgorithm() };
+
+ stdout.println(FlipTable.of(headers, data, Borders.BODY_HCOLS));
+ }
+ }
}
--
Gitblit v1.9.1