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