James Moger
2014-03-27 ab07d0d86d8b64b4f7c88b45bc81f1eec22105db
Preserve key index when re-adding an existing key
1 files modified
16 ■■■■■ changed files
src/main/java/com/gitblit/transport/ssh/FileKeyManager.java 16 ●●●●● patch | view | raw | blame | history
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");