You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ha...@apache.org on 2015/05/21 14:41:59 UTC

[2/2] directory-kerby git commit: DIRKRB-229 Enhance kadmin to support list principals. Contributed by Yaning

DIRKRB-229 Enhance kadmin to support list principals. Contributed by Yaning


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/a2128ad7
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/a2128ad7
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/a2128ad7

Branch: refs/heads/master
Commit: a2128ad79f504aa1747705b966021ff2dcb7af42
Parents: 6376258
Author: Lin <li...@foxmail.com>
Authored: Thu May 21 20:40:59 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Thu May 21 20:40:59 2015 +0800

----------------------------------------------------------------------
 .../identitybackend/JsonIdentityBackend.java    |  8 +++
 .../identitybackend/LdapIdentityBackend.java    |  6 +++
 .../ZookeeperIdentityBackend.java               |  6 +++
 .../kerberos/kerb/identity/IdentityService.java |  7 +++
 .../identity/backend/MemoryIdentityBackend.java |  6 +++
 .../kerby/kerberos/tool/kadmin/Kadmin.java      |  4 ++
 .../kadmin/executor/ListPrincipalExcutor.java   | 55 ++++++++++++++++++++
 7 files changed, 92 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
index 4c89db6..7934ae9 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
@@ -177,6 +177,14 @@ public class JsonIdentityBackend extends AbstractIdentityBackend {
         return principals;
     }
 
+    @Override
+    public List<String> getIdentities() {
+        List<String> principals = new ArrayList<>(ids.keySet());
+        Collections.sort(principals);
+
+        return principals;
+    }
+
     private void createGson() {
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.registerTypeAdapter(EncryptionKey.class, new EncryptionKeyAdapter());

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
index e84c04a..ab9c398 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
@@ -80,4 +80,10 @@ public class LdapIdentityBackend extends AbstractIdentityBackend {
     public List<String> getIdentities(int start, int limit) {
         return null;
     }
+
+    @Override
+    public List<String> getIdentities() {
+        //TODO
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
index 743c2b9..654689b 100644
--- a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
+++ b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/ZookeeperIdentityBackend.java
@@ -219,6 +219,12 @@ public class ZookeeperIdentityBackend extends AbstractIdentityBackend
         return newIdentities.subList(start, limit);
     }
 
+    @Override
+    public List<String> getIdentities() {
+        //TODO
+        return null;
+    }
+
     private void setIdentity(KrbIdentity identity) throws KeeperException {
         String principalName = identity.getPrincipalName();
         principalName = replaceSlash(principalName);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
index 6083cf0..9086fdc 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/IdentityService.java
@@ -34,6 +34,13 @@ public interface IdentityService {
     List<String> getIdentities(int start, int limit);
 
     /**
+     * Get the identity principal names,
+     * Note it's ordered by principal name.
+     * @return principal names
+     */
+    List<String> getIdentities();
+
+    /**
      * Get the identity account specified by name.
      * @param principalName
      * @return identity

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
index 1ea780c..68742ee 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/MemoryIdentityBackend.java
@@ -58,4 +58,10 @@ public class MemoryIdentityBackend extends AbstractIdentityBackend {
     public List<String> getIdentities(int start, int limit) {
         return new ArrayList<>(getCache().keySet());
     }
+
+    @Override
+    public List<String> getIdentities() {
+        //TODO
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
index 39e429d..c6c3112 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/Kadmin.java
@@ -95,6 +95,10 @@ public class Kadmin {
         } else if (command.startsWith("get_principal") || command.startsWith("getprinc") ||
                 command.startsWith("Get principal")) {
             executor = new GetPrincipalExcutor(backendConfig);
+        } else if (command.startsWith("list_principals") ||
+                command.startsWith("listprincs") || command.startsWith("get_principals") ||
+                command.startsWith("getprincs") || command.startsWith("List principals")) {
+            executor = new ListPrincipalExcutor(backendConfig);
         }
         if (executor == null) {
             System.out.println("Unknown request \"" + command + "\". Type \"?\" for a request list.");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a2128ad7/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java
new file mode 100644
index 0000000..49f9f4f
--- /dev/null
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/ListPrincipalExcutor.java
@@ -0,0 +1,55 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.kerby.kerberos.tool.kadmin.executor;
+
+import org.apache.kerby.config.Config;
+import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
+import org.apache.kerby.kerberos.tool.kadmin.tool.KadminTool;
+
+import java.util.List;
+
+public class ListPrincipalExcutor implements KadminCommandExecutor {
+    private Config backenConfig;
+
+    public ListPrincipalExcutor(Config backenConfig) {
+        this.backenConfig = backenConfig;
+    }
+
+    @Override
+    public void execute(String input) {
+        String[] commands = input.split(" ");
+        List<String> principalNames = null;
+
+        if (commands.length == 1) {
+            principalNames = listPrincipal();
+        }
+        System.out.println("Principals are listed:");
+
+        for (String principalName : principalNames) {
+            System.out.println(principalName);
+        }
+    }
+
+    private List<String> listPrincipal() {
+        IdentityBackend backend = KadminTool.getBackend(backenConfig);
+        List<String> principalName = backend.getIdentities();
+        return principalName;
+    }
+}