| | |
| | | import org.opends.server.util.args.StringArgument; |
| | | |
| | | import static org.opends.server.loggers.Debug.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.server.messages.ToolMessages.*; |
| | | import static org.opends.server.protocols.ldap.LDAPResultCode.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | | |
| | | |
| | | /** |
| | |
| | | { |
| | | msgID = MSGID_OPERATION_FAILED; |
| | | String msg = getMessage(msgID, "DELETE", line, ae.getMessage()); |
| | | err.println(msg); |
| | | err.println(wrapText(msg, MAX_LINE_WIDTH)); |
| | | return; |
| | | } |
| | | } |
| | |
| | | { |
| | | msgID = MSGID_OPERATION_FAILED; |
| | | String msg = getMessage(msgID, "DELETE", line, errorMessage); |
| | | err.println(msg); |
| | | err.println(wrapText(msg, MAX_LINE_WIDTH)); |
| | | } else |
| | | { |
| | | msgID = MSGID_OPERATION_SUCCESSFUL; |
| | |
| | | LDAPDeleteOptions deleteOptions = new LDAPDeleteOptions(); |
| | | LDAPConnection connection = null; |
| | | |
| | | BooleanArgument trustAll = null; |
| | | BooleanArgument noop = null; |
| | | StringArgument bindDN = null; |
| | | StringArgument bindPassword = null; |
| | | FileBasedArgument bindPasswordFile = null; |
| | | StringArgument encodingStr = null; |
| | | StringArgument keyStorePath = null; |
| | | StringArgument keyStorePassword = null; |
| | | StringArgument trustStorePath = null; |
| | | StringArgument trustStorePassword = null; |
| | | StringArgument hostName = null; |
| | | IntegerArgument port = null; |
| | | IntegerArgument version = null; |
| | | BooleanArgument showUsage = null; |
| | | StringArgument controlStr = null; |
| | | BooleanArgument verbose = null; |
| | | BooleanArgument continueOnError = null; |
| | | BooleanArgument useSSL = null; |
| | | BooleanArgument startTLS = null; |
| | | BooleanArgument saslExternal = null; |
| | | BooleanArgument deleteSubtree = null; |
| | | StringArgument filename = null; |
| | | StringArgument saslOptions = null; |
| | | BooleanArgument continueOnError = null; |
| | | BooleanArgument deleteSubtree = null; |
| | | BooleanArgument noop = null; |
| | | BooleanArgument saslExternal = null; |
| | | BooleanArgument showUsage = null; |
| | | BooleanArgument startTLS = null; |
| | | BooleanArgument trustAll = null; |
| | | BooleanArgument useSSL = null; |
| | | BooleanArgument verbose = null; |
| | | FileBasedArgument bindPasswordFile = null; |
| | | FileBasedArgument keyStorePasswordFile = null; |
| | | FileBasedArgument trustStorePasswordFile = null; |
| | | IntegerArgument port = null; |
| | | IntegerArgument version = null; |
| | | StringArgument bindDN = null; |
| | | StringArgument bindPassword = null; |
| | | StringArgument controlStr = null; |
| | | StringArgument encodingStr = null; |
| | | StringArgument filename = null; |
| | | StringArgument hostName = null; |
| | | StringArgument keyStorePath = null; |
| | | StringArgument keyStorePassword = null; |
| | | StringArgument saslOptions = null; |
| | | StringArgument trustStorePath = null; |
| | | StringArgument trustStorePassword = null; |
| | | |
| | | Reader rdr = null; |
| | | ArrayList<String> dnStrings = new ArrayList<String> (); |
| | | |
| | | // Create the command-line argument parser for use with this program. |
| | | ArgumentParser argParser = new ArgumentParser(CLASS_NAME, false, true, |
| | | 0, 1, "\"DN\""); |
| | | String toolDescription = getMessage(MSGID_LDAPDELETE_TOOL_DESCRIPTION); |
| | | ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, |
| | | false, true, 0, 1, "\"DN\""); |
| | | try |
| | | { |
| | | trustAll = new BooleanArgument("trustAll", 'X', "trustAll", |
| | | MSGID_DESCRIPTION_TRUSTALL); |
| | | argParser.addArgument(trustAll); |
| | | bindDN = new StringArgument("bindDN", 'D', "bindDN", false, false, |
| | | true, "{bindDN}", null, null, |
| | | hostName = new StringArgument("host", 'h', "host", false, false, true, |
| | | "{host}", "localhost", null, |
| | | MSGID_DESCRIPTION_HOST); |
| | | argParser.addArgument(hostName); |
| | | |
| | | port = new IntegerArgument("port", 'p', "port", false, false, true, |
| | | "{port}", 389, null, MSGID_DESCRIPTION_PORT); |
| | | argParser.addArgument(port); |
| | | |
| | | useSSL = new BooleanArgument("useSSL", 'Z', "useSSL", |
| | | MSGID_DESCRIPTION_USE_SSL); |
| | | argParser.addArgument(useSSL); |
| | | |
| | | startTLS = new BooleanArgument("startTLS", 'q', "startTLS", |
| | | MSGID_DESCRIPTION_START_TLS); |
| | | argParser.addArgument(startTLS); |
| | | |
| | | bindDN = new StringArgument("bindDN", 'D', "bindDN", false, false, true, |
| | | "{bindDN}", null, null, |
| | | MSGID_DESCRIPTION_BINDDN); |
| | | argParser.addArgument(bindDN); |
| | | |
| | | bindPassword = new StringArgument("bindPassword", 'w', "bindPassword", |
| | | false, false, true, "{bindPassword}", |
| | | null, null, |
| | | MSGID_DESCRIPTION_BINDPASSWORD); |
| | | argParser.addArgument(bindPassword); |
| | | bindPasswordFile = new FileBasedArgument("bindPasswordFile", 'j', |
| | | "bindPasswordFile", false, false, |
| | | "{bindPasswordFilename}", null, null, |
| | | MSGID_DESCRIPTION_BINDPASSWORDFILE); |
| | | |
| | | bindPasswordFile = |
| | | new FileBasedArgument("bindPasswordFile", 'j', "bindPasswordFile", |
| | | false, false, "{bindPasswordFilename}", null, |
| | | null, MSGID_DESCRIPTION_BINDPASSWORDFILE); |
| | | argParser.addArgument(bindPasswordFile); |
| | | encodingStr = new StringArgument("encoding", 'i', "encoding", false, |
| | | false, true, "{encoding}", null, null, |
| | | MSGID_DESCRIPTION_ENCODING); |
| | | argParser.addArgument(encodingStr); |
| | | |
| | | filename = new StringArgument("filename", 'f', "filename", false, false, |
| | | true, "{filename}", null, null, |
| | | MSGID_DELETE_DESCRIPTION_FILENAME); |
| | | argParser.addArgument(filename); |
| | | |
| | | saslExternal = new BooleanArgument("useSASLExternal", 'r', |
| | | "useSASLExternal", |
| | | MSGID_DESCRIPTION_USE_SASL_EXTERNAL); |
| | | argParser.addArgument(saslExternal); |
| | | |
| | | saslOptions = new StringArgument("saslOptions", 'o', "saslOptions", |
| | | false, true, true, "{name=value}", null, |
| | | null, MSGID_DESCRIPTION_SASL_PROPERTIES); |
| | | argParser.addArgument(saslOptions); |
| | | |
| | | trustAll = new BooleanArgument("trustAll", 'X', "trustAll", |
| | | MSGID_DESCRIPTION_TRUSTALL); |
| | | argParser.addArgument(trustAll); |
| | | |
| | | keyStorePath = new StringArgument("keyStorePath", 'K', "keyStorePath", |
| | | false, false, true, "{keyStorePath}", |
| | | null, null, |
| | | MSGID_DESCRIPTION_KEYSTOREPATH); |
| | | argParser.addArgument(keyStorePath); |
| | | trustStorePath = new StringArgument("trustStorePath", 'P', |
| | | "trustStorePath", false, false, true, |
| | | "{trustStorePath}", null, null, |
| | | MSGID_DESCRIPTION_TRUSTSTOREPATH); |
| | | argParser.addArgument(trustStorePath); |
| | | |
| | | keyStorePassword = new StringArgument("keyStorePassword", 'W', |
| | | "keyStorePassword", false, false, |
| | | true, "{keyStorePassword}", null, |
| | | null, |
| | | MSGID_DESCRIPTION_KEYSTOREPASSWORD); |
| | | argParser.addArgument(keyStorePassword); |
| | | hostName = new StringArgument("host", 'h', "host", false, false, true, |
| | | "{host}", "localhost", null, |
| | | MSGID_DESCRIPTION_HOST); |
| | | argParser.addArgument(hostName); |
| | | port = new IntegerArgument("port", 'p', "port", false, false, true, |
| | | "{port}", 389, null, MSGID_DESCRIPTION_PORT); |
| | | argParser.addArgument(port); |
| | | |
| | | keyStorePasswordFile = |
| | | new FileBasedArgument("keyStorePasswordFile", null, |
| | | "keyStorePasswordFile", false, false, "{path}", |
| | | null, null, |
| | | MSGID_DESCRIPTION_KEYSTOREPASSWORD_FILE); |
| | | argParser.addArgument(keyStorePasswordFile); |
| | | |
| | | trustStorePath = new StringArgument("trustStorePath", 'P', |
| | | "trustStorePath", false, false, true, |
| | | "{trustStorePath}", null, null, |
| | | MSGID_DESCRIPTION_TRUSTSTOREPATH); |
| | | argParser.addArgument(trustStorePath); |
| | | |
| | | trustStorePassword = |
| | | new StringArgument("trustStorePassword", null, "trustStorePassword", |
| | | false, false, true, "{trustStorePassword}", null, |
| | | null, MSGID_DESCRIPTION_TRUSTSTOREPASSWORD); |
| | | argParser.addArgument(trustStorePassword); |
| | | |
| | | trustStorePasswordFile = |
| | | new FileBasedArgument("trustStorePasswordFile", null, |
| | | "trustStorePasswordFile", false, false, |
| | | "{path}", null, null, |
| | | MSGID_DESCRIPTION_TRUSTSTOREPASSWORD_FILE); |
| | | argParser.addArgument(trustStorePasswordFile); |
| | | |
| | | deleteSubtree = |
| | | new BooleanArgument("deleteSubtree", 'x', "deleteSubtree", |
| | | MSGID_DELETE_DESCRIPTION_DELETE_SUBTREE); |
| | | argParser.addArgument(deleteSubtree); |
| | | |
| | | controlStr = |
| | | new StringArgument("controls", 'J', "controls", false, false, true, |
| | | "{controloid[:criticality[:value|::b64value|:<fileurl]]}", |
| | | null, null, MSGID_DESCRIPTION_CONTROLS); |
| | | argParser.addArgument(controlStr); |
| | | |
| | | version = new IntegerArgument("version", 'V', "version", false, false, |
| | | true, "{version}", 3, null, |
| | | MSGID_DESCRIPTION_VERSION); |
| | | argParser.addArgument(version); |
| | | filename = new StringArgument("filename", 'f', "filename", false, false, |
| | | true, "{filename}", null, null, |
| | | MSGID_DELETE_DESCRIPTION_FILENAME); |
| | | argParser.addArgument(filename); |
| | | |
| | | encodingStr = new StringArgument("encoding", 'i', "encoding", false, |
| | | false, true, "{encoding}", null, null, |
| | | MSGID_DESCRIPTION_ENCODING); |
| | | argParser.addArgument(encodingStr); |
| | | |
| | | continueOnError = |
| | | new BooleanArgument("continueOnError", 'c', "continueOnError", |
| | | MSGID_DESCRIPTION_CONTINUE_ON_ERROR); |
| | | argParser.addArgument(continueOnError); |
| | | |
| | | noop = new BooleanArgument("no-op", 'n', "noop", MSGID_DESCRIPTION_NOOP); |
| | | argParser.addArgument(noop); |
| | | |
| | | verbose = new BooleanArgument("verbose", 'v', "verbose", |
| | | MSGID_DESCRIPTION_VERBOSE); |
| | | argParser.addArgument(verbose); |
| | | |
| | | showUsage = new BooleanArgument("showUsage", 'H', "help", |
| | | MSGID_DESCRIPTION_SHOWUSAGE); |
| | | argParser.addArgument(showUsage); |
| | | argParser.setUsageArgument(showUsage, out); |
| | | controlStr = new StringArgument("controls", 'J', "controls", false, false, |
| | | true, "{controloid[:criticality[:value|::b64value|:<fileurl]]}", |
| | | null, null, MSGID_DESCRIPTION_CONTROLS); |
| | | argParser.addArgument(controlStr); |
| | | verbose = new BooleanArgument("verbose", 'v', "verbose", |
| | | MSGID_DESCRIPTION_VERBOSE); |
| | | argParser.addArgument(verbose); |
| | | continueOnError = new BooleanArgument("continueOnError", 'c', |
| | | "continueOnError", |
| | | MSGID_DESCRIPTION_CONTINUE_ON_ERROR); |
| | | argParser.addArgument(continueOnError); |
| | | useSSL = new BooleanArgument("useSSL", 'Z', "useSSL", |
| | | MSGID_DESCRIPTION_USE_SSL); |
| | | argParser.addArgument(useSSL); |
| | | startTLS = new BooleanArgument("startTLS", 'q', "startTLS", |
| | | MSGID_DESCRIPTION_START_TLS); |
| | | argParser.addArgument(startTLS); |
| | | saslExternal = new BooleanArgument("useSASLExternal", 'r', |
| | | "useSASLExternal", |
| | | MSGID_DESCRIPTION_USE_SASL_EXTERNAL); |
| | | argParser.addArgument(saslExternal); |
| | | deleteSubtree = new BooleanArgument("deleteSubtree", 'x', "deleteSubtree", |
| | | MSGID_DELETE_DESCRIPTION_DELETE_SUBTREE); |
| | | argParser.addArgument(deleteSubtree); |
| | | |
| | | saslOptions = new StringArgument("saslOptions", 'o', "saslOptions", |
| | | false, true, true, "{name=value}", null, |
| | | null, MSGID_DESCRIPTION_SASL_PROPERTIES); |
| | | argParser.addArgument(saslOptions); |
| | | noop = new BooleanArgument("no-op", 'n', "noop", MSGID_DESCRIPTION_NOOP); |
| | | argParser.addArgument(noop); |
| | | } catch (ArgumentException ae) |
| | | { |
| | | int msgID = MSGID_ENCPW_CANNOT_INITIALIZE_ARGS; |
| | | String message = getMessage(msgID, ae.getMessage()); |
| | | |
| | | err.println(message); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | int msgID = MSGID_ENCPW_ERROR_PARSING_ARGS; |
| | | String message = getMessage(msgID, ae.getMessage()); |
| | | |
| | | err.println(message); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | err.println(argParser.getUsage()); |
| | | return 1; |
| | | } |
| | |
| | | |
| | | if(bindPassword.isPresent() && bindPasswordFile.isPresent()) |
| | | { |
| | | err.println("ERROR: Both -w and -j flags specified. " + |
| | | "Please specify one."); |
| | | int msgID = MSGID_TOOL_CONFLICTING_ARGS; |
| | | String message = getMessage(msgID, bindPassword.getLongIdentifier(), |
| | | bindPasswordFile.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | } catch(ArgumentException ae) |
| | | { |
| | | assert debugException(CLASS_NAME, "main", ae); |
| | | err.println(ae.getMessage()); |
| | | err.println(wrapText(ae.getMessage(), MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | if(versionNumber != 2 && versionNumber != 3) |
| | | { |
| | | int msgID = MSGID_DESCRIPTION_INVALID_VERSION; |
| | | err.println(getMessage(msgID, versionNumber)); |
| | | err.println(wrapText(getMessage(msgID, versionNumber), MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | connectionOptions.setVersionNumber(versionNumber); |
| | | } catch(ArgumentException ae) |
| | | { |
| | | assert debugException(CLASS_NAME, "main", ae); |
| | | err.println(ae.getMessage()); |
| | | err.println(wrapText(ae.getMessage(), MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | } catch(Exception ex) |
| | | { |
| | | assert debugException(CLASS_NAME, "main", ex); |
| | | err.println(ex.getMessage()); |
| | | err.println(wrapText(ex.getMessage(), MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | } else if(bindPasswordValue == null) |
| | |
| | | } |
| | | |
| | | String keyStorePathValue = keyStorePath.getValue(); |
| | | String keyStorePasswordValue = keyStorePassword.getValue(); |
| | | String trustStorePathValue = trustStorePath.getValue(); |
| | | |
| | | String keyStorePasswordValue = null; |
| | | if (keyStorePassword.isPresent()) |
| | | { |
| | | keyStorePasswordValue = keyStorePassword.getValue(); |
| | | } |
| | | else if (keyStorePasswordFile.isPresent()) |
| | | { |
| | | keyStorePasswordValue = keyStorePasswordFile.getValue(); |
| | | } |
| | | |
| | | String trustStorePasswordValue = null; |
| | | if (trustStorePassword.isPresent()) |
| | | { |
| | | trustStorePasswordValue = trustStorePassword.getValue(); |
| | | } |
| | | else if (trustStorePasswordFile.isPresent()) |
| | | { |
| | | trustStorePasswordValue = trustStorePasswordFile.getValue(); |
| | | } |
| | | |
| | | deleteOptions.setShowOperations(noop.isPresent()); |
| | | deleteOptions.setVerbose(verbose.isPresent()); |
| | |
| | | LDAPControl ctrl = LDAPToolUtils.getControl(ctrlString, err); |
| | | if(ctrl == null) |
| | | { |
| | | err.println("Invalid control specified:" + ctrlString); |
| | | int msgID = MSGID_TOOL_INVALID_CONTROL_STRING; |
| | | String message = getMessage(msgID, ctrlString); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | err.println(argParser.getUsage()); |
| | | return 1; |
| | | } |
| | |
| | | { |
| | | if(!connectionOptions.useSSL() && !connectionOptions.useStartTLS()) |
| | | { |
| | | err.println("SASL External requires either SSL or StartTLS " + |
| | | "options to be requested."); |
| | | int msgID = MSGID_TOOL_SASLEXTERNAL_NEEDS_SSL_OR_TLS; |
| | | String message = getMessage(msgID); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | if(keyStorePathValue == null) |
| | | { |
| | | err.println("SASL External requires a path to the SSL " + |
| | | "client certificate keystore."); |
| | | int msgID = MSGID_TOOL_SASLEXTERNAL_NEEDS_KEYSTORE; |
| | | String message = getMessage(msgID); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } |
| | | } |
| | |
| | | } catch(LDAPException le) |
| | | { |
| | | assert debugException(CLASS_NAME, "main", le); |
| | | err.println(le.getMessage()); |
| | | err.println(wrapText(le.getMessage(), MAX_LINE_WIDTH)); |
| | | int code = le.getResultCode(); |
| | | return code; |
| | | } catch(LDAPConnectionException lce) |
| | | { |
| | | assert debugException(CLASS_NAME, "main", lce); |
| | | err.println(lce.getMessage()); |
| | | err.println(wrapText(lce.getMessage(), MAX_LINE_WIDTH)); |
| | | int code = lce.getErrorCode(); |
| | | return code; |
| | | } catch(Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "main", e); |
| | | err.println(e.getMessage()); |
| | | err.println(wrapText(e.getMessage(), MAX_LINE_WIDTH)); |
| | | return 1; |
| | | } finally |
| | | { |