Removed useless calls to toString() in logging statements.
Code cleanup.
| | |
| | | * Copyright 2008 Sun Microsystems, Inc. |
| | | * Portions Copyright 2014 ForgeRock AS |
| | | */ |
| | | |
| | | package org.opends.server.authorization.dseecompat; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | |
| | | import static org.opends.messages.AccessControlMessages.*; |
| | | import static org.opends.server.authorization.dseecompat.Aci.*; |
| | | import java.util.regex.Pattern; |
| | | |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.LDAPURL; |
| | | |
| | | import static org.opends.messages.AccessControlMessages.*; |
| | | import static org.opends.server.authorization.dseecompat.Aci.*; |
| | | |
| | | /** |
| | | * A class representing an ACI target keyword. |
| | | */ |
| | |
| | | /** |
| | | * True if the URL contained a DN wild-card pattern. |
| | | */ |
| | | private boolean isPattern=false; |
| | | private boolean isPattern; |
| | | |
| | | /** |
| | | * The target DN from the URL or null if it was a wild-card pattern. |
| | | */ |
| | | private DN urlDN=null; |
| | | private DN urlDN; |
| | | |
| | | /** |
| | | * The pattern matcher for a wild-card pattern or null if the URL |
| | | * contained an ordinary DN. |
| | | */ |
| | | private PatternDN patternDN =null; |
| | | private PatternDN patternDN; |
| | | |
| | | /* |
| | | * TODO Save aciDN parameter and use it in matchesPattern re-write. |
| | |
| | | this.operator = operator; |
| | | try { |
| | | //The NULL_LDAP_URL corresponds to the root DSE. |
| | | if((!target.equals(NULL_LDAP_URL)) && |
| | | (!Pattern.matches(LDAP_URL, target))) { |
| | | LocalizableMessage message = |
| | | WARN_ACI_SYNTAX_INVALID_TARGETKEYWORD_EXPRESSION.get(target); |
| | | throw new AciException(message); |
| | | if (!NULL_LDAP_URL.equals(target) && !Pattern.matches(LDAP_URL, target)) { |
| | | throw new AciException(WARN_ACI_SYNTAX_INVALID_TARGETKEYWORD_EXPRESSION.get(target)); |
| | | } |
| | | LDAPURL targetURL = LDAPURL.decode(target, false); |
| | | if(targetURL.getRawBaseDN().indexOf("*") != -1) { |
| | |
| | | } else { |
| | | urlDN=targetURL.getBaseDN(); |
| | | if(!urlDN.isDescendantOf(aciDN)) { |
| | | throw new AciException(WARN_ACI_SYNTAX_TARGET_DN_NOT_DESCENDENTOF.get(urlDN.toString(), |
| | | aciDN.toString())); |
| | | throw new AciException(WARN_ACI_SYNTAX_TARGET_DN_NOT_DESCENDENTOF.get(urlDN, aciDN)); |
| | | } |
| | | } |
| | | } |
| | | catch (DirectoryException e){ |
| | | LocalizableMessage message = |
| | | WARN_ACI_SYNTAX_INVALID_TARGETKEYWORD_EXPRESSION.get(target); |
| | | throw new AciException(message); |
| | | throw new AciException(WARN_ACI_SYNTAX_INVALID_TARGETKEYWORD_EXPRESSION.get(target)); |
| | | } |
| | | } |
| | | |
| | |
| | | processedEntries.getAndIncrement(); |
| | | } catch (Exception ex) { |
| | | logger.traceException(ex); |
| | | logger.error(ERR_CACHE_PRELOAD_ENTRY_FAILED, entry.getName().toString(), |
| | | logger.error(ERR_CACHE_PRELOAD_ENTRY_FAILED, entry.getName(), |
| | | (ex.getCause() != null ? ex.getCause().getMessage() : |
| | | stackTraceToSingleLineString(ex))); |
| | | } |
| | |
| | | /** |
| | | * The backend to which this entry entryContainer belongs. |
| | | */ |
| | | private final Backend backend; |
| | | private final Backend<?> backend; |
| | | |
| | | /** |
| | | * The root container in which this entryContainer belongs. |
| | |
| | | EntryID nodeID = dn2id.get(txn, dn, LockMode.DEFAULT); |
| | | if (nodeID == null) |
| | | { |
| | | LocalizableMessage msg = |
| | | ERR_JEB_MISSING_DN2ID_RECORD.get(dn.toString()); |
| | | throw new JebException(msg); |
| | | throw new JebException(ERR_JEB_MISSING_DN2ID_RECORD.get(dn)); |
| | | } |
| | | |
| | | // Insert into id2subtree for this node. |
| | |
| | | EntryID parentID = dn2id.get(txn, parentDN, LockMode.DEFAULT); |
| | | if (parentID == null) |
| | | { |
| | | LocalizableMessage msg = |
| | | ERR_JEB_MISSING_DN2ID_RECORD.get(parentDN.toString()); |
| | | throw new JebException(msg); |
| | | throw new JebException(ERR_JEB_MISSING_DN2ID_RECORD.get(parentDN)); |
| | | } |
| | | |
| | | if(indexBuffer != null) |
| | |
| | | if (this.pPasswordAttribute == null) |
| | | { |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, |
| | | ERR_PWPOLICY_UNDEFINED_PASSWORD_ATTRIBUTE.get( |
| | | this.passwordPolicySubentryDN.toString(), value)); |
| | | ERR_PWPOLICY_UNDEFINED_PASSWORD_ATTRIBUTE.get(this.passwordPolicySubentryDN, value)); |
| | | } |
| | | |
| | | // Check the syntax. |
| | |
| | | if (DirectoryServer.getPasswordValidator(validatorDN) == null) |
| | | { |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, |
| | | ERR_PWPOLICY_UNKNOWN_VALIDATOR.get( |
| | | this.passwordPolicySubentryDN.toString(), |
| | | validatorDN.toString(), PWD_ATTR_VALIDATOR)); |
| | | ERR_PWPOLICY_UNKNOWN_VALIDATOR.get(this.passwordPolicySubentryDN, validatorDN, PWD_ATTR_VALIDATOR)); |
| | | } |
| | | pValidatorNames.add(validatorDN); |
| | | } |
| | |
| | | // Only log an error once, on first error |
| | | if (isAlreadyLogged.compareAndSet(false, true)) { |
| | | logger.error(ERR_PWPOLICY_REJECT_DUE_TO_UNKNOWN_VALIDATOR_LOG, |
| | | userEntry.getName().toString(), pwPolicyName, validatorName); |
| | | userEntry.getName(), pwPolicyName, validatorName); |
| | | } |
| | | return false; |
| | | } |
| | |
| | | && config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | writer = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + config.dn().toString(), |
| | | writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), mfWriter); |
| | | } |
| | | |
| | | if (!(writer instanceof ParallelTextWriter) && config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | writer = new ParallelTextWriter( |
| | | "Parallel Text Writer for " + config.dn().toString(), |
| | | writer = new ParallelTextWriter("Parallel Text Writer for " + config.dn(), |
| | | config.isAutoFlush(), mfWriter); |
| | | } |
| | | |
| | |
| | | && !cfg.isAsynchronous(); |
| | | |
| | | final MultifileTextWriter theWriter = new MultifileTextWriter( |
| | | "Multifile Text Writer for " + cfg.dn().toString(), |
| | | "Multifile Text Writer for " + cfg.dn(), |
| | | cfg.getTimeInterval(), fnPolicy, perm, errorHandler, "UTF-8", |
| | | writerAutoFlush, cfg.isAppend(), (int) cfg.getBufferSize()); |
| | | |
| | |
| | | if (cfg.getQueueSize() > 0) |
| | | { |
| | | this.writer = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + cfg.dn().toString(), |
| | | "Asynchronous Text Writer for " + cfg.dn(), |
| | | cfg.getQueueSize(), cfg.isAutoFlush(), theWriter); |
| | | } |
| | | else |
| | | { |
| | | this.writer = new ParallelTextWriter("Parallel Text Writer for " |
| | | + cfg.dn().toString(), cfg.isAutoFlush(), theWriter); |
| | | this.writer = new ParallelTextWriter("Parallel Text Writer for " + cfg.dn(), |
| | | cfg.isAutoFlush(), theWriter); |
| | | } |
| | | } |
| | | else |
| | |
| | | && config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | writer = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + |
| | | config.dn().toString(), |
| | | writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), mfWriter); |
| | | } |
| | | |
| | |
| | | boolean writerAutoFlush = cfg.isAutoFlush() |
| | | && !cfg.isAsynchronous(); |
| | | |
| | | MultifileTextWriter writer = new MultifileTextWriter( |
| | | "Multifile Text Writer for " + cfg.dn().toString(), |
| | | MultifileTextWriter writer = new MultifileTextWriter("Multifile Text Writer for " + cfg.dn(), |
| | | cfg.getTimeInterval(), fnPolicy, perm, errorHandler, "UTF-8", |
| | | writerAutoFlush, cfg.isAppend(), (int) cfg.getBufferSize()); |
| | | |
| | |
| | | |
| | | if (cfg.isAsynchronous()) |
| | | { |
| | | this.writer = new AsynchronousTextWriter("Asynchronous Text Writer for " |
| | | + cfg.dn().toString(), cfg.getQueueSize(), cfg |
| | | .isAutoFlush(), writer); |
| | | this.writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + cfg.dn(), |
| | | cfg.getQueueSize(), cfg.isAutoFlush(), writer); |
| | | } |
| | | else |
| | | { |
| | |
| | | boolean writerAutoFlush = |
| | | config.isAutoFlush() && !config.isAsynchronous(); |
| | | |
| | | MultifileTextWriter writer = |
| | | new MultifileTextWriter("Multifile Text Writer for " + |
| | | config.dn().toString(), |
| | | MultifileTextWriter writer = new MultifileTextWriter("Multifile Text Writer for " + config.dn(), |
| | | config.getTimeInterval(), |
| | | fnPolicy, |
| | | perm, |
| | |
| | | |
| | | if(config.isAsynchronous()) |
| | | { |
| | | this.writer = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + config.dn().toString(), |
| | | this.writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), writer); |
| | | } |
| | | else |
| | |
| | | config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + |
| | | config.dn().toString(), config.getQueueSize(), |
| | | config.isAutoFlush(), |
| | | mfWriter); |
| | | writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), mfWriter); |
| | | } |
| | | |
| | | if((currentConfig.isAsynchronous() && config.isAsynchronous()) && |
| | |
| | | import java.util.StringTokenizer; |
| | | |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.opendj.config.server.ConfigException; |
| | | import org.forgerock.opendj.ldap.ResultCode; |
| | | import org.opends.messages.Severity; |
| | | import org.opends.server.admin.server.ConfigurationChangeListener; |
| | | import org.opends.server.admin.std.meta.ErrorLogPublisherCfgDefn; |
| | | import org.opends.server.admin.std.server.FileBasedErrorLogPublisherCfg; |
| | | import org.forgerock.opendj.config.server.ConfigException; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import org.opends.server.core.ServerContext; |
| | | import org.opends.server.types.ConfigChangeResult; |
| | |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.FilePermission; |
| | | import org.opends.server.types.InitializationException; |
| | | import org.forgerock.opendj.ldap.ResultCode; |
| | | import org.opends.server.util.StaticUtils; |
| | | import org.opends.server.util.TimeThread; |
| | | |
| | |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | /** {@inheritDoc} */ |
| | | @Override |
| | | public void initializeLogPublisher(FileBasedErrorLogPublisherCfg config, ServerContext serverContext) |
| | | throws ConfigException, InitializationException |
| | |
| | | boolean writerAutoFlush = |
| | | config.isAutoFlush() && !config.isAsynchronous(); |
| | | |
| | | MultifileTextWriter writer = |
| | | new MultifileTextWriter("Multifile Text Writer for " + |
| | | config.dn().toString(), |
| | | MultifileTextWriter writer = new MultifileTextWriter("Multifile Text Writer for " + config.dn(), |
| | | config.getTimeInterval(), |
| | | fnPolicy, |
| | | perm, |
| | |
| | | |
| | | if(config.isAsynchronous()) |
| | | { |
| | | this.writer = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + |
| | | config.dn().toString(), |
| | | this.writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), writer); |
| | | } |
| | | else |
| | |
| | | ERR_CONFIG_LOGGING_CANNOT_OPEN_FILE.get(logFile, config.dn(), e), e); |
| | | } |
| | | |
| | | Set<ErrorLogPublisherCfgDefn.DefaultSeverity> defSevs = |
| | | config.getDefaultSeverity(); |
| | | if(defSevs.isEmpty()) |
| | | { |
| | | defaultSeverities.add(Severity.ERROR); |
| | | defaultSeverities.add(Severity.WARNING); |
| | | } else |
| | | { |
| | | for(ErrorLogPublisherCfgDefn.DefaultSeverity defSev : defSevs) |
| | | { |
| | | if(defSev.toString().equalsIgnoreCase(LOG_SEVERITY_ALL)) |
| | | { |
| | | defaultSeverities.add(Severity.ERROR); |
| | | defaultSeverities.add(Severity.WARNING); |
| | | defaultSeverities.add(Severity.NOTICE); |
| | | defaultSeverities.add(Severity.INFORMATION); |
| | | } |
| | | else if (defSev.toString().equalsIgnoreCase(LOG_SEVERITY_NONE)) |
| | | { |
| | | // don't add any severity |
| | | } |
| | | else |
| | | { |
| | | Severity errorSeverity = |
| | | Severity.parseString(defSev.name()); |
| | | if(errorSeverity != null) |
| | | { |
| | | defaultSeverities.add(errorSeverity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | setDefaultSeverities(config.getDefaultSeverity()); |
| | | |
| | | for(String overrideSeverity : config.getOverrideSeverity()) |
| | | { |
| | |
| | | { |
| | | String severityName = sevTokenizer.nextToken(); |
| | | severityName = severityName.replace("-", "_").toUpperCase(); |
| | | if(severityName.equalsIgnoreCase(LOG_SEVERITY_ALL)) |
| | | if(LOG_SEVERITY_ALL.equalsIgnoreCase(severityName)) |
| | | { |
| | | severities.add(Severity.ERROR); |
| | | severities.add(Severity.WARNING); |
| | |
| | | { |
| | | try |
| | | { |
| | | Severity severity = Severity.parseString(severityName); |
| | | severities.add(severity); |
| | | severities.add(Severity.parseString(severityName)); |
| | | } |
| | | catch(Exception e) |
| | | { |
| | |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | /** {@inheritDoc} */ |
| | | @Override() |
| | | public boolean isConfigurationAcceptable( |
| | | FileBasedErrorLogPublisherCfg config, List<LocalizableMessage> unacceptableReasons) |
| | |
| | | return isConfigurationChangeAcceptable(config, unacceptableReasons); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | /** {@inheritDoc} */ |
| | | @Override |
| | | public boolean isConfigurationChangeAcceptable( |
| | | FileBasedErrorLogPublisherCfg config, List<LocalizableMessage> unacceptableReasons) |
| | |
| | | { |
| | | String severityName = sevTokenizer.nextToken(); |
| | | severityName = severityName.replace("-", "_").toUpperCase(); |
| | | if(!severityName.equalsIgnoreCase(LOG_SEVERITY_ALL)) |
| | | if(!LOG_SEVERITY_ALL.equalsIgnoreCase(severityName)) |
| | | { |
| | | try |
| | | { |
| | |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | /** {@inheritDoc} */ |
| | | @Override |
| | | public ConfigChangeResult applyConfigurationChange( |
| | | FileBasedErrorLogPublisherCfg config) |
| | |
| | | boolean adminActionRequired = false; |
| | | List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>(); |
| | | |
| | | Set<ErrorLogPublisherCfgDefn.DefaultSeverity> defSevs = |
| | | config.getDefaultSeverity(); |
| | | defaultSeverities.clear(); |
| | | if(defSevs.isEmpty()) |
| | | { |
| | | defaultSeverities.add(Severity.ERROR); |
| | | defaultSeverities.add(Severity.WARNING); |
| | | } else |
| | | { |
| | | for(ErrorLogPublisherCfgDefn.DefaultSeverity defSev : defSevs) |
| | | { |
| | | if(defSev.toString().equalsIgnoreCase(LOG_SEVERITY_ALL)) |
| | | { |
| | | defaultSeverities.add(Severity.ERROR); |
| | | defaultSeverities.add(Severity.WARNING); |
| | | defaultSeverities.add(Severity.INFORMATION); |
| | | defaultSeverities.add(Severity.NOTICE); |
| | | } |
| | | else if (defSev.toString().equalsIgnoreCase(LOG_SEVERITY_NONE)) |
| | | { |
| | | // don't add any severity |
| | | } |
| | | else |
| | | { |
| | | Severity errorSeverity = Severity.parseString(defSev.name()); |
| | | if(errorSeverity != null) |
| | | { |
| | | defaultSeverities.add(errorSeverity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | setDefaultSeverities(config.getDefaultSeverity()); |
| | | |
| | | definedSeverities.clear(); |
| | | for(String overrideSeverity : config.getOverrideSeverity()) |
| | |
| | | { |
| | | String severityName = sevTokenizer.nextToken(); |
| | | severityName = severityName.replace("-", "_").toUpperCase(); |
| | | if(severityName.equalsIgnoreCase(LOG_SEVERITY_ALL)) |
| | | if(LOG_SEVERITY_ALL.equalsIgnoreCase(severityName)) |
| | | { |
| | | severities.add(Severity.ERROR); |
| | | severities.add(Severity.INFORMATION); |
| | |
| | | { |
| | | try |
| | | { |
| | | Severity severity = Severity.parseString(severityName); |
| | | severities.add(severity); |
| | | severities.add(Severity.parseString(severityName)); |
| | | } |
| | | catch(Exception e) |
| | | { |
| | |
| | | if(writer instanceof AsynchronousTextWriter && !config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned off. |
| | | AsynchronousTextWriter asyncWriter = ((AsynchronousTextWriter)writer); |
| | | AsynchronousTextWriter asyncWriter = (AsynchronousTextWriter)writer; |
| | | writer = mfWriter; |
| | | asyncWriter.shutdown(false); |
| | | } |
| | |
| | | config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + |
| | | config.dn().toString(), config.getQueueSize(), |
| | | config.isAutoFlush(), |
| | | mfWriter); |
| | | writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), mfWriter); |
| | | } |
| | | |
| | | if (currentConfig.isAsynchronous() |
| | |
| | | return new ConfigChangeResult(resultCode, adminActionRequired, messages); |
| | | } |
| | | |
| | | private void setDefaultSeverities(Set<ErrorLogPublisherCfgDefn.DefaultSeverity> defSevs) |
| | | { |
| | | defaultSeverities.clear(); |
| | | if (defSevs.isEmpty()) |
| | | { |
| | | defaultSeverities.add(Severity.ERROR); |
| | | defaultSeverities.add(Severity.WARNING); |
| | | } |
| | | else |
| | | { |
| | | for (ErrorLogPublisherCfgDefn.DefaultSeverity defSev : defSevs) |
| | | { |
| | | String defaultSeverity = defSev.toString(); |
| | | if (LOG_SEVERITY_ALL.equalsIgnoreCase(defaultSeverity)) |
| | | { |
| | | defaultSeverities.add(Severity.ERROR); |
| | | defaultSeverities.add(Severity.WARNING); |
| | | defaultSeverities.add(Severity.INFORMATION); |
| | | defaultSeverities.add(Severity.NOTICE); |
| | | } |
| | | else if (LOG_SEVERITY_NONE.equalsIgnoreCase(defaultSeverity)) |
| | | { |
| | | // don't add any severity |
| | | } |
| | | else |
| | | { |
| | | Severity errorSeverity = Severity.parseString(defSev.name()); |
| | | if (errorSeverity != null) |
| | | { |
| | | defaultSeverities.add(errorSeverity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | /** {@inheritDoc} */ |
| | | @Override |
| | | public void close() |
| | | { |
| | |
| | | return severities.contains(severity); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | /** {@inheritDoc} */ |
| | | @Override |
| | | public DN getDN() |
| | | { |
| | |
| | | && config.isAsynchronous()) |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | final AsynchronousTextWriter asyncWriter = |
| | | new AsynchronousTextWriter("Asynchronous Text Writer for " |
| | | + config.dn().toString(), config.getQueueSize(), |
| | | config.isAutoFlush(), mfWriter); |
| | | final AsynchronousTextWriter asyncWriter = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + config.dn(), |
| | | config.getQueueSize(), config.isAutoFlush(), mfWriter); |
| | | writer = asyncWriter; |
| | | } |
| | | |
| | |
| | | { |
| | | // The asynchronous setting is being turned on. |
| | | final ParallelTextWriter asyncWriter = new ParallelTextWriter( |
| | | "Parallel Text Writer for " + config.dn().toString(), |
| | | "Parallel Text Writer for " + config.dn(), |
| | | config.isAutoFlush(), mfWriter); |
| | | writer = asyncWriter; |
| | | } |
| | |
| | | && !cfg.isAsynchronous(); |
| | | |
| | | final MultifileTextWriter theWriter = new MultifileTextWriter( |
| | | "Multifile Text Writer for " + cfg.dn().toString(), |
| | | "Multifile Text Writer for " + cfg.dn(), |
| | | cfg.getTimeInterval(), fnPolicy, perm, errorHandler, "UTF-8", |
| | | writerAutoFlush, cfg.isAppend(), (int) cfg.getBufferSize()); |
| | | |
| | |
| | | { |
| | | if (cfg.getQueueSize() > 0) |
| | | { |
| | | this.writer = new AsynchronousTextWriter( |
| | | "Asynchronous Text Writer for " + cfg.dn().toString(), |
| | | this.writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + cfg.dn(), |
| | | cfg.getQueueSize(), cfg.isAutoFlush(), theWriter); |
| | | } |
| | | else |
| | | { |
| | | this.writer = new ParallelTextWriter("Parallel Text Writer for " |
| | | + cfg.dn().toString(), cfg.isAutoFlush(), theWriter); |
| | | this.writer = new ParallelTextWriter("Parallel Text Writer for " + cfg.dn(), |
| | | cfg.isAutoFlush(), theWriter); |
| | | } |
| | | } |
| | | else |
| | |
| | | * historical information is going to be kept. |
| | | * Log information for the repair tool. |
| | | */ |
| | | logger.error(ERR_UNKNOWN_ATTRIBUTE_IN_HISTORICAL, entry.getName().toString(), |
| | | histVal.getAttrString()); |
| | | logger.error(ERR_UNKNOWN_ATTRIBUTE_IN_HISTORICAL, entry.getName(), histVal.getAttrString()); |
| | | continue; |
| | | } |
| | | |
| | |
| | | { |
| | | // An error happened trying to search for the updates |
| | | // Log an error |
| | | logger.error(ERR_CANNOT_RECOVER_CHANGES, baseDN.toString()); |
| | | logger.error(ERR_CANNOT_RECOVER_CHANGES, baseDN); |
| | | return; |
| | | } |
| | | |
| | |
| | | { |
| | | // Update the serverState with the new maxCsn present in the database |
| | | update(dbMaxCSN); |
| | | logger.info(NOTE_SERVER_STATE_RECOVERY, baseDN.toString(), dbMaxCSN); |
| | | logger.info(NOTE_SERVER_STATE_RECOVERY, baseDN, dbMaxCSN); |
| | | } |
| | | } |
| | | } |
| | |
| | | replicationServerDomain.register(this); |
| | | |
| | | logger.debug(INFO_REPLICATION_SERVER_CONNECTION_FROM_DS, getReplicationServerId(), getServerId(), |
| | | replicationServerDomain.getBaseDN().toString(), |
| | | session.getReadableRemoteAddress()); |
| | | replicationServerDomain.getBaseDN(), session.getReadableRemoteAddress()); |
| | | |
| | | super.finalizeStart(); |
| | | } |
| | |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | | import org.forgerock.opendj.config.server.ConfigException; |
| | | import org.forgerock.opendj.ldap.ResultCode; |
| | | import org.opends.server.admin.std.server.MonitorProviderCfg; |
| | | import org.opends.server.api.MonitorProvider; |
| | | import org.forgerock.opendj.config.server.ConfigException; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | | import org.opends.server.replication.common.CSN; |
| | | import org.opends.server.replication.common.ServerState; |
| | | import org.opends.server.replication.protocol.UpdateMsg; |
| | | import org.opends.server.replication.server.changelog.api.ChangelogException; |
| | | import org.opends.server.replication.server.changelog.api.DBCursor; |
| | | import org.opends.server.types.*; |
| | | import org.forgerock.opendj.ldap.ResultCode; |
| | | import org.opends.server.types.Attribute; |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.InitializationException; |
| | | |
| | | import static org.opends.messages.ReplicationMessages.*; |
| | | import static org.opends.server.types.Attributes.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | |
| | | { |
| | | if (!this.baseDN.equals(baseDN)) |
| | | { |
| | | LocalizableMessage message = ERR_RS_DN_DOES_NOT_MATCH.get( |
| | | this.baseDN.toString(), baseDN.toString()); |
| | | LocalizableMessage message = ERR_RS_DN_DOES_NOT_MATCH.get(this.baseDN, baseDN); |
| | | throw new DirectoryException(ResultCode.OTHER, message, null); |
| | | } |
| | | } |
| | |
| | | package org.opends.server.replication.server; |
| | | |
| | | import java.io.IOException; |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | | import java.util.HashSet; |
| | | import java.util.Set; |
| | | import java.util.concurrent.CountDownLatch; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | | import org.opends.server.replication.common.CSN; |
| | | import org.opends.server.replication.common.ServerState; |
| | | import org.opends.server.replication.protocol.MonitorMsg; |
| | |
| | | { |
| | | // This is a response for an earlier request whose computing is |
| | | // already complete. |
| | | logger.debug(INFO_IGNORING_REMOTE_MONITOR_DATA, domain.getBaseDN().toString(), msg.getSenderID()); |
| | | logger.debug(INFO_IGNORING_REMOTE_MONITOR_DATA, domain.getBaseDN(), msg.getSenderID()); |
| | | return; |
| | | } |
| | | |
| | |
| | | */ |
| | | LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); |
| | | mb.append(ERR_RS_ERROR_SENDING_ACK.get( |
| | | localReplicationServer.getServerId(), origServer.getServerId(), |
| | | csn, baseDN.toString())); |
| | | localReplicationServer.getServerId(), origServer.getServerId(), csn, baseDN)); |
| | | mb.append(" "); |
| | | mb.append(stackTraceToSingleLineString(e)); |
| | | logger.error(mb.toMessage()); |
| | |
| | | */ |
| | | LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); |
| | | mb.append(ERR_RS_ERROR_SENDING_ACK.get( |
| | | localReplicationServer.getServerId(), origServer.getServerId(), |
| | | csn, baseDN.toString())); |
| | | localReplicationServer.getServerId(), origServer.getServerId(), csn, baseDN)); |
| | | mb.append(" "); |
| | | mb.append(stackTraceToSingleLineString(e)); |
| | | logger.error(mb.toMessage()); |
| | |
| | | RoutableMsg msg) |
| | | { |
| | | LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); |
| | | mb.append(ERR_NO_REACHABLE_PEER_IN_THE_DOMAIN.get(baseDN.toString(), msg.getDestination())); |
| | | mb.append(ERR_NO_REACHABLE_PEER_IN_THE_DOMAIN.get(baseDN, msg.getDestination())); |
| | | mb.append(" In Replication Server=").append( |
| | | this.localReplicationServer.getMonitorInstanceName()); |
| | | mb.append(" unroutable message =").append(msg.getClass().getSimpleName()); |
| | |
| | | * Send back an error to the originator of the message. |
| | | */ |
| | | LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); |
| | | mb.append(ERR_NO_REACHABLE_PEER_IN_THE_DOMAIN.get( |
| | | baseDN.toString(), msg.getDestination())); |
| | | mb.append(ERR_NO_REACHABLE_PEER_IN_THE_DOMAIN.get(baseDN, msg.getDestination())); |
| | | mb.append(" unroutable message =" + msg.getClass().getSimpleName()); |
| | | mb.append(" Details: " + ioe.getLocalizedMessage()); |
| | | final LocalizableMessage message = mb.toMessage(); |
| | |
| | | } |
| | | } catch (IOException e) |
| | | { |
| | | logger.error(ERR_EXCEPTION_FORWARDING_RESET_GEN_ID, baseDN.toString(), e.getMessage()); |
| | | logger.error(ERR_EXCEPTION_FORWARDING_RESET_GEN_ID, baseDN, e.getMessage()); |
| | | } |
| | | } |
| | | |
| | |
| | | dsHandler.changeStatusForResetGenId(newGenId); |
| | | } catch (IOException e) |
| | | { |
| | | logger.error(ERR_EXCEPTION_CHANGING_STATUS_AFTER_RESET_GEN_ID, baseDN.toString(), |
| | | logger.error(ERR_EXCEPTION_CHANGING_STATUS_AFTER_RESET_GEN_ID, baseDN, |
| | | dsHandler.getServerId(), e.getMessage()); |
| | | } |
| | | } |
| | |
| | | // treatment. |
| | | sendTopoInfoToAll(); |
| | | |
| | | logger.info(NOTE_RESET_GENERATION_ID, baseDN.toString(), newGenId); |
| | | logger.info(NOTE_RESET_GENERATION_ID, baseDN, newGenId); |
| | | } |
| | | catch(Exception e) |
| | | { |
| | |
| | | enqueueTopoInfoToAllExcept(senderHandler); |
| | | |
| | | logger.info(NOTE_DIRECTORY_SERVER_CHANGED_STATUS, |
| | | senderHandler.getServerId(), baseDN.toString(), newStatus); |
| | | senderHandler.getServerId(), baseDN, newStatus); |
| | | } |
| | | catch(Exception e) |
| | | { |
| | |
| | | catch (IOException e) |
| | | { |
| | | logger.error(ERR_EXCEPTION_CHANGING_STATUS_FROM_STATUS_ANALYZER, |
| | | baseDN.toString(), dsHandler.getServerId(), e.getMessage()); |
| | | baseDN, dsHandler.getServerId(), e.getMessage()); |
| | | } |
| | | |
| | | if (newStatus == ServerStatus.INVALID_STATUS || newStatus == oldStatus) |
| | |
| | | |
| | | if (isDifferentGenerationId(rsHandler.getGenerationId())) |
| | | { |
| | | LocalizableMessage message = |
| | | WARN_BAD_GENERATION_ID_FROM_RS.get(rsHandler.getServerId(), |
| | | rsHandler.session.getReadableRemoteAddress(), rsHandler |
| | | .getGenerationId(), baseDN.toString(), |
| | | getLocalRSServerId(), generationId); |
| | | LocalizableMessage message = WARN_BAD_GENERATION_ID_FROM_RS.get(rsHandler.getServerId(), |
| | | rsHandler.session.getReadableRemoteAddress(), rsHandler.getGenerationId(), |
| | | baseDN, getLocalRSServerId(), generationId); |
| | | logger.warn(message); |
| | | |
| | | ErrorMsg errorMsg = new ErrorMsg(getLocalRSServerId(), |
| | |
| | | if (i == 2) |
| | | { |
| | | logger.error(ERR_EXCEPTION_SENDING_TOPO_INFO, |
| | | baseDN.toString(), type, handler.getServerId(), |
| | | e.getMessage()); |
| | | baseDN, type, handler.getServerId(), e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | logger.debug(INFO_REPLICATION_SERVER_CONNECTION_TO_RS, getReplicationServerId(), getServerId(), |
| | | replicationServerDomain.getBaseDN().toString(), |
| | | session.getReadableRemoteAddress()); |
| | | replicationServerDomain.getBaseDN(), session.getReadableRemoteAddress()); |
| | | |
| | | super.finalizeStart(); |
| | | } |
| | |
| | | replicationServerDomain.receiveTopoInfoFromRS(inTopoMsg, this, false); |
| | | |
| | | logger.debug(INFO_REPLICATION_SERVER_CONNECTION_FROM_RS, getReplicationServerId(), getServerId(), |
| | | replicationServerDomain.getBaseDN().toString(), |
| | | session.getReadableRemoteAddress()); |
| | | replicationServerDomain.getBaseDN(), session.getReadableRemoteAddress()); |
| | | |
| | | super.finalizeStart(); |
| | | } |
| | |
| | | { |
| | | throw new ChangelogException( |
| | | ERR_EXCEPTION_COULD_NOT_ADD_CHANGE_TO_REPLICA_DB.get( |
| | | change.toString(), String.valueOf(baseDN), |
| | | String.valueOf(serverId), stackTraceToSingleLineString(e))); |
| | | change, baseDN, serverId, stackTraceToSingleLineString(e))); |
| | | } |
| | | finally |
| | | { |
| | |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return serverId + " " + baseDN.toString(); |
| | | return serverId + " " + baseDN; |
| | | } |
| | | |
| | | /** Hold a cursor and an indicator of wether the cursor should be considered as empty. */ |
| | |
| | | final int rsServerId = rs.rsInfo.getServerId(); |
| | | if (rsGenId == getGenerationID() || rsGenId == -1) |
| | | { |
| | | logger.info(NOTE_NOW_FOUND_SAME_GENERATION_CHANGELOG, serverId, rsServerId, baseDN.toString(), |
| | | logger.info(NOTE_NOW_FOUND_SAME_GENERATION_CHANGELOG, serverId, rsServerId, baseDN, |
| | | rs.replicationServer, getGenerationID()); |
| | | } |
| | | else |
| | | { |
| | | logger.warn(WARN_NOW_FOUND_BAD_GENERATION_CHANGELOG, serverId, rsServerId, baseDN.toString(), |
| | | logger.warn(WARN_NOW_FOUND_BAD_GENERATION_CHANGELOG, serverId, rsServerId, baseDN, |
| | | rs.replicationServer, getGenerationID(), rsGenId); |
| | | } |
| | | } |
| | |
| | | |
| | | if (rsInfos.size() > 0) |
| | | { |
| | | logger.warn(WARN_COULD_NOT_FIND_CHANGELOG, serverId, baseDN.toString(), |
| | | logger.warn(WARN_COULD_NOT_FIND_CHANGELOG, serverId, baseDN, |
| | | Utils.joinAsString(", ", rsInfos.keySet())); |
| | | } |
| | | else |
| | | { |
| | | logger.warn(WARN_NO_AVAILABLE_CHANGELOGS, serverId, baseDN.toString()); |
| | | logger.warn(WARN_NO_AVAILABLE_CHANGELOGS, serverId, baseDN); |
| | | } |
| | | } |
| | | } |
| | |
| | | with the right group id shows up. |
| | | */ |
| | | logger.warn(WARN_CONNECTED_TO_SERVER_WITH_WRONG_GROUP_ID, |
| | | groupId, rs.getServerId(), rsInfo.getServerURL(), rs.getGroupId(), |
| | | baseDN.toString(), getServerId()); |
| | | groupId, rs.getServerId(), rsInfo.getServerURL(), rs.getGroupId(), baseDN, getServerId()); |
| | | } |
| | | startRSHeartBeatMonitoring(rs); |
| | | if (rsInfo.getProtocolVersion() >= |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | logger.error(ERR_COMPUTING_FAKE_OPS, baseDN.toString(), rsInfo.getServerURL(), |
| | | logger.error(ERR_COMPUTING_FAKE_OPS, baseDN, rsInfo.getServerURL(), |
| | | e.getLocalizedMessage() + " " + stackTraceToSingleLineString(e)); |
| | | } |
| | | finally |
| | |
| | | final DN repDN = replServerInfo.getBaseDN(); |
| | | if (!getBaseDN().equals(repDN)) |
| | | { |
| | | errorMessage = ERR_DS_DN_DOES_NOT_MATCH.get( |
| | | repDN.toString(), getBaseDN().toString()); |
| | | errorMessage = ERR_DS_DN_DOES_NOT_MATCH.get(repDN, getBaseDN()); |
| | | return setConnectedRS(ConnectedRS.noConnectedRS()); |
| | | } |
| | | |
| | |
| | | } |
| | | catch (ConnectException e) |
| | | { |
| | | errorMessage = WARN_NO_CHANGELOG_SERVER_LISTENING.get(getServerId(), |
| | | serverURL, getBaseDN().toString()); |
| | | errorMessage = WARN_NO_CHANGELOG_SERVER_LISTENING.get(getServerId(), serverURL, getBaseDN()); |
| | | } |
| | | catch (SocketTimeoutException e) |
| | | { |
| | | errorMessage = WARN_TIMEOUT_CONNECTING_TO_RS.get(getServerId(), |
| | | serverURL, getBaseDN().toString()); |
| | | errorMessage = WARN_TIMEOUT_CONNECTING_TO_RS.get(getServerId(), serverURL, getBaseDN()); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | errorMessage = WARN_EXCEPTION_STARTING_SESSION_PHASE.get(getServerId(), |
| | | serverURL, getBaseDN().toString(), |
| | | stackTraceToSingleLineString(e)); |
| | | errorMessage = WARN_EXCEPTION_STARTING_SESSION_PHASE.get( |
| | | getServerId(), serverURL, getBaseDN(), stackTraceToSingleLineString(e)); |
| | | } |
| | | finally |
| | | { |
| | |
| | | catch (Exception e) |
| | | { |
| | | logger.error(WARN_EXCEPTION_STARTING_SESSION_PHASE, |
| | | getServerId(), electedRS.rsInfo.getServerURL(), |
| | | getBaseDN().toString(), stackTraceToSingleLineString(e)); |
| | | getServerId(), electedRS.rsInfo.getServerURL(), getBaseDN(), stackTraceToSingleLineString(e)); |
| | | |
| | | setConnectedRS(ConnectedRS.noConnectedRS()); |
| | | return null; |
| | |
| | | catch (Exception e) |
| | | { |
| | | logger.error(NOTE_EXCEPTION_RESTARTING_SESSION, |
| | | getBaseDN().toString(), e.getLocalizedMessage() + " " + stackTraceToSingleLineString(e)); |
| | | getBaseDN(), e.getLocalizedMessage() + " " + stackTraceToSingleLineString(e)); |
| | | } |
| | | |
| | | if (rs.isConnected() || !infiniteTry) |
| | |
| | | { |
| | | // RS performs a proper disconnection |
| | | logger.warn(WARN_REPLICATION_SERVER_PROPERLY_DISCONNECTED, previousRsServerID, rs.replicationServer, |
| | | serverId, baseDN.toString()); |
| | | serverId, baseDN); |
| | | |
| | | // Try to find a suitable RS |
| | | reStart(rs.session, true); |
| | |
| | | if (bestServerInfo == null) |
| | | { |
| | | message = NOTE_LOAD_BALANCE_REPLICATION_SERVER.get( |
| | | serverId, previousRsServerID, rs.replicationServer, |
| | | baseDN.toString()); |
| | | serverId, previousRsServerID, rs.replicationServer, baseDN); |
| | | } |
| | | else |
| | | { |
| | | final int bestRsServerId = bestServerInfo.getServerId(); |
| | | message = NOTE_NEW_BEST_REPLICATION_SERVER.get( |
| | | serverId, previousRsServerID, rs.replicationServer, |
| | | bestRsServerId, |
| | | baseDN.toString(), |
| | | serverId, previousRsServerID, rs.replicationServer, bestRsServerId, baseDN, |
| | | evals.getEvaluation(previousRsServerID), |
| | | evals.getEvaluation(bestRsServerId)); |
| | | } |
| | |
| | | { |
| | | // We did not initiate the close on our side, log an error message. |
| | | logger.error(WARN_REPLICATION_SERVER_BADLY_DISCONNECTED, |
| | | serverId, baseDN.toString(), previousRsServerID, |
| | | rs.replicationServer); |
| | | serverId, baseDN, previousRsServerID, rs.replicationServer); |
| | | } |
| | | |
| | | if (!reconnectOnFailure) |
| | |
| | | new ChangeStatusMsg(ServerStatus.INVALID_STATUS, newStatus)); |
| | | } catch (IOException ex) |
| | | { |
| | | logger.error(ERR_EXCEPTION_SENDING_CS, getBaseDN().toString(), |
| | | getServerId(), ex.getLocalizedMessage() + " " + stackTraceToSingleLineString(ex)); |
| | | logger.error(ERR_EXCEPTION_SENDING_CS, getBaseDN(), getServerId(), |
| | | ex.getLocalizedMessage() + " " + stackTraceToSingleLineString(ex)); |
| | | } |
| | | } |
| | | |
| | |
| | | import java.io.OutputStream; |
| | | import java.security.MessageDigest; |
| | | import java.util.Arrays; |
| | | import java.util.LinkedList; |
| | | import java.util.List; |
| | | |
| | | import javax.crypto.Mac; |
| | | import javax.naming.directory.SearchControls; |
| | |
| | | import org.opends.admin.ads.ADSContext; |
| | | import org.opends.admin.ads.util.ConnectionUtils; |
| | | import org.opends.server.TestCaseUtils; |
| | | import org.opends.server.config.ConfigConstants; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import org.opends.server.protocols.internal.InternalSearchOperation; |
| | | import org.opends.server.protocols.internal.SearchRequest; |
| | | import static org.opends.server.protocols.internal.Requests.*; |
| | | import org.opends.server.types.CryptoManager; |
| | | import org.opends.server.types.CryptoManagerException; |
| | | import org.opends.server.types.DN; |
| | |
| | | |
| | | import com.forgerock.opendj.cli.CliConstants; |
| | | |
| | | import static org.opends.server.config.ConfigConstants.*; |
| | | import static org.opends.server.protocols.internal.InternalClientConnection.*; |
| | | import static org.opends.server.protocols.internal.Requests.*; |
| | | import static org.testng.Assert.*; |
| | | |
| | | /** |
| | |
| | | |
| | | // TODO: other-than-default MAC |
| | | |
| | | /** |
| | | Cipher parameters |
| | | */ |
| | | private class CipherParameters { |
| | | private final String fAlgorithm; |
| | | private final String fMode; |
| | | private final String fPadding; |
| | | private final int fKeyLength; |
| | | private final int fIVLength; |
| | | |
| | | public CipherParameters(final String algorithm, final String mode, |
| | | final String padding, final int keyLength, |
| | | final int ivLength) { |
| | | final String padding, final int keyLength) { |
| | | fAlgorithm = algorithm; |
| | | fMode = mode; |
| | | fPadding = padding; |
| | | fKeyLength = keyLength; |
| | | fIVLength = ivLength; |
| | | } |
| | | |
| | | public String getTransformation() { |
| | | if (null == fAlgorithm) return null; // default |
| | | return (null == fMode) |
| | | ? fAlgorithm |
| | | : (new StringBuilder(fAlgorithm)).append("/").append(fMode) |
| | | .append("/").append(fPadding).toString(); |
| | | if (null != fAlgorithm) |
| | | { |
| | | return fMode != null |
| | | ? fAlgorithm + "/" + fMode + "/" + fPadding |
| | | : fAlgorithm; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public int getKeyLength() { |
| | | return fKeyLength; |
| | | } |
| | | |
| | | public int getIVLength() { |
| | | return fIVLength; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @DataProvider(name = "cipherParametersData") |
| | | public Object[][] cipherParametersData() { |
| | | |
| | | List<CipherParameters> paramList = new LinkedList<CipherParameters>(); |
| | | return new Object[][] { |
| | | // default (preferred) AES/CBC/PKCS5Padding 128bit key. |
| | | paramList.add(new CipherParameters(null, null, null, 128, 128)); |
| | | { new CipherParameters(null, null, null, 128) }, |
| | | // custom |
| | | // TODO: https://opends.dev.java.net/issues/show_bug.cgi?id=2448 |
| | | // TODO: paramList.add(new CipherParameters("Blowfish", "CFB", "NoPadding", 448, 64)); |
| | | // TODO: paramList.add(new CipherParameters("AES", "CBC", "PKCS5Padding", 256, 64)); |
| | | paramList.add(new CipherParameters("AES", "CFB", "NoPadding", 128, 64)); |
| | | paramList.add(new CipherParameters("Blowfish", "CFB", "NoPadding", 128, 64)); |
| | | paramList.add(new CipherParameters("RC4", null, null, 104, 0)); |
| | | paramList.add(new CipherParameters("RC4", "NONE", "NoPadding", 128, 0)); |
| | | paramList.add(new CipherParameters("DES", "CFB", "NoPadding", 56, 64)); |
| | | paramList.add(new CipherParameters("DESede", "ECB", "PKCS5Padding", 168, 64)); |
| | | |
| | | Object[][] cipherParameters = new Object[paramList.size()][1]; |
| | | for (int i=0; i < paramList.size(); i++) |
| | | { |
| | | cipherParameters[i] = new Object[] { paramList.get(i) }; |
| | | } |
| | | |
| | | return cipherParameters; |
| | | // TODO: { new CipherParameters("Blowfish", "CFB", "NoPadding", 448) }, |
| | | // TODO: { new CipherParameters("AES", "CBC", "PKCS5Padding", 256) }, |
| | | { new CipherParameters("AES", "CFB", "NoPadding", 128) }, |
| | | { new CipherParameters("Blowfish", "CFB", "NoPadding", 128) }, |
| | | { new CipherParameters("RC4", null, null, 104) }, |
| | | { new CipherParameters("RC4", "NONE", "NoPadding", 128) }, |
| | | { new CipherParameters("DES", "CFB", "NoPadding", 56) }, |
| | | { new CipherParameters("DESede", "ECB", "PKCS5Padding", 168) }, |
| | | }; |
| | | } |
| | | |
| | | |
| | |
| | | final String baseDNStr // TODO: is this DN defined elsewhere as a constant? |
| | | = "cn=secret keys," + ADSContext.getAdministrationSuffixDN(); |
| | | final DN baseDN = DN.valueOf(baseDNStr); |
| | | final String FILTER_OC_INSTANCE_KEY |
| | | = new StringBuilder("(objectclass=") |
| | | .append(ConfigConstants.OC_CRYPTO_CIPHER_KEY) |
| | | .append(")").toString(); |
| | | final String FILTER_OC_INSTANCE_KEY = "(objectclass=" + OC_CRYPTO_CIPHER_KEY + ")"; |
| | | final String FILTER_NOT_COMPROMISED = new StringBuilder("(!(") |
| | | .append(ConfigConstants.ATTR_CRYPTO_KEY_COMPROMISED_TIME) |
| | | .append(ATTR_CRYPTO_KEY_COMPROMISED_TIME) |
| | | .append("=*))").toString(); |
| | | final String FILTER_CIPHER_TRANSFORMATION_NAME = new StringBuilder("(") |
| | | .append(ConfigConstants.ATTR_CRYPTO_CIPHER_TRANSFORMATION_NAME) |
| | | .append(ATTR_CRYPTO_CIPHER_TRANSFORMATION_NAME) |
| | | .append("=").append(cipherTransformationName) |
| | | .append(")").toString(); |
| | | final String FILTER_CIPHER_KEY_LENGTH = new StringBuilder("(") |
| | | .append(ConfigConstants.ATTR_CRYPTO_KEY_LENGTH_BITS) |
| | | .append(ATTR_CRYPTO_KEY_LENGTH_BITS) |
| | | .append("=").append(String.valueOf(cipherKeyLength)) |
| | | .append(")").toString(); |
| | | final String searchFilter = new StringBuilder("(&") |
| | |
| | | String compromisedTime = TimeThread.getGeneralizedTime(); |
| | | for (Entry e : searchOp.getSearchEntries()) { |
| | | TestCaseUtils.applyModifications(true, |
| | | "dn: " + e.getName().toString(), |
| | | "dn: " + e.getName(), |
| | | "changetype: modify", |
| | | "replace: " + ConfigConstants.ATTR_CRYPTO_KEY_COMPROMISED_TIME, |
| | | ConfigConstants.ATTR_CRYPTO_KEY_COMPROMISED_TIME + ": " |
| | | + compromisedTime); |
| | | "replace: " + ATTR_CRYPTO_KEY_COMPROMISED_TIME, |
| | | ATTR_CRYPTO_KEY_COMPROMISED_TIME + ": " + compromisedTime); |
| | | } |
| | | //Wait so the above asynchronous modification can be applied. The crypto |
| | | //manager's cipherKeyEntryCache needs to be updated before the encrypt() |
| | |
| | | // 3. Delete the compromised entry(ies) and ensure ciphertext produced |
| | | // using a compromised key can no longer be decrypted. |
| | | for (Entry e : searchOp.getSearchEntries()) { |
| | | TestCaseUtils.applyModifications(true, |
| | | "dn: " + e.getName().toString(), "changetype: delete"); |
| | | TestCaseUtils.applyModifications(true, "dn: " + e.getName(), "changetype: delete"); |
| | | } |
| | | Thread.sleep(1000); // Clearing the cache is asynchronous. |
| | | try { |