From 72c939b50428a2aa1f924a04ecdedee93e1383f4 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Thu, 13 Sep 2007 21:14:20 +0000
Subject: [PATCH] Introduces a utility 'manage-tasks' for monitoring and some management of tasks called 'manage-tasks'. It can be used in either one-time or menu-driven execution mode to print a summary of task information, print verbose information about a particular task, or cancel a running or pending task.
---
opends/src/server/org/opends/server/util/args/LDAPConnectionArgumentParser.java | 346 +++++++++++++++++++++++----------------------------------
1 files changed, 138 insertions(+), 208 deletions(-)
diff --git a/opends/src/server/org/opends/server/util/args/LDAPConnectionArgumentParser.java b/opends/src/server/org/opends/server/util/args/LDAPConnectionArgumentParser.java
index 4444905..5482cc3 100644
--- a/opends/src/server/org/opends/server/util/args/LDAPConnectionArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/LDAPConnectionArgumentParser.java
@@ -34,11 +34,13 @@
import org.opends.server.tools.SSLConnectionFactory;
import org.opends.server.tools.SSLConnectionException;
import org.opends.server.tools.LDAPConnectionException;
-import static org.opends.server.tools.ToolConstants.*;
import static org.opends.server.util.ServerConstants.MAX_LINE_WIDTH;
import static org.opends.server.util.StaticUtils.wrapText;
+import org.opends.server.util.cli.LDAPConnectionConsoleInteraction;
+import org.opends.server.admin.client.cli.SecureConnectionCliArgs;
import java.util.LinkedList;
+import java.util.LinkedHashSet;
import java.util.concurrent.atomic.AtomicInteger;
import java.io.PrintStream;
@@ -48,53 +50,7 @@
*/
public class LDAPConnectionArgumentParser extends ArgumentParser {
- /** Argument indicating whether all SSL certs will be trusted. */
- protected BooleanArgument trustAll;
-
- /** Argument indicating whether or not to use SSL. */
- protected BooleanArgument useSSL;
-
- /** Argument indicating whether or not to use StartTLS. */
- protected BooleanArgument useStartTLS;
-
- /** Argument indicating location of a bind password file. */
- protected FileBasedArgument bindPWFile;
-
- /** Argument indicating the location of the keystore password file. */
- protected FileBasedArgument keyStorePWFile;
-
- /** Argument indicating the location of the trust store password file. */
- protected FileBasedArgument trustStorePWFile;
-
- /** Argument indicating the port of the directory server. */
- protected IntegerArgument port;
-
- /** Argument indicating the DN of the user with which to bind. */
- protected StringArgument bindDN;
-
- /** Argument indicating the password of the user with which to bind. */
- protected StringArgument bindPW;
-
- /** Argument indicating the nickname of the certificate to use. */
- protected StringArgument certNickname;
-
- /** Argument indicating the hostname of the directory server. */
- protected StringArgument host;
-
- /** Argument indicating the location of the keystore file. */
- protected StringArgument keyStoreFile;
-
- /** Argument indicating the password fo the keystore. */
- protected StringArgument keyStorePW;
-
- /** Argument indicating a SASL option. */
- protected StringArgument saslOption;
-
- /** Argument indicating the location of the trust store file. */
- protected StringArgument trustStoreFile;
-
- /** Argument indicating the password of the trust store. */
- protected StringArgument trustStorePW;
+ private SecureConnectionCliArgs args;
/**
* Creates a new instance of this argument parser with no arguments.
@@ -169,7 +125,9 @@
* false otherwise
*/
public boolean isLdapOperation() {
- return host.isPresent() || port.isPresent() || bindDN.isPresent();
+ return args.hostNameArg.isPresent() ||
+ args.portArg.isPresent() ||
+ args.bindDnArg.isPresent();
}
/**
@@ -188,13 +146,36 @@
public LDAPConnection connect(PrintStream out, PrintStream err)
throws LDAPConnectionException, ArgumentException
{
+ return connect(this.args, out, err);
+ }
+
+
+ /**
+ * Creates a new LDAPConnection and invokes a connect operation using
+ * information provided in the parsed set of arguments that were provided
+ * by the user.
+ *
+ * @param args with which to connect
+ * @param out stream to write messages
+ * @param err stream to write messages
+ * @return LDAPConnection created by this class from parsed arguments
+ * @throws LDAPConnectionException if there was a problem connecting
+ * to the server indicated by the input arguments
+ * @throws ArgumentException if there was a problem processing the input
+ * arguments
+ */
+ private LDAPConnection connect(SecureConnectionCliArgs args,
+ PrintStream out, PrintStream err)
+ throws LDAPConnectionException, ArgumentException
+ {
// If both a bind password and bind password file were provided, then return
// an error.
- if (bindPW.isPresent() && bindPWFile.isPresent())
+ if (args.bindPasswordArg.isPresent() &&
+ args.bindPasswordFileArg.isPresent())
{
Message message = ERR_LDAP_CONN_MUTUALLY_EXCLUSIVE_ARGUMENTS.get(
- bindPW.getLongIdentifier(),
- bindPWFile.getLongIdentifier());
+ args.bindPasswordArg.getLongIdentifier(),
+ args.bindPasswordFileArg.getLongIdentifier());
err.println(wrapText(message, MAX_LINE_WIDTH));
throw new ArgumentException(message);
}
@@ -202,22 +183,24 @@
// If both a key store password and key store password file were provided,
// then return an error.
- if (keyStorePW.isPresent() && keyStorePWFile.isPresent())
+ if (args.keyStorePasswordArg.isPresent() &&
+ args.keyStorePasswordFileArg.isPresent())
{
Message message = ERR_LDAP_CONN_MUTUALLY_EXCLUSIVE_ARGUMENTS.get(
- keyStorePW.getLongIdentifier(),
- keyStorePWFile.getLongIdentifier());
+ args.keyStorePasswordArg.getLongIdentifier(),
+ args.keyStorePasswordFileArg.getLongIdentifier());
throw new ArgumentException(message);
}
// If both a trust store password and trust store password file were
// provided, then return an error.
- if (trustStorePW.isPresent() && trustStorePWFile.isPresent())
+ if (args.trustStorePasswordArg.isPresent() &&
+ args.trustStorePasswordFileArg.isPresent())
{
Message message = ERR_LDAP_CONN_MUTUALLY_EXCLUSIVE_ARGUMENTS.get(
- trustStorePW.getLongIdentifier(),
- trustStorePWFile.getLongIdentifier());
+ args.trustStorePasswordArg.getLongIdentifier(),
+ args.trustStorePasswordFileArg.getLongIdentifier());
err.println(wrapText(message, MAX_LINE_WIDTH));
throw new ArgumentException(message);
}
@@ -231,13 +214,13 @@
// See if we should use SSL or StartTLS when establishing the connection.
// If so, then make sure only one of them was specified.
- if (useSSL.isPresent())
+ if (args.useSSLArg.isPresent())
{
- if (useStartTLS.isPresent())
+ if (args.useStartTLSArg.isPresent())
{
Message message = ERR_LDAP_CONN_MUTUALLY_EXCLUSIVE_ARGUMENTS.get(
- useSSL.getLongIdentifier(),
- useStartTLS.getLongIdentifier());
+ args.useSSLArg.getLongIdentifier(),
+ args.useSSLArg.getLongIdentifier());
err.println(wrapText(message, MAX_LINE_WIDTH));
throw new ArgumentException(message);
}
@@ -246,7 +229,7 @@
connectionOptions.setUseSSL(true);
}
}
- else if (useStartTLS.isPresent())
+ else if (args.useStartTLSArg.isPresent())
{
connectionOptions.setStartTLS(true);
}
@@ -254,14 +237,14 @@
// If we should blindly trust any certificate, then install the appropriate
// SSL connection factory.
- if (useSSL.isPresent() || useStartTLS.isPresent())
+ if (args.useSSLArg.isPresent() || args.useStartTLSArg.isPresent())
{
try
{
String clientAlias;
- if (certNickname.isPresent())
+ if (args.certNicknameArg.isPresent())
{
- clientAlias = certNickname.getValue();
+ clientAlias = args.certNicknameArg.getValue();
}
else
{
@@ -269,10 +252,12 @@
}
SSLConnectionFactory sslConnectionFactory = new SSLConnectionFactory();
- sslConnectionFactory.init(trustAll.isPresent(), keyStoreFile.getValue(),
- keyStorePW.getValue(), clientAlias,
- trustStoreFile.getValue(),
- trustStorePW.getValue());
+ sslConnectionFactory.init(args.trustAllArg.isPresent(),
+ args.keyStorePathArg.getValue(),
+ args.keyStorePasswordArg.getValue(),
+ clientAlias,
+ args.trustStorePathArg.getValue(),
+ args.trustStorePasswordArg.getValue());
connectionOptions.setSSLConnectionFactory(sslConnectionFactory);
}
@@ -287,12 +272,12 @@
// If one or more SASL options were provided, then make sure that one of
// them was "mech" and specified a valid SASL mechanism.
- if (saslOption.isPresent())
+ if (args.saslOptionArg.isPresent())
{
String mechanism = null;
LinkedList<String> options = new LinkedList<String>();
- for (String s : saslOption.getValues())
+ for (String s : args.saslOptionArg.getValues())
{
int equalPos = s.indexOf('=');
if (equalPos <= 0)
@@ -330,155 +315,100 @@
connectionOptions.addSASLProperty(option);
}
}
+ return connect(
+ args.hostNameArg.getValue(),
+ args.portArg.getIntValue(),
+ args.bindDnArg.getValue(),
+ args.bindPasswordArg.getValue(),
+ connectionOptions, out, err);
+ }
+ /**
+ * Creates a connection using a console interaction that will be used
+ * to potientially interact with the user to prompt for necessary
+ * information for establishing the connection.
+ *
+ * @param ui user interaction for prompting the user
+ * @param out stream to write messages
+ * @param err stream to write messages
+ * @return LDAPConnection created by this class from parsed arguments
+ * @throws LDAPConnectionException if there was a problem connecting
+ * to the server indicated by the input arguments
+ */
+ public LDAPConnection connect(LDAPConnectionConsoleInteraction ui,
+ PrintStream out, PrintStream err)
+ throws LDAPConnectionException
+ {
+ LDAPConnection connection = null;
+ try {
+ ui.run();
+ LDAPConnectionOptions options = new LDAPConnectionOptions();
+ options.setVersionNumber(3);
+ connection = connect(
+ ui.getHostName(),
+ ui.getPortNumber(),
+ ui.getBindDN(),
+ ui.getBindPassword(),
+ ui.populateLDAPOptions(options), out, err);
+ } catch (ArgumentException ae) {
+ err.println(ae.getMessageObject());
+ }
+ return connection;
+ }
+
+
+ /**
+ * Creates a connection from information provided.
+ *
+ * @param host of the server
+ * @param port of the server
+ * @param bindDN with which to connect
+ * @param bindPw with which to connect
+ * @param options with which to connect
+ * @param out stream to write messages
+ * @param err stream to write messages
+ * @return LDAPConnection created by this class from parsed arguments
+ * @throws LDAPConnectionException if there was a problem connecting
+ * to the server indicated by the input arguments
+ */
+ public LDAPConnection connect(String host, int port,
+ String bindDN, String bindPw,
+ LDAPConnectionOptions options,
+ PrintStream out,
+ PrintStream err)
+ throws LDAPConnectionException
+ {
// Attempt to connect and authenticate to the Directory Server.
AtomicInteger nextMessageID = new AtomicInteger(1);
LDAPConnection connection = new LDAPConnection(
- host.getValue(), port.getIntValue(),
- connectionOptions, out, err);
+ host, port, options, out, err);
- connection.connectToHost(bindDN.getValue(), bindPW.getValue(),
- nextMessageID);
+ connection.connectToHost(bindDN, bindPw, nextMessageID);
return connection;
}
+ /**
+ * Gets the arguments associated with this parser.
+ *
+ * @return arguments for this parser.
+ */
+ public SecureConnectionCliArgs getArguments() {
+ return args;
+ }
+
private void addLdapConnectionArguments() {
-
- try
- {
- host = new StringArgument(
- "host", OPTION_SHORT_HOST,
- OPTION_LONG_HOST, false, false, true,
- OPTION_VALUE_HOST, "127.0.0.1", null,
- INFO_LDAP_CONN_DESCRIPTION_HOST.get());
- addArgument(host);
-
- port = new IntegerArgument(
- "port", OPTION_SHORT_PORT,
- OPTION_LONG_PORT, false, false, true,
- OPTION_VALUE_PORT, 389, null, true, 1,
- true, 65535, INFO_LDAP_CONN_DESCRIPTION_PORT.get());
- addArgument(port);
-
- useSSL = new BooleanArgument(
- "usessl", OPTION_SHORT_USE_SSL,
- OPTION_LONG_USE_SSL,
- INFO_LDAP_CONN_DESCRIPTION_USESSL.get());
- addArgument(useSSL);
-
- useStartTLS = new BooleanArgument(
- "usestarttls", OPTION_SHORT_START_TLS,
- OPTION_LONG_START_TLS,
- INFO_LDAP_CONN_DESCRIPTION_USESTARTTLS.get());
- addArgument(useStartTLS);
-
- bindDN = new StringArgument(
- "binddn", OPTION_SHORT_BINDDN,
- OPTION_LONG_BINDDN, false, false, true,
- OPTION_VALUE_BINDDN, null, null,
- INFO_LDAP_CONN_DESCRIPTION_BINDDN.get());
- addArgument(bindDN);
-
- bindPW = new StringArgument(
- "bindpw", OPTION_SHORT_BINDPWD,
- OPTION_LONG_BINDPWD, false, false,
- true,
- OPTION_VALUE_BINDPWD, null, null,
- INFO_LDAP_CONN_DESCRIPTION_BINDPW.get());
- addArgument(bindPW);
-
- bindPWFile = new FileBasedArgument(
- "bindpwfile",
- OPTION_SHORT_BINDPWD_FILE,
- OPTION_LONG_BINDPWD_FILE,
- false, false,
- OPTION_VALUE_BINDPWD_FILE,
- null, null,
- INFO_LDAP_CONN_DESCRIPTION_BINDPWFILE.get());
- addArgument(bindPWFile);
-
- saslOption = new StringArgument(
- "sasloption", OPTION_SHORT_SASLOPTION,
- OPTION_LONG_SASLOPTION, false,
- true, true,
- OPTION_VALUE_SASLOPTION, null, null,
- INFO_LDAP_CONN_DESCRIPTION_SASLOPTIONS.get());
- addArgument(saslOption);
-
- trustAll = new BooleanArgument(
- "trustall", 'X', "trustAll",
- INFO_LDAP_CONN_DESCRIPTION_TRUST_ALL.get());
- addArgument(trustAll);
-
- keyStoreFile = new StringArgument(
- "keystorefile",
- OPTION_SHORT_KEYSTOREPATH,
- OPTION_LONG_KEYSTOREPATH,
- false, false, true,
- OPTION_VALUE_KEYSTOREPATH,
- null, null,
- INFO_LDAP_CONN_DESCRIPTION_KSFILE.get());
- addArgument(keyStoreFile);
-
- keyStorePW = new StringArgument(
- "keystorepw", OPTION_SHORT_KEYSTORE_PWD,
- OPTION_LONG_KEYSTORE_PWD,
- false, false, true,
- OPTION_VALUE_KEYSTORE_PWD,
- null, null,
- INFO_LDAP_CONN_DESCRIPTION_KSPW.get());
- addArgument(keyStorePW);
-
- keyStorePWFile = new FileBasedArgument(
- "keystorepwfile",
- OPTION_SHORT_KEYSTORE_PWD_FILE,
- OPTION_LONG_KEYSTORE_PWD_FILE,
- false, false,
- OPTION_VALUE_KEYSTORE_PWD_FILE,
- null, null,
- INFO_LDAP_CONN_DESCRIPTION_KSPWFILE.get());
- addArgument(keyStorePWFile);
-
- certNickname = new StringArgument(
- "certnickname", 'N', "certNickname",
- false, false, true, "{nickname}", null,
- null, INFO_DESCRIPTION_CERT_NICKNAME.get());
- addArgument(certNickname);
-
- trustStoreFile = new StringArgument(
- "truststorefile",
- OPTION_SHORT_TRUSTSTOREPATH,
- OPTION_LONG_TRUSTSTOREPATH,
- false, false, true,
- OPTION_VALUE_TRUSTSTOREPATH,
- null, null,
- INFO_LDAP_CONN_DESCRIPTION_TSFILE.get());
- addArgument(trustStoreFile);
-
- trustStorePW = new StringArgument(
- "truststorepw", 'T',
- OPTION_LONG_TRUSTSTORE_PWD,
- false, false,
- true, OPTION_VALUE_TRUSTSTORE_PWD, null,
- null, INFO_LDAP_CONN_DESCRIPTION_TSPW.get());
- addArgument(trustStorePW);
-
- trustStorePWFile = new FileBasedArgument(
- "truststorepwfile",
- OPTION_SHORT_TRUSTSTORE_PWD_FILE,
- OPTION_LONG_TRUSTSTORE_PWD_FILE,
- false, false,
- OPTION_VALUE_TRUSTSTORE_PWD_FILE, null, null,
- INFO_LDAP_CONN_DESCRIPTION_TSPWFILE.get());
- addArgument(trustStorePWFile);
-
+ args = new SecureConnectionCliArgs();
+ try {
+ LinkedHashSet<Argument> argSet = args.createGlobalArguments();
+ for (Argument arg : argSet) {
+ addArgument(arg);
+ }
}
- catch (ArgumentException ae)
- {
- // Should never happen
+ catch (ArgumentException ae) {
+ ae.printStackTrace(); // Should never happen
}
}
--
Gitblit v1.10.0