From 463f979289a506c1d12089e592362c85d65f4aa3 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 05 Jul 2007 12:12:13 +0000
Subject: [PATCH] Fix for issue 1856 (status cmd reject when no space between parameters and value).
---
opends/src/statuspanel/org/opends/statuspanel/StatusCli.java | 237 +++++++++++++++++++---------------------------------------
1 files changed, 78 insertions(+), 159 deletions(-)
diff --git a/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java b/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java
index 5359a52..9669f0b 100644
--- a/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java
+++ b/opends/src/statuspanel/org/opends/statuspanel/StatusCli.java
@@ -30,8 +30,6 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
@@ -53,8 +51,10 @@
import static org.opends.server.messages.ToolMessages.*;
import static org.opends.server.tools.ToolConstants.*;
+import org.opends.server.messages.MessageHandler;
import org.opends.server.util.PasswordReader;
import org.opends.server.util.ServerConstants;
+import org.opends.server.util.args.ArgumentException;
import org.opends.server.util.args.ArgumentParser;
import org.opends.server.util.args.BooleanArgument;
import org.opends.server.util.args.FileBasedArgument;
@@ -134,94 +134,83 @@
ArrayList<String> errors = new ArrayList<String>();
- boolean printUsage = false;
- boolean printVersion = false;
-
String directoryManagerPwd = null;
String directoryManagerPwdFile = null;
String directoryManagerDn = null;
- for (int i=0; i<args.length; i++)
+ ArgumentParser argParser =
+ new ArgumentParser(StatusPanelLauncher.class.getName(),
+ getI18n().getMsg("status-cli-usage-description"), false);
+ BooleanArgument showUsage;
+ StringArgument bindDN;
+ StringArgument bindPW;
+ FileBasedArgument bindPWFile;
+ String scriptName;
+ if (Utils.isWindows()) {
+ scriptName = Installation.WINDOWS_STATUSCLI_FILE_NAME;
+ } else {
+ scriptName = Installation.UNIX_STATUSCLI_FILE_NAME;
+ }
+ System.setProperty(ServerConstants.PROPERTY_SCRIPT_NAME, scriptName);
+ try
{
- if (args[i].equalsIgnoreCase("-H") ||
- args[i].equalsIgnoreCase("--help") ||
- args[i].equalsIgnoreCase("-?"))
- {
- printUsage = true;
- }
- else
- if (args[i].equalsIgnoreCase("-" + OPTION_SHORT_PRODUCT_VERSION) ||
- args[i].equalsIgnoreCase("--" + OPTION_LONG_PRODUCT_VERSION))
- {
- printVersion = true;
- }
- else if (args[i].equalsIgnoreCase("-D") ||
- args[i].equalsIgnoreCase("--bindDN"))
- {
- if (i+1 >= args.length)
- {
- errors.add(getMsg("cli-status-root-user-dn-not-provided", true));
- }
- else
- {
- if (args[i+1].indexOf("-") == 0)
- {
- errors.add(getMsg("cli-status-root-user-dn-not-provided", true));
- }
- else
- {
- directoryManagerDn = args[i+1];
- i++;
- }
- }
- }
- else if (args[i].equals("-" + OPTION_SHORT_BINDPWD) ||
- args[i].equalsIgnoreCase("--" + OPTION_LONG_BINDPWD))
- {
- if (i+1 >= args.length)
- {
- errors.add(getMsg("cli-status-root-user-pwd-not-provided", true));
- }
- else
- {
- if (args[i+1].indexOf("-") == 0 && args[i+1].length() > 1)
- {
- errors.add(getMsg("cli-status-root-user-pwd-not-provided", true));
- }
- else
- {
- directoryManagerPwd = args[i+1];
- i++;
- }
- }
- }
- else if (args[i].equals("-j") ||
- args[i].equalsIgnoreCase("--bindPasswordFile"))
- {
- if (i+1 >= args.length)
- {
- errors.add(getMsg("cli-status-root-user-pwd-file-not-provided",
- true));
- }
- else
- {
- if (args[i+1].indexOf("-") == 0)
- {
- errors.add(getMsg("cli-status-root-user-pwd-file-not-provided",
- true));
- }
- else
- {
- directoryManagerPwdFile = args[i+1];
- i++;
- }
- }
- }
- else
- {
- String[] arg = {args[i]};
- errors.add(getMsg("cli-status-unknown-argument", arg, true));
- }
+ bindDN = new StringArgument("binddn", OPTION_SHORT_BINDDN,
+ OPTION_LONG_BINDDN, false, false, true,
+ OPTION_VALUE_BINDDN, null, null,
+ MSGID_STOPDS_DESCRIPTION_BINDDN);
+ argParser.addArgument(bindDN);
+
+ bindPW = new StringArgument("bindpw", OPTION_SHORT_BINDPWD,
+ OPTION_LONG_BINDPWD, false, false,
+ true,
+ OPTION_VALUE_BINDPWD, null, null,
+ MSGID_STOPDS_DESCRIPTION_BINDPW);
+ argParser.addArgument(bindPW);
+
+ bindPWFile = new FileBasedArgument("bindpwfile",
+ OPTION_SHORT_BINDPWD_FILE,
+ OPTION_LONG_BINDPWD_FILE,
+ false, false,
+ OPTION_VALUE_BINDPWD_FILE,
+ null, null,
+ MSGID_STOPDS_DESCRIPTION_BINDPWFILE);
+ argParser.addArgument(bindPWFile);
+ showUsage = new BooleanArgument("showusage", OPTION_SHORT_HELP,
+ OPTION_LONG_HELP,
+ MSGID_DESCRIPTION_USAGE);
+ argParser.addArgument(showUsage);
+ argParser.setUsageArgument(showUsage);
+ }
+ catch (ArgumentException ae)
+ {
+ int msgID = MSGID_CANNOT_INITIALIZE_ARGS;
+ String message = MessageHandler.getMessage(msgID, ae.getMessage());
+ System.err.println(wrap(message));
+ return BUG;
+ }
+
+ try
+ {
+ argParser.parseArguments(args);
+ directoryManagerDn = bindDN.getValue();
+ directoryManagerPwd = bindPW.getValue();
+ directoryManagerPwdFile = bindPWFile.getValue();
+ }
+ catch (ArgumentException ae)
+ {
+ int msgID = MSGID_ERROR_PARSING_ARGS;
+ String message = MessageHandler.getMessage(msgID, ae.getMessage());
+
+ System.err.println(wrap(message));
+ System.err.println(argParser.getUsage());
+ return USER_DATA_ERROR;
+ }
+
+ // If we should just display usage or version information,
+ // then print it and exit.
+ if (argParser.usageOrVersionDisplayed())
+ {
+ return SUCCESSFUL;
}
if ((directoryManagerPwdFile != null) && (directoryManagerPwd != null))
@@ -230,13 +219,13 @@
}
else
{
- if(directoryManagerPwd != null && directoryManagerPwd.equals("-"))
+ if (directoryManagerPwd != null && directoryManagerPwd.equals("-"))
{
// read the password from stdin.
try
{
System.out.print(getMsg("cli-status-ldapauth-password-prompt",
- new String[] {directoryManagerDn}, false));
+ new String[] {directoryManagerDn}, false));
char[] pwChars = PasswordReader.readPassword();
directoryManagerPwd = new String(pwChars);
} catch(Exception ex)
@@ -255,27 +244,12 @@
}
}
- if (printUsage)
- {
- printUsage(System.out);
- }
- else if(printVersion)
- {
- try
- {
- DirectoryServer.printVersion(System.out);
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- }
- }
- else if (errors.size() > 0)
+ if (errors.size() > 0)
{
System.err.println(Utils.getStringFromCollection(errors,
LINE_SEPARATOR+LINE_SEPARATOR));
System.err.println();
- printUsage(System.err);
+ System.err.println(argParser.getUsage());
returnValue = USER_DATA_ERROR;
}
else
@@ -379,61 +353,6 @@
return ResourceProvider.getInstance();
}
- private void printUsage(PrintStream stream)
- {
- ArgumentParser argParser =
- new ArgumentParser(StatusPanelLauncher.class.getName(),
- getI18n().getMsg("status-cli-usage-description"), false);
- BooleanArgument showUsage;
- StringArgument bindDN;
- StringArgument bindPW;
- FileBasedArgument bindPWFile;
- String scriptName;
- if (Utils.isWindows()) {
- scriptName = Installation.WINDOWS_STATUSCLI_FILE_NAME;
- } else {
- scriptName = Installation.UNIX_STATUSCLI_FILE_NAME;
- }
- System.setProperty(ServerConstants.PROPERTY_SCRIPT_NAME, scriptName);
- try
- {
- bindDN = new StringArgument("binddn", OPTION_SHORT_BINDDN,
- OPTION_LONG_BINDDN, false, false, true,
- OPTION_VALUE_BINDDN, null, null,
- MSGID_STOPDS_DESCRIPTION_BINDDN);
- argParser.addArgument(bindDN);
-
- bindPW = new StringArgument("bindpw", OPTION_SHORT_BINDPWD,
- OPTION_LONG_BINDPWD, false, false,
- true,
- OPTION_VALUE_BINDPWD, null, null,
- MSGID_STOPDS_DESCRIPTION_BINDPW);
- argParser.addArgument(bindPW);
-
- bindPWFile = new FileBasedArgument("bindpwfile",
- OPTION_SHORT_BINDPWD_FILE,
- OPTION_LONG_BINDPWD_FILE,
- false, false,
- OPTION_VALUE_BINDPWD_FILE,
- null, null,
- MSGID_STOPDS_DESCRIPTION_BINDPWFILE);
- argParser.addArgument(bindPWFile);
- showUsage = new BooleanArgument("showusage", OPTION_SHORT_HELP,
- OPTION_LONG_HELP,
- MSGID_DESCRIPTION_USAGE);
- argParser.addArgument(showUsage);
- argParser.setUsageArgument(showUsage);
-
- String msg = argParser.getUsage();
- stream.println(msg);
- }
- catch (Throwable t)
- {
- System.out.println("ERROR: "+t);
- t.printStackTrace();
- }
- }
-
private ServerStatusDescriptor createServerStatusDescriptor(String dn,
String pwd)
{
--
Gitblit v1.10.0