From 7e014d165df1bf3dd13ffc4a5d8906a0b1561eba Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Fri, 17 Aug 2007 00:53:26 +0000
Subject: [PATCH] The following modifications have the following goals:
---
opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusCli.java | 513 +++-----------------------------------------------------
1 files changed, 33 insertions(+), 480 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusCli.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusCli.java
index 6800c6a..12b2cee 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusCli.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/StatusCli.java
@@ -27,52 +27,32 @@
package org.opends.guitools.statuspanel;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
-import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.net.ssl.KeyManager;
import javax.swing.table.TableModel;
-import org.opends.admin.ads.util.ApplicationKeyManager;
-import org.opends.admin.ads.util.ApplicationTrustManager;
import org.opends.guitools.statuspanel.ui.DatabasesTableModel;
import org.opends.guitools.statuspanel.ui.ListenersTableModel;
import org.opends.quicksetup.Installation;
import org.opends.quicksetup.QuickSetupLog;
import static org.opends.quicksetup.util.Utils.*;
+import org.opends.server.admin.client.cli.DsFrameworkCliReturnCode;
+import org.opends.server.admin.client.cli.SecureConnectionCliParser;
import org.opends.server.core.DirectoryServer;
-
import org.opends.messages.Message;
import org.opends.messages.MessageBuilder;
import static org.opends.messages.ToolMessages.*;
-import static org.opends.server.tools.ToolConstants.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
-import org.opends.server.util.PasswordReader;
-import org.opends.server.util.SelectableCertificateKeyManager;
-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;
-import org.opends.server.util.args.StringArgument;
/**
* The class used to provide some CLI interface to display status.
@@ -81,74 +61,18 @@
* in the command line.
*
*/
-class StatusCli
+class StatusCli extends SecureConnectionCliParser
{
- private static String LINE_SEPARATOR = System.getProperty("line.separator");
-
private String[] args;
private boolean displayMustAuthenticateLegend;
private boolean displayMustStartLegend;
/**
- * The 'trustAllArg' global argument.
- */
- private BooleanArgument trustAllArg = null;
-
- /**
- * The 'trustStore' global argument.
- */
- private StringArgument trustStorePathArg = null;
-
- /**
- * The 'trustStorePassword' global argument.
- */
- private StringArgument trustStorePasswordArg = null;
-
- /**
- * The 'trustStorePasswordFile' global argument.
- */
- private FileBasedArgument trustStorePasswordFileArg = null;
-
- /**
- * The 'keyStore' global argument.
- */
- private StringArgument keyStorePathArg = null;
-
- /**
- * The 'keyStorePassword' global argument.
- */
- private StringArgument keyStorePasswordArg = null;
-
- /**
- * The 'keyStorePasswordFile' global argument.
- */
- private FileBasedArgument keyStorePasswordFileArg = null;
-
- /**
- * The 'certNicknameArg' global argument.
- */
- private StringArgument certNicknameArg = null;
-
- /**
* The Logger.
*/
static private final Logger LOG = Logger.getLogger(StatusCli.class.getName());
-
- /**
- * Return code: Uninstall successful.
- */
- static int SUCCESSFUL = 0;
- /**
- * Return code: User provided invalid data.
- */
- static int USER_DATA_ERROR = 1;
- /**
- * Return code: Bug.
- */
- static int BUG = 2;
-
/**
* The main method which is called by the status command lines.
* @param args the arguments passed by the status command lines.
@@ -166,19 +90,9 @@
*/
StatusCli(String[] args)
{
- /* Ignore the first 4 arguments */
- if ((args != null) && (args.length >= 4))
- {
- this.args = new String[args.length - 4];
- for (int i=0; i<this.args.length; i++)
- {
- this.args[i] = args[i+4];
- }
- }
- else
- {
- this.args = args;
- }
+ super(org.opends.guitools.statuspanel.StatusCli.class.getName(),
+ INFO_STATUS_CLI_USAGE_DESCRIPTION.get(), false);
+ this.args = args;
DirectoryServer.bootstrapClient();
}
@@ -190,219 +104,46 @@
*/
int run()
{
- int returnValue = SUCCESSFUL;
-
- ArrayList<Message> errors = new ArrayList<Message>();
-
- String directoryManagerPwd = null;
- String directoryManagerPwdFile = null;
- String directoryManagerDn = null;
-
- ArgumentParser argParser =
- new ArgumentParser(StatusPanelLauncher.class.getName(),
- INFO_STATUS_CLI_USAGE_DESCRIPTION.get(), false);
- BooleanArgument showUsage;
- BooleanArgument useSSLArg;
- BooleanArgument startTLSArg;
- StringArgument bindDN;
- StringArgument bindPW;
- FileBasedArgument bindPWFile;
-
- String scriptName;
- if (isWindows()) {
- scriptName = Installation.WINDOWS_STATUSCLI_FILE_NAME;
- } else {
- scriptName = Installation.UNIX_STATUSCLI_FILE_NAME;
- }
- System.setProperty(ServerConstants.PROPERTY_SCRIPT_NAME, scriptName);
try
{
- useSSLArg = new BooleanArgument("useSSL", OPTION_SHORT_USE_SSL,
- OPTION_LONG_USE_SSL, INFO_DESCRIPTION_USE_SSL.get());
- argParser.addArgument(useSSLArg);
-
- startTLSArg = new BooleanArgument("startTLS", OPTION_SHORT_START_TLS,
- OPTION_LONG_START_TLS,
- INFO_DESCRIPTION_START_TLS.get());
- argParser.addArgument(startTLSArg);
-
- bindDN = new StringArgument("binddn", OPTION_SHORT_BINDDN,
- OPTION_LONG_BINDDN, false, false, true,
- OPTION_VALUE_BINDDN, "cn=Directory Manager", null,
- INFO_STOPDS_DESCRIPTION_BINDDN.get());
- argParser.addArgument(bindDN);
-
- bindPW = new StringArgument("bindpw", OPTION_SHORT_BINDPWD,
- OPTION_LONG_BINDPWD, false, false,
- true,
- OPTION_VALUE_BINDPWD, null, null,
- INFO_STOPDS_DESCRIPTION_BINDPW.get());
- argParser.addArgument(bindPW);
-
- bindPWFile = new FileBasedArgument("bindpwfile",
- OPTION_SHORT_BINDPWD_FILE,
- OPTION_LONG_BINDPWD_FILE,
- false, false,
- OPTION_VALUE_BINDPWD_FILE,
- null, null,
- INFO_STOPDS_DESCRIPTION_BINDPWFILE.get());
- argParser.addArgument(bindPWFile);
-
- trustAllArg = new BooleanArgument("trustAll", 'X', "trustAll",
- INFO_DESCRIPTION_TRUSTALL.get());
- argParser.addArgument(trustAllArg);
-
- trustStorePathArg = new StringArgument("trustStorePath",
- OPTION_SHORT_TRUSTSTOREPATH, OPTION_LONG_TRUSTSTOREPATH, false,
- false, true, OPTION_VALUE_TRUSTSTOREPATH, null, null,
- INFO_DESCRIPTION_TRUSTSTOREPATH.get());
- argParser.addArgument(trustStorePathArg);
-
- trustStorePasswordArg = new StringArgument("trustStorePassword", null,
- OPTION_LONG_TRUSTSTORE_PWD, false, false, true,
- OPTION_VALUE_TRUSTSTORE_PWD, null, null,
- INFO_DESCRIPTION_TRUSTSTOREPASSWORD.get());
- argParser.addArgument(trustStorePasswordArg);
-
- trustStorePasswordFileArg =
- new FileBasedArgument("truststorepasswordfile",
- OPTION_SHORT_TRUSTSTORE_PWD_FILE, OPTION_LONG_TRUSTSTORE_PWD_FILE,
- false, false, OPTION_VALUE_TRUSTSTORE_PWD_FILE, null, null,
- INFO_DESCRIPTION_TRUSTSTOREPASSWORD_FILE.get());
- argParser.addArgument(trustStorePasswordFileArg);
-
- keyStorePathArg = new StringArgument("keyStorePath",
- OPTION_SHORT_KEYSTOREPATH, OPTION_LONG_KEYSTOREPATH, false, false,
- true, OPTION_VALUE_KEYSTOREPATH, null, null,
- INFO_DESCRIPTION_KEYSTOREPATH.get());
- argParser.addArgument(keyStorePathArg);
-
- keyStorePasswordArg = new StringArgument("keyStorePassword", null,
- OPTION_LONG_KEYSTORE_PWD, false, false, true,
- OPTION_VALUE_KEYSTORE_PWD, null, null,
- INFO_DESCRIPTION_KEYSTOREPASSWORD.get());
- argParser.addArgument(keyStorePasswordArg);
-
- keyStorePasswordFileArg = new FileBasedArgument("keystorepasswordfile",
- OPTION_SHORT_KEYSTORE_PWD_FILE, OPTION_LONG_KEYSTORE_PWD_FILE, false,
- false, OPTION_VALUE_KEYSTORE_PWD_FILE, null, null,
- INFO_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
- argParser.addArgument(keyStorePasswordFileArg);
-
- certNicknameArg = new StringArgument("certnickname", 'N', "certNickname",
- false, false, true, "{nickname}", null, null,
- INFO_DESCRIPTION_CERT_NICKNAME.get());
- argParser.addArgument(certNicknameArg);
-
- showUsage = new BooleanArgument("showusage", OPTION_SHORT_HELP,
- OPTION_LONG_HELP,
- INFO_DESCRIPTION_USAGE.get());
- argParser.addArgument(showUsage);
- argParser.setUsageArgument(showUsage);
+ initializeGlobalOption(System.err);
+ removeGlobalArgument(portArg);
+ removeGlobalArgument(hostNameArg);
+ removeGlobalArgument(verboseArg);
}
catch (ArgumentException ae)
{
Message message = ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage());
System.err.println(wrap(message));
- return BUG;
+ return DsFrameworkCliReturnCode.ERROR_UNEXPECTED.getReturnCode();
}
+ // Validate user provided data
try
{
- argParser.parseArguments(args);
- directoryManagerDn = bindDN.getValue();
- directoryManagerPwd = bindPW.getValue();
- directoryManagerPwdFile = bindPWFile.getValue();
+ parseArguments(args);
}
catch (ArgumentException ae)
{
Message message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
-
System.err.println(wrap(message));
- System.err.println(argParser.getUsage());
- return USER_DATA_ERROR;
+ System.err.println(getUsage());
+
+ return DsFrameworkCliReturnCode.ERROR_PARSING_ARGS.getReturnCode();
}
// If we should just display usage or version information,
// then print it and exit.
- if (argParser.usageOrVersionDisplayed())
+ if (usageOrVersionDisplayed())
{
- return SUCCESSFUL;
+ return DsFrameworkCliReturnCode.SUCCESSFUL_NOP.getReturnCode();
}
+ int v = validateGlobalOption(System.err);
- if ((directoryManagerPwdFile != null) && (directoryManagerPwd != null))
+ if (v != DsFrameworkCliReturnCode.SUCCESSFUL_NOP.getReturnCode())
{
- errors.add(wrap(INFO_CLI_STATUS_PWD_AND_PWD_FILE_PROVIDED.get()));
- }
- else
- {
- if (directoryManagerPwd != null && directoryManagerPwd.equals("-"))
- {
- // read the password from stdin.
- try
- {
- System.out.print(INFO_CLI_STATUS_LDAPAUTH_PASSWORD_PROMPT.get(
- directoryManagerDn));
- char[] pwChars = PasswordReader.readPassword();
- directoryManagerPwd = new String(pwChars);
- } catch(Exception ex)
- {
- errors.add(Message.raw(ex.getMessage()));
- }
- }
- if (directoryManagerPwdFile != null)
- {
- directoryManagerPwd = readPwdFromFile(directoryManagerPwdFile);
- if (directoryManagerPwd == null)
- {
- errors.add(wrap(INFO_CLI_STATUS_ERROR_READING_PWD_FILE.get(
- directoryManagerPwdFile)));
- }
- }
- }
-
- // Couldn't have at the same time trustAll and
- // trustStore related arg
- if (trustAllArg.isPresent() && trustStorePathArg.isPresent())
- {
- errors.add(ERR_TOOL_CONFLICTING_ARGS.get(trustAllArg.getLongIdentifier(),
- trustStorePathArg.getLongIdentifier()));
- }
- if (trustAllArg.isPresent() && trustStorePasswordArg.isPresent())
- {
- errors.add(ERR_TOOL_CONFLICTING_ARGS.get(trustAllArg.getLongIdentifier(),
- trustStorePasswordArg.getLongIdentifier()));
- }
- if (trustAllArg.isPresent() && trustStorePasswordFileArg.isPresent())
- {
- errors.add(ERR_TOOL_CONFLICTING_ARGS.get(trustAllArg.getLongIdentifier(),
- trustStorePasswordFileArg.getLongIdentifier()));
- }
-
- // Couldn't have at the same time trustStorePasswordArg and
- // trustStorePasswordFileArg
- if (trustStorePasswordArg.isPresent()
- && trustStorePasswordFileArg.isPresent())
- {
- errors.add(ERR_TOOL_CONFLICTING_ARGS.get(trustStorePasswordArg
- .getLongIdentifier(), trustStorePasswordFileArg.getLongIdentifier()));
- }
-
- // Couldn't have at the same time startTLSArg and
- // useSSLArg
- if (startTLSArg.isPresent()
- && useSSLArg.isPresent())
- {
- errors.add(ERR_TOOL_CONFLICTING_ARGS.get(startTLSArg.getLongIdentifier(),
- useSSLArg.getLongIdentifier()));
- }
- if (errors.size() > 0)
- {
- System.err.println(getMessageFromCollection(errors,
- LINE_SEPARATOR+LINE_SEPARATOR).toString());
- System.err.println();
- System.err.println(argParser.getUsage());
- returnValue = USER_DATA_ERROR;
+ System.err.println(getUsage());
+ return v;
}
else
{
@@ -414,13 +155,13 @@
ConfigFromFile offLineConf = new ConfigFromFile();
offLineConf.readConfiguration();
- ServerStatusDescriptor desc = createServerStatusDescriptor(
- directoryManagerDn, directoryManagerPwd);
-
try
{
if (isServerRunning)
{
+ String directoryManagerDn = getBindDN();
+ String directoryManagerPwd = getBindPassword(directoryManagerDn,
+ System.out, System.err);
if (directoryManagerDn == null)
{
directoryManagerDn = "";
@@ -429,6 +170,8 @@
{
directoryManagerPwd = "";
}
+ ServerStatusDescriptor desc = createServerStatusDescriptor(
+ directoryManagerDn, directoryManagerPwd);
ConfigFromLDAP onLineConf = new ConfigFromLDAP();
ConnectionProtocolPolicy policy;
if (startTLSArg.isPresent())
@@ -446,15 +189,16 @@
onLineConf.setConnectionInfo(offLineConf, policy, directoryManagerDn,
directoryManagerPwd, getTrustManager());
onLineConf.readConfiguration();
- // TO COMPLETE: check the certificates
updateDescriptorWithOnLineInfo(desc, onLineConf);
+ writeStatus(desc);
}
else
{
+ ServerStatusDescriptor desc = createServerStatusDescriptor(null,
+ null);
updateDescriptorWithOffLineInfo(desc, offLineConf);
+ writeStatus(desc);
}
-
- writeStatus(desc);
}
catch (ConfigException ce)
{
@@ -462,39 +206,7 @@
}
}
- return returnValue;
- }
-
- /**
- * Returns the password stored in a file. Returns <CODE>null</CODE> if no
- * password is found.
- * @param path the path of the file containing the password.
- * @return the password stored in a file. Returns <CODE>null</CODE> if no
- * password is found.
- */
- private String readPwdFromFile(String path)
- {
- String pwd = null;
- BufferedReader reader = null;
- try
- {
- reader = new BufferedReader(new FileReader(path));
- pwd = reader.readLine();
- }
- catch (Exception e)
- {
- }
- finally
- {
- try
- {
- if (reader != null)
- {
- reader.close();
- }
- } catch (Exception e) {}
- }
- return pwd;
+ return DsFrameworkCliReturnCode.SUCCESSFUL_NOP.getReturnCode();
}
private ServerStatusDescriptor createServerStatusDescriptor(String dn,
@@ -1204,165 +916,6 @@
}
return centered;
}
-
- /**
- * Handle TrustStore.
- *
- * @return The trustStore manager to be used for the command.
- */
- public ApplicationTrustManager getTrustManager()
- {
- ApplicationTrustManager truststoreManager = null ;
- KeyStore truststore = null ;
- if (trustAllArg.isPresent())
- {
- // Running a null TrustManager will force createLdapsContext and
- // createStartTLSContext to use a bindTrustManager.
- return null ;
- }
- else
- if (trustStorePathArg.isPresent())
- {
- try
- {
- FileInputStream fos = new FileInputStream(trustStorePathArg.getValue());
- String trustStorePasswordStringValue = null;
- char[] trustStorePasswordValue = null;
- if (trustStorePasswordArg.isPresent())
- {
- trustStorePasswordStringValue = trustStorePasswordArg.getValue();
- }
- else if (trustStorePasswordFileArg.isPresent())
- {
- trustStorePasswordStringValue = trustStorePasswordFileArg.getValue();
- }
-
- if (trustStorePasswordStringValue != null)
- {
- trustStorePasswordStringValue = System
- .getProperty("javax.net.ssl.trustStorePassword");
- }
-
-
- if (trustStorePasswordStringValue != null)
- {
- trustStorePasswordValue = trustStorePasswordStringValue.toCharArray();
- }
-
- truststore = KeyStore.getInstance(KeyStore.getDefaultType());
- truststore.load(fos, trustStorePasswordValue);
- fos.close();
- }
- catch (KeyStoreException e)
- {
- // Nothing to do: if this occurs we will systematically refuse the
- // certificates. Maybe we should avoid this and be strict, but we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the truststore", e);
- }
- catch (NoSuchAlgorithmException e)
- {
- // Nothing to do: if this occurs we will systematically refuse the
- // certificates. Maybe we should avoid this and be strict, but we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the truststore", e);
- }
- catch (CertificateException e)
- {
- // Nothing to do: if this occurs we will systematically refuse the
- // certificates. Maybe we should avoid this and be strict, but we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the truststore", e);
- }
- catch (IOException e)
- {
- // Nothing to do: if this occurs we will systematically refuse the
- // certificates. Maybe we should avoid this and be strict, but we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the truststore", e);
- }
- }
- truststoreManager = new ApplicationTrustManager(truststore);
- return truststoreManager;
- }
-
- /**
- * Handle KeyStore.
- *
- * @return The keyStore manager to be used for the command.
- */
- public KeyManager getKeyManager()
- {
- KeyStore keyStore = null;
- String keyStorePasswordValue = null;
- if (keyStorePathArg.isPresent())
- {
- try
- {
- FileInputStream fos = new FileInputStream(keyStorePathArg.getValue());
- if (keyStorePasswordArg.isPresent())
- {
- keyStorePasswordValue = keyStorePasswordArg.getValue();
- }
- else if (keyStorePasswordFileArg.isPresent())
- {
- keyStorePasswordValue = keyStorePasswordFileArg.getValue();
- }
- keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
- keyStore.load(fos, keyStorePasswordValue.toCharArray());
- }
- catch (KeyStoreException e)
- {
- // Nothing to do: if this occurs we will systematically refuse
- // the
- // certificates. Maybe we should avoid this and be strict, but
- // we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the keystore", e);
- }
- catch (NoSuchAlgorithmException e)
- {
- // Nothing to do: if this occurs we will systematically refuse
- // the
- // certificates. Maybe we should avoid this and be strict, but
- // we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the keystore", e);
- }
- catch (CertificateException e)
- {
- // Nothing to do: if this occurs we will systematically refuse
- // the
- // certificates. Maybe we should avoid this and be strict, but
- // we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the keystore", e);
- }
- catch (IOException e)
- {
- // Nothing to do: if this occurs we will systematically refuse
- // the
- // certificates. Maybe we should avoid this and be strict, but
- // we are
- // in a best effor mode.
- LOG.log(Level.WARNING, "Error with the keystore", e);
- }
- ApplicationKeyManager akm = new ApplicationKeyManager(keyStore,
- keyStorePasswordValue.toCharArray());
- if (certNicknameArg.isPresent())
- {
- return new SelectableCertificateKeyManager(akm, certNicknameArg
- .getValue());
- }
- else
- {
- return akm;
- }
- }
- else
- {
- return null;
- }
- }
}
+
--
Gitblit v1.10.0