You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pl...@apache.org on 2018/07/06 02:44:49 UTC

directory-kerby git commit: Add some prompts in admin tool.

Repository: directory-kerby
Updated Branches:
  refs/heads/trunk 6fe9fa7a2 -> 6b3a0de39


Add some prompts in admin tool.


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

Branch: refs/heads/trunk
Commit: 6b3a0de39261149b2423dc826be637806f6c08dd
Parents: 6fe9fa7
Author: plusplusjiajia <ji...@intel.com>
Authored: Fri Jul 6 10:44:39 2018 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Fri Jul 6 10:44:39 2018 +0800

----------------------------------------------------------------------
 .../kerby/has/client/HasAuthAdminClient.java    |  3 +-
 .../org/apache/kerby/has/client/HasClient.java  |  6 +--
 .../apache/kerby/has/client/HasLoginModule.java |  2 +-
 .../client/mysql/MySQLHasClientPlugin.java      |  9 +++-
 .../server/mysql/MySQLHasServerPlugin.java      | 28 ++++++++++--
 .../kerby/has/server/web/rest/AsRequestApi.java |  4 +-
 .../kerby/has/server/web/rest/HadminApi.java    | 28 ++++++++----
 .../kerby/has/server/web/rest/KadminApi.java    |  4 +-
 .../local/cmd/DisableConfigureCommand.java      |  6 +--
 .../admin/local/cmd/EnableConfigureCommand.java |  2 +-
 .../admin/local/cmd/ExportKeytabsCommand.java   | 28 +++++++++---
 .../tool/admin/remote/AdminRemoteTool.java      |  8 ++--
 .../admin/remote/cmd/AddPrincipalRemoteCmd.java |  2 +
 .../remote/cmd/ChangePasswordRemoteCmd.java     |  1 +
 .../remote/cmd/DeletePrincipalRemoteCmd.java    |  1 +
 .../admin/remote/cmd/DisableConfRemoteCmd.java  | 43 -------------------
 .../remote/cmd/DisableConfigureRemoteCmd.java   | 44 +++++++++++++++++++
 .../admin/remote/cmd/EnableConfRemoteCmd.java   | 44 -------------------
 .../remote/cmd/EnableConfigureRemoteCmd.java    | 45 ++++++++++++++++++++
 .../remote/cmd/ExportKeytabsRemoteCmd.java      |  1 -
 .../remote/cmd/RenamePrincipalRemoteCmd.java    |  2 +
 21 files changed, 185 insertions(+), 126 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasAuthAdminClient.java
----------------------------------------------------------------------
diff --git a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasAuthAdminClient.java b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasAuthAdminClient.java
index 5ac8622..04da650 100644
--- a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasAuthAdminClient.java
+++ b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasAuthAdminClient.java
@@ -481,8 +481,7 @@ public class HasAuthAdminClient implements Kadmin {
             httpConn.connect();
 
             if (httpConn.getResponseCode() != 200) {
-                System.err.println("Error : connection denied.");
-                return null;
+                throw new KrbException(HasClientUtil.getResponse(httpConn));
             }
             FileOutputStream fos = new FileOutputStream(new File(keytabName));
             InputStream in = httpConn.getInputStream();

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasClient.java
----------------------------------------------------------------------
diff --git a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasClient.java b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasClient.java
index 5338fb3..0fbc898 100755
--- a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasClient.java
+++ b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasClient.java
@@ -205,14 +205,12 @@ public class HasClient {
 
     private HasClientPlugin getClientTokenPlugin(HasConfig config) throws HasException {
         String pluginName = config.getPluginName();
-        LOG.debug("The plugin name getting from config is: " + pluginName);
         HasClientPlugin clientPlugin;
         if (pluginName != null) {
             clientPlugin = HasClientPluginRegistry.createPlugin(pluginName);
         } else {
             throw new HasException("Please set the plugin name in has client conf");
         }
-        LOG.debug("The plugin class is: " + clientPlugin);
 
         return clientPlugin;
     }
@@ -355,7 +353,7 @@ public class HasClient {
         try {
             boolean success = json.getBoolean("success");
             if (!success) {
-                throw new HasException("Failed: " + json.getString("krbMessage"));
+                throw new HasException(json.getString("krbMessage"));
             }
         } catch (JSONException e) {
             LOG.debug("Failed to get message." + e);
@@ -402,7 +400,7 @@ public class HasClient {
             return processResponse((KdcRep) kdcRep, passPhrase);
         } else if (messageType == KrbMessageType.KRB_ERROR) {
             KrbError error = (KrbError) kdcRep;
-            LOG.error("KDC server response with message: "
+            LOG.error("HAS server response with message: "
                 + error.getErrorCode().getMessage());
 
             throw new HasException(error.getEtext());

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
----------------------------------------------------------------------
diff --git a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
index 5b037ef..fc97665 100644
--- a/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
+++ b/has-project/has-client/src/main/java/org/apache/kerby/has/client/HasLoginModule.java
@@ -224,7 +224,7 @@ public class HasLoginModule implements LoginModule {
                 }
 
                 HasClient hasClient = new HasClient(hadoopSecurityHas);
-                TgtTicket tgtTicket = null;
+                TgtTicket tgtTicket;
                 try {
                     tgtTicket = hasClient.requestTgt();
                 } catch (HasException e) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/client/mysql/MySQLHasClientPlugin.java
----------------------------------------------------------------------
diff --git a/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/client/mysql/MySQLHasClientPlugin.java b/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/client/mysql/MySQLHasClientPlugin.java
index 5ff56fe..3bbe6f8 100644
--- a/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/client/mysql/MySQLHasClientPlugin.java
+++ b/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/client/mysql/MySQLHasClientPlugin.java
@@ -18,6 +18,7 @@
 package org.apache.kerby.has.plugins.client.mysql;
 
 import org.apache.kerby.has.client.AbstractHasClientPlugin;
+import org.apache.kerby.has.client.HasLoginException;
 import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,11 +37,17 @@ public class MySQLHasClientPlugin extends AbstractHasClientPlugin {
     }
 
     @Override
-    protected void doLogin(AuthToken authToken) {
+    protected void doLogin(AuthToken authToken) throws HasLoginException {
 
         //Get the user info from env
         String userName = System.getenv("userName");
+        if (userName == null || userName.isEmpty()) {
+            throw new HasLoginException("Please set the userName.");
+        }
         String password = System.getenv("password");
+        if (password == null || password.isEmpty()) {
+            throw new HasLoginException("Please set the password.");
+        }
         LOG.debug("Get the user info successfully.");
 
         authToken.setIssuer("has");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/server/mysql/MySQLHasServerPlugin.java
----------------------------------------------------------------------
diff --git a/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/server/mysql/MySQLHasServerPlugin.java b/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/server/mysql/MySQLHasServerPlugin.java
index bd9bd85..234763c 100644
--- a/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/server/mysql/MySQLHasServerPlugin.java
+++ b/has-project/has-plugins/src/main/java/org/apache/kerby/has/plugins/server/mysql/MySQLHasServerPlugin.java
@@ -61,9 +61,18 @@ public class MySQLHasServerPlugin extends AbstractHasServerPlugin {
         String secret = (String) userToken.getAttributes().get("secret");
 
         String mysqlUrl = System.getenv("mysqlUrl");
+        if (mysqlUrl == null || mysqlUrl.isEmpty()) {
+            throw new HasAuthenException("Please set the mysqlUrl.");
+        }
         mysqlUrl = mysqlUrl.replace("jdbc:mysql:", "jdbc:mysql:thin:");
         String mysqlUser = System.getenv("mysqlUser");
+        if (mysqlUser == null || mysqlUser.isEmpty()) {
+            throw new HasAuthenException("Please set the mysqlUser.");
+        }
         String mysqlPasswd = System.getenv("mysqlPasswd");
+        if (mysqlPasswd == null || mysqlPasswd.isEmpty()) {
+            throw new HasAuthenException("Please set the mysqlPasswd.");
+        }
         Connection connection = startConnection(mysqlUrl, mysqlUser, mysqlPasswd);
 
         ResultSet res = null;
@@ -77,8 +86,20 @@ public class MySQLHasServerPlugin extends AbstractHasServerPlugin {
             if (res.next() && res.getInt(1) > 0) {
                 LOG.debug("UserName: {}", user);
             } else {
-                LOG.error("Authentication failed.");
-                throw new HasAuthenException("Authentication failed.");
+                String sql = "SELECT COUNT(*) FROM `has_user` WHERE user_name = ?";
+                preStm = connection.prepareStatement(sql);
+                preStm.setString(1, user);
+                res = preStm.executeQuery();
+                if (res.next() && res.getInt(1) > 0) {
+                    throw new HasAuthenException("Authentication failed. "
+                            + "Incorrect password.");
+                } else if (!res.next()) {
+                    throw new HasAuthenException("Authentication failed. "
+                            + "Incorrect userName.");
+                } else {
+                    throw new HasAuthenException("Authentication failed. "
+                            + "Please check your userName and password.");
+                }
             }
         } catch (SQLException e) {
             LOG.error("Failed.");
@@ -114,7 +135,8 @@ public class MySQLHasServerPlugin extends AbstractHasServerPlugin {
         } catch (ClassNotFoundException e) {
             throw new HasAuthenException("JDBC Driver Class not found. ", e);
         } catch (SQLException e) {
-            throw new HasAuthenException("Failed to connecting to MySQL. ", e);
+            throw new HasAuthenException("Failed to connecting to MySQL."
+                    + "Please check MySQL URL, username and password. ", e);
         }
 
         return connection;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/AsRequestApi.java
----------------------------------------------------------------------
diff --git a/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/AsRequestApi.java b/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/AsRequestApi.java
index 45e6ea6..c40ee38 100644
--- a/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/AsRequestApi.java
+++ b/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/AsRequestApi.java
@@ -103,14 +103,14 @@ public class AsRequestApi {
                 try {
                     tokenPlugin = HasServerPluginRegistry.createPlugin(type);
                 } catch (HasException e) {
-                    errMessage = "Fail to get the plugin: " + type + ". " + e.getMessage();
+                    errMessage = "Failed to get the plugin: " + type + ". " + e.getMessage();
                     WebServer.LOG.error(errMessage);
                 }
                 AuthToken verifiedAuthToken;
                 try {
                     verifiedAuthToken = tokenPlugin.authenticate(authToken);
                 } catch (HasAuthenException e) {
-                    errMessage = "Failed to verify auth token: " + e.getMessage();
+                    errMessage = "Failed to verify auth token. " + e.getMessage();
                     WebServer.LOG.error(errMessage);
                     verifiedAuthToken = null;
                 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/HadminApi.java
----------------------------------------------------------------------
diff --git a/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/HadminApi.java b/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/HadminApi.java
index d91f49d..a25be2f 100644
--- a/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/HadminApi.java
+++ b/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/HadminApi.java
@@ -155,11 +155,17 @@ public class HadminApi {
                 if (role.getValue() != null) {
                     try {
                         File file = hasAdmin.getKeytabByHostAndRole(host.getValue(), role.getValue());
+                        if (file.length() == 0) {
+                            msg = "Failed to get the keytab from backend, cannot find matching keytab, "
+                                    + "please check hostname and role.";
+                            WebServer.LOG.error(msg);
+                            return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
+                        }
                         WebServer.LOG.info("Create keytab file for the " + role.getValue()
-                            + " for " + host.getValue());
+                                + " for " + host.getValue());
                         return Response.ok(file).header("Content-Disposition",
-                            "attachment; filename=" + role.getValue() + "-"
-                                + host.getValue() + ".keytab").build();
+                                "attachment; filename=" + role.getValue() + "-"
+                                        + host.getValue() + ".keytab").build();
                     } catch (HasException e) {
                         msg = "Failed to export keytab File because : " + e.getMessage();
                         WebServer.LOG.error(msg);
@@ -170,9 +176,12 @@ public class HadminApi {
                     List<File> keytabs = new ArrayList<>();
                     for (HostRoleType r : HostRoleType.values()) {
                         try {
-                            keytabs.add(hasAdmin.getKeytabByHostAndRole(host.getValue(), r.getName()));
-                            WebServer.LOG.info("Create keytab file for the " + r.getName()
-                                + " for " + host.getValue());
+                            File keytab = hasAdmin.getKeytabByHostAndRole(host.getValue(), r.getName());
+                            if (keytab.length() > 0) {
+                                keytabs.add(hasAdmin.getKeytabByHostAndRole(host.getValue(), r.getName()));
+                                WebServer.LOG.info("Create keytab file for the " + r.getName()
+                                        + " for " + host.getValue());
+                            }
                         } catch (HasException e) {
                             msg = "Failed to export keytab File because : " + e.getMessage();
                             WebServer.LOG.error(msg);
@@ -180,9 +189,10 @@ public class HadminApi {
                         }
                     }
                     if (keytabs.size() < 1) {
-                        msg = "Failed to get the keytab from backend.";
+                        msg = "Failed to get the keytab from backend, cannot find matching keytab, "
+                                + "please check hostname.";
                         WebServer.LOG.error(msg);
-                        return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
+                        return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
                     }
                     File path = new File(hasServer.getWorkDir(), "tmp/zip/"
                         + System.currentTimeMillis());
@@ -201,7 +211,7 @@ public class HadminApi {
                         return Response.ok(keytabZip).header("Content-Disposition",
                             "attachment; filename=keytab.zip").build();
                     } catch (Exception e) {
-                        msg = "Failed to create the keytab.zip,because : " + e.getMessage();
+                        msg = "Failed to create the keytab.zip, because : " + e.getMessage();
                         WebServer.LOG.error(msg);
                         return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
                     }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/KadminApi.java
----------------------------------------------------------------------
diff --git a/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/KadminApi.java b/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/KadminApi.java
index dd9ab8b..6a967ed 100644
--- a/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/KadminApi.java
+++ b/has-project/has-server/src/main/java/org/apache/kerby/has/server/web/rest/KadminApi.java
@@ -266,10 +266,10 @@ public class KadminApi {
     }
 
     /**
-     * Add principal by name and password.
+     * change password.
      *
      * @param principal principal name.
-     * @param password  principal password
+     * @param newPassword  principal new password
      * @return Response
      */
     @POST

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/DisableConfigureCommand.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/DisableConfigureCommand.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/DisableConfigureCommand.java
index a499076..7d26fce 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/DisableConfigureCommand.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/DisableConfigureCommand.java
@@ -24,9 +24,9 @@ import org.apache.kerby.has.server.admin.LocalHadmin;
 
 public class DisableConfigureCommand extends HadminCommand {
 
-    public static final String USAGE = "Usage: enable_configure\n"
+    public static final String USAGE = "Usage: disable_configure\n"
             + "\tExample:\n"
-            + "\t\tenable\n";
+            + "\t\tdisable\n";
 
     public DisableConfigureCommand(LocalHadmin hadmin) {
         super(hadmin);
@@ -35,6 +35,6 @@ public class DisableConfigureCommand extends HadminCommand {
     @Override
     public void execute(String[] items) throws HasException {
         getHadmin().setEnableOfConf("false");
-        System.out.println("Set conf disable.");
+        System.out.println("Disable configure HAS.");
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/EnableConfigureCommand.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/EnableConfigureCommand.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/EnableConfigureCommand.java
index 404e3f5..21392ad 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/EnableConfigureCommand.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/EnableConfigureCommand.java
@@ -35,6 +35,6 @@ public class EnableConfigureCommand extends HadminCommand {
     @Override
     public void execute(String[] items) throws HasException {
         getHadmin().setEnableOfConf("true");
-        System.out.println("Set conf enable.");
+        System.out.println("Enable configure HAS.");
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/ExportKeytabsCommand.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/ExportKeytabsCommand.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/ExportKeytabsCommand.java
index 1892814..d9ed5e2 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/ExportKeytabsCommand.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/local/cmd/ExportKeytabsCommand.java
@@ -23,6 +23,8 @@ import org.apache.kerby.has.common.HasException;
 import org.apache.kerby.has.server.admin.LocalHadmin;
 import org.apache.kerby.has.server.web.HostRoleType;
 
+import java.io.File;
+
 public class ExportKeytabsCommand extends HadminCommand {
     private static final String USAGE = "\nUsage: export_keytabs <host> [role]\n"
             + "\tExample:\n"
@@ -39,16 +41,30 @@ public class ExportKeytabsCommand extends HadminCommand {
             return;
         }
         String host = items[1];
+        boolean find = false;
         if (items.length >= 3) {
-            exportKeytab(host, items[2]);
-            return;
+            if (exportKeytab(host, items[2])) {
+                find = true;
+            }
+        } else {
+            for (HostRoleType r : HostRoleType.values()) {
+                if (exportKeytab(host, r.getName())) {
+                    find = true;
+                }
+            }
         }
-        for (HostRoleType r : HostRoleType.values()) {
-            exportKeytab(host, r.getName());
+        if (!find) {
+            System.out.println("Failed to get the keytab from backend, cannot find matching keytab.");
         }
     }
 
-    public void exportKeytab(String host, String role) throws HasException {
-        getHadmin().getKeytabByHostAndRole(host, role);
+    public boolean exportKeytab(String host, String role) throws HasException {
+        File keytab = getHadmin().getKeytabByHostAndRole(host, role);
+        if (keytab.length() > 0) {
+            System.out.println("Keytabs exported in " + keytab.getPath());
+            return true;
+        } else {
+            return false;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/AdminRemoteTool.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/AdminRemoteTool.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/AdminRemoteTool.java
index 2022f8c..af14dbe 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/AdminRemoteTool.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/AdminRemoteTool.java
@@ -29,8 +29,8 @@ import org.apache.kerby.kerberos.tool.admin.remote.cmd.AddPrincipalsRemoteCmd;
 import org.apache.kerby.kerberos.tool.admin.remote.cmd.AdminRemoteCmd;
 import org.apache.kerby.kerberos.tool.admin.remote.cmd.ChangePasswordRemoteCmd;
 import org.apache.kerby.kerberos.tool.admin.remote.cmd.DeletePrincipalRemoteCmd;
-import org.apache.kerby.kerberos.tool.admin.remote.cmd.DisableConfRemoteCmd;
-import org.apache.kerby.kerberos.tool.admin.remote.cmd.EnableConfRemoteCmd;
+import org.apache.kerby.kerberos.tool.admin.remote.cmd.DisableConfigureRemoteCmd;
+import org.apache.kerby.kerberos.tool.admin.remote.cmd.EnableConfigureRemoteCmd;
 import org.apache.kerby.kerberos.tool.admin.remote.cmd.ExportKeytabsRemoteCmd;
 import org.apache.kerby.kerberos.tool.admin.remote.cmd.GetHostRolesRemoteCmd;
 import org.apache.kerby.kerberos.tool.admin.remote.cmd.ListPrincipalsRemoteCmd;
@@ -174,10 +174,10 @@ public class AdminRemoteTool {
             executor = new ExportKeytabsRemoteCmd(hasAuthAdminClient);
         } else if (cmd.equals("enable_configure")
             || cmd.equals("enable")) {
-            executor = new EnableConfRemoteCmd(hasAuthAdminClient);
+            executor = new EnableConfigureRemoteCmd(hasAuthAdminClient);
         } else if (cmd.equals("disable_configure")
             || cmd.equals("disable")) {
-            executor = new DisableConfRemoteCmd(hasAuthAdminClient);
+            executor = new DisableConfigureRemoteCmd(hasAuthAdminClient);
         } else {
             System.out.println(LEGAL_COMMANDS);
             return;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/AddPrincipalRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/AddPrincipalRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/AddPrincipalRemoteCmd.java
index dce0ed7..871a5c5 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/AddPrincipalRemoteCmd.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/AddPrincipalRemoteCmd.java
@@ -54,9 +54,11 @@ public class AddPrincipalRemoteCmd extends AdminRemoteCmd {
             client.addPrincipal(clientPrincipal);
         } else if (items[1].startsWith("-randkey")) {
             client.addPrincipal(clientPrincipal);
+            System.out.println("Principal \"" + clientPrincipal + "\" created.");
         } else if (items[1].startsWith("-pw")) {
             String password = items[2];
             client.addPrincipal(clientPrincipal, password);
+            System.out.println("Principal \"" + clientPrincipal + "\" created.");
         } else {
             System.err.println("add_principal cmd format error.");
             System.err.println(USAGE);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ChangePasswordRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ChangePasswordRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ChangePasswordRemoteCmd.java
index 8b9311c..ebf7dea 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ChangePasswordRemoteCmd.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ChangePasswordRemoteCmd.java
@@ -46,6 +46,7 @@ public class ChangePasswordRemoteCmd extends AdminRemoteCmd {
         if (items[1].startsWith("-pw")) {
             String newPassword = items[2];
             client.changePassword(clientPrincipal, newPassword);
+            System.out.println("Password updated successfully.");
         } else {
             System.err.println("change_password command error.");
             System.err.println(USAGE);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DeletePrincipalRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DeletePrincipalRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DeletePrincipalRemoteCmd.java
index dbd3cd2..0c4dc5f 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DeletePrincipalRemoteCmd.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DeletePrincipalRemoteCmd.java
@@ -62,6 +62,7 @@ public class DeletePrincipalRemoteCmd extends AdminRemoteCmd {
         }
         if (reply.equals("yes") || reply.equals("YES") || reply.equals("y") || reply.equals("Y")) {
             client.deletePrincipal(principal);
+            System.out.println("Principal \"" + principal + "\" deleted.");
         } else if (reply.equals("no") || reply.equals("NO") || reply.equals("n") || reply.equals("N")) {
             System.out.println("Principal \"" + principal + "\"  not deleted.");
         } else {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfRemoteCmd.java
deleted file mode 100644
index 07b5055..0000000
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfRemoteCmd.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- *  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.admin.remote.cmd;
-
-import org.apache.kerby.has.client.HasAuthAdminClient;
-import org.apache.kerby.kerberos.kerb.KrbException;
-
-/**
- * Remote add principal cmd
- */
-public class DisableConfRemoteCmd extends AdminRemoteCmd {
-
-    public static final String USAGE = "Usage: disable_configure\n"
-            + "\tExample:\n"
-            + "\t\tdisable\n";
-
-    public DisableConfRemoteCmd(HasAuthAdminClient authHadmin) {
-        super(authHadmin);
-    }
-
-    @Override
-    public void execute(String[] items) throws KrbException {
-        HasAuthAdminClient client = getAuthAdminClient();
-        client.setEnableOfConf("false");
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfigureRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfigureRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfigureRemoteCmd.java
new file mode 100644
index 0000000..4020192
--- /dev/null
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/DisableConfigureRemoteCmd.java
@@ -0,0 +1,44 @@
+/**
+ *  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.admin.remote.cmd;
+
+import org.apache.kerby.has.client.HasAuthAdminClient;
+import org.apache.kerby.kerberos.kerb.KrbException;
+
+/**
+ * Remote add principal cmd
+ */
+public class DisableConfigureRemoteCmd extends AdminRemoteCmd {
+
+    public static final String USAGE = "Usage: disable_configure\n"
+            + "\tExample:\n"
+            + "\t\tdisable\n";
+
+    public DisableConfigureRemoteCmd(HasAuthAdminClient authHadmin) {
+        super(authHadmin);
+    }
+
+    @Override
+    public void execute(String[] items) throws KrbException {
+        HasAuthAdminClient client = getAuthAdminClient();
+        client.setEnableOfConf("false");
+        System.out.println("Disable configure HAS.");
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfRemoteCmd.java
deleted file mode 100644
index 4bf0080..0000000
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfRemoteCmd.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- *  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.admin.remote.cmd;
-
-import org.apache.kerby.has.client.HasAuthAdminClient;
-import org.apache.kerby.kerberos.kerb.KrbException;
-
-/**
- * Remote add principal cmd
- */
-public class EnableConfRemoteCmd extends AdminRemoteCmd {
-
-    public static final String USAGE = "Usage: enable_configure\n"
-            + "\tExample:\n"
-            + "\t\tenable\n";
-
-    public EnableConfRemoteCmd(HasAuthAdminClient authHadmin) {
-        super(authHadmin);
-    }
-
-    @Override
-    public void execute(String[] items) throws KrbException {
-
-        HasAuthAdminClient client = getAuthAdminClient();
-        client.setEnableOfConf("true");
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfigureRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfigureRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfigureRemoteCmd.java
new file mode 100644
index 0000000..8577d82
--- /dev/null
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/EnableConfigureRemoteCmd.java
@@ -0,0 +1,45 @@
+/**
+ *  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.admin.remote.cmd;
+
+import org.apache.kerby.has.client.HasAuthAdminClient;
+import org.apache.kerby.kerberos.kerb.KrbException;
+
+/**
+ * Remote add principal cmd
+ */
+public class EnableConfigureRemoteCmd extends AdminRemoteCmd {
+
+    public static final String USAGE = "Usage: enable_configure\n"
+            + "\tExample:\n"
+            + "\t\tenable\n";
+
+    public EnableConfigureRemoteCmd(HasAuthAdminClient authHadmin) {
+        super(authHadmin);
+    }
+
+    @Override
+    public void execute(String[] items) throws KrbException {
+
+        HasAuthAdminClient client = getAuthAdminClient();
+        client.setEnableOfConf("true");
+        System.out.println("Disable configure HAS.");
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ExportKeytabsRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ExportKeytabsRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ExportKeytabsRemoteCmd.java
index c16c034..4903d32 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ExportKeytabsRemoteCmd.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/ExportKeytabsRemoteCmd.java
@@ -34,7 +34,6 @@ public class ExportKeytabsRemoteCmd extends AdminRemoteCmd {
     @Override
     public void execute(String[] items) throws KrbException {
         //TODO add save path option
-        //String param = items[0];
         if (items.length < 2) {
             System.err.println(USAGE);
             return;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/6b3a0de3/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/RenamePrincipalRemoteCmd.java
----------------------------------------------------------------------
diff --git a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/RenamePrincipalRemoteCmd.java b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/RenamePrincipalRemoteCmd.java
index 5684df2..af50413 100644
--- a/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/RenamePrincipalRemoteCmd.java
+++ b/kerby-tool/has-tool/src/main/java/org/apache/kerby/kerberos/tool/admin/remote/cmd/RenamePrincipalRemoteCmd.java
@@ -64,6 +64,8 @@ public class RenamePrincipalRemoteCmd extends AdminRemoteCmd {
         }
         if (reply.equals("yes") || reply.equals("YES") || reply.equals("y") || reply.equals("Y")) {
             client.renamePrincipal(oldPrincipalName, newPrincipalName);
+            System.out.println("Principal \"" + oldPrincipalName + "\" renamed to \""
+                    + newPrincipalName + "\".");
         } else if (reply.equals("no") || reply.equals("NO") || reply.equals("n") || reply.equals("N")) {
             System.out.println("Principal \"" + oldPrincipalName + "\"  not renamed.");
         } else {