From ab07d0d86d8b64b4f7c88b45bc81f1eec22105db Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 19:00:05 -0400 Subject: [PATCH] Preserve key index when re-adding an existing key --- src/main/java/com/gitblit/transport/ssh/FileKeyManager.java | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java b/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java index 8a3d2ff..77f818c 100644 --- a/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java +++ b/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java @@ -130,7 +130,7 @@ public boolean addKey(String username, SshKey key) { try { String newKey = stripCommentFromKey(key.getRawData()); - + boolean replaced = false; List<String> lines = new ArrayList<String>(); File keystore = getKeystore(username); if (keystore.exists()) { @@ -147,16 +147,22 @@ continue; } - // only add keys that do not match the new key String oldKey = stripCommentFromKey(line); - if (!newKey.equals(oldKey)) { + if (newKey.equals(oldKey)) { + // replace key + lines.add(key.getRawData()); + replaced = true; + } else { + // retain key lines.add(entry); } } } - // add new key - lines.add(key.getRawData()); + if (!replaced) { + // new key, append + lines.add(key.getRawData()); + } // write keystore String content = Joiner.on("\n").join(lines).trim().concat("\n"); -- Gitblit v1.9.1