| | |
| | | * |
| | | * |
| | | * Copyright 2006-2010 Sun Microsystems, Inc. |
| | | * Portions copyright 2011 ForgeRock AS. |
| | | * Portions copyright 2011-2013 ForgeRock AS. |
| | | */ |
| | | package org.opends.server.tools; |
| | | |
| | | |
| | | |
| | | import static org.opends.messages.ConfigMessages.*; |
| | | import static org.opends.messages.ToolMessages.*; |
| | | import static org.opends.server.loggers.ErrorLogger.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import static org.opends.server.tools.ToolConstants.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.OutputStream; |
| | | import java.io.PrintStream; |
| | |
| | | import org.opends.server.crypto.CryptoManagerSync; |
| | | import org.opends.server.extensions.ConfigFileHandler; |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.protocols.ldap.LDAPResultCode; |
| | | import org.opends.server.schema.AuthPasswordSyntax; |
| | | import org.opends.server.schema.UserPasswordSyntax; |
| | | import org.opends.server.types.ByteString; |
| | |
| | | import org.opends.server.util.args.FileBasedArgument; |
| | | import org.opends.server.util.args.StringArgument; |
| | | |
| | | import static org.opends.messages.ConfigMessages.*; |
| | | import static org.opends.messages.ToolMessages.*; |
| | | import static org.opends.server.loggers.ErrorLogger.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import static org.opends.server.protocols.ldap.LDAPResultCode.*; |
| | | import static org.opends.server.tools.ToolConstants.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | Message message = ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage()); |
| | | |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | err.println(argParser.getUsage()); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | |
| | |
| | | // then we've already done it so just return without doing anything else. |
| | | if (argParser.usageOrVersionDisplayed()) |
| | | { |
| | | return 0; |
| | | return SUCCESS; |
| | | } |
| | | |
| | | |
| | |
| | | ERR_TOOL_CONFLICTING_ARGS.get(clearPassword.getLongIdentifier(), |
| | | clearPasswordFile.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | if (clearPassword.isPresent() && interactivePassword.isPresent()) |
| | |
| | | ERR_TOOL_CONFLICTING_ARGS.get(clearPassword.getLongIdentifier(), |
| | | interactivePassword.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | if (clearPasswordFile.isPresent() && interactivePassword.isPresent()) |
| | |
| | | clearPasswordFile.getLongIdentifier(), |
| | | interactivePassword.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | if (encodedPassword.isPresent() && encodedPasswordFile.isPresent()) |
| | |
| | | ERR_TOOL_CONFLICTING_ARGS.get(encodedPassword.getLongIdentifier(), |
| | | encodedPasswordFile.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | |
| | |
| | | ERR_ENCPW_NO_SCHEME.get(schemeName.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | err.println(argParser.getUsage()); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | |
| | |
| | | Message message = |
| | | ERR_SERVER_BOOTSTRAP_ERROR.get(getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | try |
| | |
| | | { |
| | | Message message = ERR_CANNOT_LOAD_CONFIG.get(ie.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_CANNOT_LOAD_CONFIG.get(getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | Message message = ERR_CANNOT_LOAD_SCHEMA.get(ce.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | | Message message = ERR_CANNOT_LOAD_SCHEMA.get(ie.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_CANNOT_LOAD_SCHEMA.get(getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | |
| | |
| | | Message message = |
| | | ERR_CANNOT_INITIALIZE_CORE_CONFIG.get(ce.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | | Message message = |
| | | ERR_CANNOT_INITIALIZE_CORE_CONFIG.get(ie.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = |
| | | ERR_CANNOT_INITIALIZE_CORE_CONFIG.get(getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | |
| | |
| | | ERR_ENCPW_CANNOT_INITIALIZE_STORAGE_SCHEMES.get( |
| | | ce.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | | Message message = ERR_ENCPW_CANNOT_INITIALIZE_STORAGE_SCHEMES.get( |
| | | ie.getMessage()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_ENCPW_CANNOT_INITIALIZE_STORAGE_SCHEMES.get( |
| | | getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | return SUCCESS; |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | return SUCCESS; |
| | | } |
| | | } |
| | | |
| | |
| | | Message message = ERR_ENCPW_INVALID_ENCODED_AUTHPW.get( |
| | | de.getMessageObject()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_ENCPW_INVALID_ENCODED_AUTHPW.get( |
| | | String.valueOf(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | PasswordStorageScheme storageScheme = |
| | |
| | | Message message = ERR_ENCPW_NO_SUCH_AUTH_SCHEME.get( |
| | | scheme); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | if (clearPW == null) |
| | |
| | | clearPasswordFile, interactivePassword); |
| | | if (clearPW == null) |
| | | { |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | if (storageScheme.authPasswordMatches(clearPW, authInfo, authValue)) |
| | | final boolean authPasswordMatches = |
| | | storageScheme.authPasswordMatches(clearPW, authInfo, authValue); |
| | | if (authPasswordMatches) |
| | | { |
| | | Message message = INFO_ENCPW_PASSWORDS_MATCH.get(); |
| | | out.println(message); |
| | | |
| | | if (useCompareResultCode.isPresent()) |
| | | { |
| | | return LDAPResultCode.COMPARE_TRUE; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | else |
| | | if (useCompareResultCode.isPresent()) |
| | | { |
| | | Message message = INFO_ENCPW_PASSWORDS_DO_NOT_MATCH.get(); |
| | | out.println(message); |
| | | |
| | | if (useCompareResultCode.isPresent()) |
| | | { |
| | | return LDAPResultCode.COMPARE_FALSE; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | return authPasswordMatches ? COMPARE_TRUE : COMPARE_FALSE; |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | else |
| | | { |
| | |
| | | { |
| | | Message message = ERR_ENCPW_NO_SUCH_SCHEME.get(userPWElements[0]); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | catch (DirectoryException de) |
| | |
| | | Message message = ERR_ENCPW_INVALID_ENCODED_USERPW.get( |
| | | de.getMessageObject()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_ENCPW_INVALID_ENCODED_USERPW.get( |
| | | String.valueOf(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | else |
| | |
| | | Message message = ERR_ENCPW_NO_SCHEME.get( |
| | | schemeName.getLongIdentifier()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | |
| | | encodedPWString = encodedPW.toString(); |
| | |
| | | { |
| | | Message message = ERR_ENCPW_NO_SUCH_SCHEME.get(scheme); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | |
| | |
| | | clearPasswordFile, interactivePassword); |
| | | if (clearPW == null) |
| | | { |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | if (storageScheme.passwordMatches(clearPW, |
| | | ByteString.valueOf(encodedPWString))) |
| | | boolean passwordMatches = |
| | | storageScheme.passwordMatches(clearPW, ByteString |
| | | .valueOf(encodedPWString)); |
| | | if (passwordMatches) |
| | | { |
| | | Message message = INFO_ENCPW_PASSWORDS_MATCH.get(); |
| | | out.println(message); |
| | | |
| | | if (useCompareResultCode.isPresent()) |
| | | { |
| | | return LDAPResultCode.COMPARE_TRUE; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Message message = INFO_ENCPW_PASSWORDS_DO_NOT_MATCH.get(); |
| | | out.println(message); |
| | | |
| | | if (useCompareResultCode.isPresent()) |
| | | { |
| | | return LDAPResultCode.COMPARE_FALSE; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | if (useCompareResultCode.isPresent()) |
| | | { |
| | | return passwordMatches ? COMPARE_TRUE : COMPARE_FALSE; |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |
| | | else |
| | |
| | | { |
| | | Message message = ERR_ENCPW_NO_SUCH_AUTH_SCHEME.get(scheme); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | else |
| | |
| | | { |
| | | Message message = ERR_ENCPW_NO_SUCH_SCHEME.get(scheme); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | |
| | |
| | | clearPasswordFile, interactivePassword); |
| | | if (clearPW == null) |
| | | { |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | encodedPW = storageScheme.encodeAuthPassword(clearPW); |
| | |
| | | { |
| | | Message message = ERR_ENCPW_CANNOT_ENCODE.get(de.getMessageObject()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_ENCPW_CANNOT_ENCODE.get(getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | else |
| | |
| | | clearPasswordFile, interactivePassword); |
| | | if (clearPW == null) |
| | | { |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | encodedPW = storageScheme.encodePasswordWithScheme(clearPW); |
| | |
| | | { |
| | | Message message = ERR_ENCPW_CANNOT_ENCODE.get(de.getMessageObject()); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_ENCPW_CANNOT_ENCODE.get(getExceptionMessage(e)); |
| | | err.println(wrapText(message, MAX_LINE_WIDTH)); |
| | | return 1; |
| | | return OPERATIONS_ERROR; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // If we've gotten here, then all processing completed successfully. |
| | | return 0; |
| | | return SUCCESS; |
| | | } |
| | | |
| | | |
| | |
| | | /** |
| | | * Begin masking until asked to stop. |
| | | */ |
| | | @Override |
| | | public void run() |
| | | { |
| | | while (!stop) |