| | |
| | | * Portions Copyright 2006-2007 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.core; |
| | | import org.opends.messages.Message; |
| | | |
| | | |
| | | |
| | |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | import static org.opends.server.messages.CoreMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.messages.CoreMessages.*; |
| | | import static org.opends.server.schema.SchemaConstants.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | |
| | | AttributeType pwAttrType = DirectoryServer.getAttributeType(lowerName); |
| | | if (pwAttrType == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_UNDEFINED_PASSWORD_ATTRIBUTE; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(passwordAttr)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_UNDEFINED_PASSWORD_ATTRIBUTE.get( |
| | | String.valueOf(configEntryDN), String.valueOf(passwordAttr)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | String syntaxOID = pwAttrType.getSyntaxOID(); |
| | |
| | | syntax = syntaxOID; |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_INVALID_PASSWORD_ATTRIBUTE_SYNTAX; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(passwordAttr), |
| | | String.valueOf(syntax)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_INVALID_PASSWORD_ATTRIBUTE_SYNTAX. |
| | | get(String.valueOf(configEntryDN), String.valueOf(passwordAttr), |
| | | String.valueOf(syntax)); |
| | | throw new ConfigException(message); |
| | | } |
| | | } |
| | | } |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_ATTRIBUTE; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_PASSWORD_ATTRIBUTE.get( |
| | | String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | if (storageSchemes == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_DEFAULT_STORAGE_SCHEMES; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_NO_DEFAULT_STORAGE_SCHEMES.get( |
| | | String.valueOf(configEntryDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | if (scheme == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_SUCH_DEFAULT_SCHEME; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(schemeName)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_NO_SUCH_DEFAULT_SCHEME.get( |
| | | String.valueOf(configEntryDN), String.valueOf(schemeName)); |
| | | throw new ConfigException(message); |
| | | } |
| | | else |
| | | { |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_DEFAULT_STORAGE_SCHEMES; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_DEFAULT_STORAGE_SCHEMES. |
| | | get(String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_DEPRECATED_STORAGE_SCHEMES; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = |
| | | ERR_PWPOLICY_CANNOT_DETERMINE_DEPRECATED_STORAGE_SCHEMES. |
| | | get(String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | validator = DirectoryServer.getPasswordValidator(validatorDN); |
| | | if (validator == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_SUCH_VALIDATOR; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(validatorDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_NO_SUCH_VALIDATOR.get( |
| | | String.valueOf(configEntryDN), String.valueOf(validatorDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | validators.put(validatorDN, validator); |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_VALIDATORS; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_PASSWORD_VALIDATORS.get( |
| | | String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | DirectoryServer.getAccountStatusNotificationHandler(handlerDN); |
| | | if (handler == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_SUCH_NOTIFICATION_HANDLER; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(handlerDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_NO_SUCH_NOTIFICATION_HANDLER.get( |
| | | String.valueOf(configEntryDN), String.valueOf(handlerDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | handlers.put(handlerDN, handler); |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_NOTIFICATION_HANDLERS; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_NOTIFICATION_HANDLERS.get( |
| | | String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | DirectoryServer.getPasswordGenerator(passGenDN); |
| | | if (generator == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_SUCH_GENERATOR; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(passGenDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_NO_SUCH_GENERATOR.get( |
| | | String.valueOf(configEntryDN), String.valueOf(passGenDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | this.passwordGeneratorDN = passGenDN; |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_GENERATOR; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_PASSWORD_GENERATOR.get( |
| | | String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | if ((! this.expirePasswordsWithoutWarning()) && |
| | | (this.getWarningInterval() <= 0)) |
| | | { |
| | | msgID = MSGID_PWPOLICY_MUST_HAVE_WARNING_IF_NOT_EXPIRE_WITHOUT_WARNING; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = |
| | | ERR_PWPOLICY_MUST_HAVE_WARNING_IF_NOT_EXPIRE_WITHOUT_WARNING. |
| | | get(String.valueOf(configEntryDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | // Determine whether to allow user changes for expired passwords. |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_CHANGE_BY_TIME; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_REQUIRE_CHANGE_BY_TIME. |
| | | get(String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | AttributeType attrType = DirectoryServer.getAttributeType(lowerName); |
| | | if (attrType == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_UNDEFINED_LAST_LOGIN_TIME_ATTRIBUTE; |
| | | String message = |
| | | getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(lastLoginTimeAtt)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_UNDEFINED_LAST_LOGIN_TIME_ATTRIBUTE. |
| | | get(String.valueOf(configEntryDN), |
| | | String.valueOf(lastLoginTimeAtt)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | this.lastLoginTimeAttribute = attrType; |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_ATTR; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_ATTR.get( |
| | | String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | // Get the last login time format. If specified, it must be a valid format |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_INVALID_LAST_LOGIN_TIME_FORMAT; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(formatString)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_INVALID_LAST_LOGIN_TIME_FORMAT.get( |
| | | String.valueOf(configEntryDN), String.valueOf(formatString)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | this.lastLoginTimeFormat = formatString; |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_FORMAT; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = ERR_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_FORMAT. |
| | | get(String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_INVALID_PREVIOUS_LAST_LOGIN_TIME_FORMAT; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | String.valueOf(s)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = |
| | | ERR_PWPOLICY_INVALID_PREVIOUS_LAST_LOGIN_TIME_FORMAT. |
| | | get(String.valueOf(configEntryDN), String.valueOf(s)); |
| | | throw new ConfigException(message); |
| | | } |
| | | } |
| | | |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PREVIOUS_LAST_LOGIN_TIME_FORMAT; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN), |
| | | getExceptionMessage(e)); |
| | | throw new InitializationException(msgID, message, e); |
| | | Message message = |
| | | ERR_PWPOLICY_CANNOT_DETERMINE_PREVIOUS_LAST_LOGIN_TIME_FORMAT. |
| | | get(String.valueOf(configEntryDN), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | | |
| | | |
| | |
| | | // entry, since it is required. |
| | | if (passwordAttribute == null) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_PASSWORD_ATTRIBUTE; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = |
| | | ERR_PWPOLICY_NO_PASSWORD_ATTRIBUTE.get(String.valueOf(configEntryDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | // Ensure that at least one default password storage scheme was included in |
| | | // the configuration entry, since it is required. |
| | | if (defaultStorageSchemes.isEmpty()) |
| | | { |
| | | msgID = MSGID_PWPOLICY_NO_DEFAULT_STORAGE_SCHEMES; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_NO_DEFAULT_STORAGE_SCHEMES.get( |
| | | String.valueOf(configEntryDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | | // If both a maximum password age and a warning interval are provided, then |
| | |
| | | { |
| | | if ((warnInterval + minimumPasswordAge) >= maximumPasswordAge) |
| | | { |
| | | msgID = MSGID_PWPOLICY_MIN_AGE_PLUS_WARNING_GREATER_THAN_MAX_AGE; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = |
| | | ERR_PWPOLICY_MIN_AGE_PLUS_WARNING_GREATER_THAN_MAX_AGE. |
| | | get(String.valueOf(configEntryDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | } |
| | | else if (warnInterval >= maximumPasswordAge) |
| | | { |
| | | msgID = MSGID_PWPOLICY_WARNING_INTERVAL_LARGER_THAN_MAX_AGE; |
| | | String message = getMessage(msgID, String.valueOf(configEntryDN)); |
| | | throw new ConfigException(msgID, message); |
| | | Message message = ERR_PWPOLICY_WARNING_INTERVAL_LARGER_THAN_MAX_AGE.get( |
| | | String.valueOf(configEntryDN)); |
| | | throw new ConfigException(message); |
| | | } |
| | | } |
| | | } |