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/07 16:15:47 UTC

directory-kerby git commit: DIRKRB-237 Implement the parseOptions function in AddPrincipalExecutor. Contributed by Wei

Repository: directory-kerby
Updated Branches:
  refs/heads/master bac358c53 -> 2782d05c2


DIRKRB-237 Implement the parseOptions function in AddPrincipalExecutor. Contributed by Wei


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

Branch: refs/heads/master
Commit: 2782d05c205129eb7aaa64117eb8cef8235d20fc
Parents: bac358c
Author: Lin <li...@foxmail.com>
Authored: Thu May 7 22:15:06 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Thu May 7 22:15:06 2015 +0800

----------------------------------------------------------------------
 .../kadmin/executor/AddPrincipalExecutor.java   | 43 +++++++++++++++-----
 .../kerberos/tool/kadmin/tool/KadminOption.java |  4 +-
 2 files changed, 35 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2782d05c/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/AddPrincipalExecutor.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/AddPrincipalExecutor.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/AddPrincipalExecutor.java
index fd03bcb..61a3b55 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/AddPrincipalExecutor.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/executor/AddPrincipalExecutor.java
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.kerberos.tool.kadmin.executor;
 
+import org.apache.kerby.KOptions;
 import org.apache.kerby.config.Config;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
@@ -27,10 +28,12 @@ import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
+import org.apache.kerby.kerberos.tool.kadmin.tool.KadminOption;
 import org.apache.kerby.kerberos.tool.kadmin.tool.KadminTool;
 
 import java.io.Console;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Scanner;
 
@@ -48,12 +51,15 @@ public class AddPrincipalExecutor implements KadminCommandExecutor{
             "\t\trequires_hwauth needchange allow_svr password_changing_service\n" +
             "\t\tok_as_delegate ok_to_auth_as_delegate no_auth_data_required\n" +
             "\n" +
-            "where,\n" +
+            "\twhere,\n" +
             "\t[-x db_princ_args]* - any number of database specific arguments.\n" +
-            "\t\t\tLook at each database documentation for supported arguments";
+            "\t\t\tLook at each database documentation for supported arguments.\n" +
+            "\tExample:\n" +
+            "\t\tadd_principal -expire 23/04/15:01:01:01 -kvno 1 -pw mypassword test@EXAMPLE.COM";
 
     private KdcConfig kdcConfig;
     private Config backendConfig;
+    private KOptions kOptions;
 
     public AddPrincipalExecutor(KdcConfig kdcConfig, Config backendConfig) {
         this.kdcConfig = kdcConfig;
@@ -62,21 +68,30 @@ public class AddPrincipalExecutor implements KadminCommandExecutor{
 
     @Override
     public void execute(String input) {
-        String[] commands = input.split(" ");
+        String[] commands = input.split("\\s+");
         if (commands.length < 2) {
             System.err.println(USAGE);
             return;
         }
 
+        kOptions = KadminTool.parseOptions(commands, 1, commands.length - 2);
+        if(kOptions == null) {
+            System.err.println(USAGE);
+            return;
+        }
         String principal = commands[commands.length - 1];
-        String password = getPassword(principal);
+        String password;
+        if(kOptions.contains(KadminOption.PW)) {
+            password = kOptions.getStringOption(KadminOption.PW);
+        } else {
+            password = getPassword(principal);
+        }
 
         if (password == null) {
             return;
         }
 
         addPrincipal(principal, password);
-        System.out.println("Principal \"" + principal + "\" created.");
     }
 
     /**
@@ -130,6 +145,7 @@ public class AddPrincipalExecutor implements KadminCommandExecutor{
         KrbIdentity identity = createIdentity(principal, password);
         try {
             backend.addIdentity(identity);
+            System.out.println("Principal \"" + principal + "\" created.");
         } catch (Exception e) {
             System.err.println("Principal or policy already exists while creating \"" + principal + "\".");
         }
@@ -138,9 +154,18 @@ public class AddPrincipalExecutor implements KadminCommandExecutor{
     protected KrbIdentity createIdentity(String principal, String password) {
         KrbIdentity kid = new KrbIdentity(principal);
         kid.setCreatedTime(KerberosTime.now());
-        kid.setExpireTime(KerberosTime.NEVER);
+        if(kOptions.contains(KadminOption.EXPIRE)) {
+            Date date = kOptions.getDateOption(KadminOption.EXPIRE);
+            kid.setExpireTime(new KerberosTime(date.getTime()));
+        } else {
+            kid.setExpireTime(KerberosTime.NEVER);
+        }
+        if(kOptions.contains(KadminOption.KVNO)) {
+            kid.setKeyVersion(kOptions.getIntegerOption(KadminOption.KVNO));
+        } else {
+            kid.setKeyVersion(1);
+        }
         kid.setDisabled(false);
-        kid.setKeyVersion(1);
         kid.setLocked(false);
 
         kid.addKeys(generateKeys(kid.getPrincipalName(), password));
@@ -155,8 +180,4 @@ public class AddPrincipalExecutor implements KadminCommandExecutor{
             throw new RuntimeException("Failed to create keys", e);
         }
     }
-
-
-
-
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/2782d05c/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/tool/KadminOption.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/tool/KadminOption.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/tool/KadminOption.java
index 1ab3ddf..34d0fec 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/tool/KadminOption.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/tool/KadminOption.java
@@ -28,6 +28,8 @@ public enum KadminOption implements KOption {
     DISABLED("-disabled", "disabled", KOptionType.BOOL),
     LOCKED("-locked", "locked", KOptionType.BOOL),
     FORCE("-force", "force", KOptionType.NOV),
+    KVNO("-kvno", "initial key version number", KOptionType.INT),
+    PW("-pw", "password", KOptionType.STR),
     ;
 
     private String name;
@@ -55,7 +57,7 @@ public enum KadminOption implements KOption {
     }
 
     public static KadminOption fromName(String name) {
-        if (name != null ) {
+        if (name != null) {
             for (KadminOption kopt : values()) {
                 if (kopt.getName().equals(name)) {
                     return (KadminOption) kopt;