You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by co...@apache.org on 2022/04/26 11:54:15 UTC

[directory-kerby] branch trunk updated: DIRKRB-758 - No way to specify conf dir for klist

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/directory-kerby.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 396533d2 DIRKRB-758 - No way to specify conf dir for klist
396533d2 is described below

commit 396533d2c24ff3d74b08b845b92a1ceca117e24d
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Tue Apr 26 12:53:59 2022 +0100

    DIRKRB-758 - No way to specify conf dir for klist
---
 .../org/apache/kerby/kerberos/tool/klist/KlistOption.java   |  4 +++-
 .../org/apache/kerby/kerberos/tool/klist/KlistTool.java     | 13 +++++++++----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistOption.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistOption.java
index e4845636..53449a5d 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistOption.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistOption.java
@@ -22,6 +22,7 @@ package org.apache.kerby.kerberos.tool.klist;
 import org.apache.kerby.KOption;
 import org.apache.kerby.KOptionInfo;
 import org.apache.kerby.KOptionType;
+import org.apache.kerby.kerberos.kerb.client.KrbOptionGroup;
 
 public enum KlistOption implements KOption {
     NONE(null),
@@ -39,7 +40,8 @@ public enum KlistOption implements KOption {
     DISPL_ADDRESS_LIST(new KOptionInfo("-a", "displays the address list")),
     NO_REVERSE_RESOLVE(new KOptionInfo("-n", "do not reverse resolve")),
     SHOW_KTAB_ENTRY_TS(new KOptionInfo("-t", "shows keytab entry timestamps")),
-    SHOW_KTAB_ENTRY_KEY(new KOptionInfo("-K", "show keytab entry keys"));
+    SHOW_KTAB_ENTRY_KEY(new KOptionInfo("-K", "show keytab entry keys")),
+    CONF_DIR(new KOptionInfo("-conf", "conf dir", KrbOptionGroup.KRB, KOptionType.DIR));
 
     private final KOptionInfo optionInfo;
 
diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
index 560bfacc..fbc8c4b8 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
@@ -54,7 +54,7 @@ public class KlistTool {
 
     private static final String USAGE = (OSUtil.isWindows()
         ? "Usage: bin\\klist.cmd" : "Usage: sh bin/klist.sh")
-            + " [-e] [-V] [[-c] [-l] [-A] [-d] [-f] [-s] "
+            + " <-conf conf_dir> [-e] [-V] [[-c] [-l] [-A] [-d] [-f] [-s] "
             + "[-a [-n]]] [-k [-t] [-K]] [name]\n"
             + "\t-c specifies credentials cache\n"
             + "\t-k specifies keytab\n"
@@ -69,7 +69,7 @@ public class KlistTool {
             + "\t\t-f shows credentials flags\n"
             + "\t\t-s sets exit status based on valid tgt existence\n"
             + "\t\t-a displays the address list\n"
-            + "\t\t\t-n do not reverse-resolve\n"
+            + "\t\t-n do not reverse-resolve\n"
             + "\toptions for keytabs:\n"
             + "\t\t-t shows keytab entry timestamps\n"
             + "\t\t-K shows keytab entry keys\n";
@@ -89,7 +89,7 @@ public class KlistTool {
         String fileName;
 
         if (!klOptions.contains(KlistOption.CREDENTIALS_CACHE)) {
-            fileName = getCcacheName();
+            fileName = getCcacheName(klOptions);
         } else {
             fileName = klOptions.getStringOption(KlistOption.CREDENTIALS_CACHE);
         }
@@ -136,11 +136,16 @@ public class KlistTool {
     /**
      * Get credential cache file name if not specified.
      */
-    private static String getCcacheName() {
+    private static String getCcacheName(KOptions klOptions) {
         String ccacheName;
         String ccacheNameEnv = System.getenv("KRB5CCNAME");
         String ccacheNameConf = null;
+
         File confDir = new File("/etc");
+        if (klOptions.contains(KlistOption.CONF_DIR)) {
+            confDir = klOptions.getDirOption(KlistOption.CONF_DIR);
+        }
+
         try {
             KrbClient krbClient = new KrbClient(confDir);
             ccacheNameConf = krbClient.getSetting().getKrbConfig().getString("default_ccache_name");