From fbc7a7dd5fa61486610cf11c09e0007f2900a3e1 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 03 Dec 2014 15:05:49 -0500
Subject: [PATCH] Add support for specifying the `Proxy-Authorization` header for the PluginManager
---
src/main/java/com/gitblit/transport/ssh/MemoryKeyManager.java | 51 +++++++++++++++++++++++++++++++++------------------
1 files changed, 33 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/MemoryKeyManager.java b/src/main/java/com/gitblit/transport/ssh/MemoryKeyManager.java
index 26bd021..bf78378 100644
--- a/src/main/java/com/gitblit/transport/ssh/MemoryKeyManager.java
+++ b/src/main/java/com/gitblit/transport/ssh/MemoryKeyManager.java
@@ -15,11 +15,12 @@
*/
package com.gitblit.transport.ssh;
-import java.security.PublicKey;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
+import com.google.inject.Inject;
/**
* Memory public key manager.
@@ -29,10 +30,11 @@
*/
public class MemoryKeyManager extends IPublicKeyManager {
- Map<String, List<PublicKey>> keys;
+ final Map<String, List<SshKey>> keys;
+ @Inject
public MemoryKeyManager() {
- keys = new HashMap<String, List<PublicKey>>();
+ keys = new HashMap<String, List<SshKey>>();
}
@Override
@@ -58,11 +60,12 @@
@Override
protected boolean isStale(String username) {
- return false;
+ // always return true so we gets keys from our hashmap
+ return true;
}
@Override
- protected List<PublicKey> getKeysImpl(String username) {
+ protected List<SshKey> getKeysImpl(String username) {
String id = username.toLowerCase();
if (keys.containsKey(id)) {
return keys.get(id);
@@ -71,28 +74,40 @@
}
@Override
- public boolean addKey(String username, String data) {
- return false;
+ public boolean addKey(String username, SshKey key) {
+ String id = username.toLowerCase();
+ if (!keys.containsKey(id)) {
+ keys.put(id, new ArrayList<SshKey>());
+ }
+ log.info("added {} key {}", username, key.getFingerprint());
+ return keys.get(id).add(key);
}
@Override
- public boolean removeKey(String username, String data) {
- return false;
+ public boolean removeKey(String username, SshKey key) {
+ String id = username.toLowerCase();
+ if (!keys.containsKey(id)) {
+ log.info("can't remove keys for {}", username);
+ return false;
+ }
+ List<SshKey> list = keys.get(id);
+ boolean success = list.remove(key);
+ if (success) {
+ log.info("removed {} key {}", username, key.getFingerprint());
+ }
+
+ if (list.isEmpty()) {
+ keys.remove(id);
+ log.info("no {} keys left, removed {}", username, username);
+ }
+ return success;
}
@Override
public boolean removeAllKeys(String username) {
String id = username.toLowerCase();
keys.remove(id.toLowerCase());
+ log.info("removed all keys for {}", username);
return true;
- }
-
- /* Test method for populating the memory key manager */
- public void addKey(String username, PublicKey key) {
- String id = username.toLowerCase();
- if (!keys.containsKey(id)) {
- keys.put(id, new ArrayList<PublicKey>());
- }
- keys.get(id).add(key);
}
}
--
Gitblit v1.9.1