public DefaultConfigStoreCachePolicy() { OptionsParameter param = OptionsManager.getInstance().getParameter(WS_CERT_RESOLVER_MAX_CACHE_SIZE); maxItems = OptionsParameter.getParamValueAsInteger(param, DEFAULT_WS_MAX_CAHCE_ITEMS); param = OptionsManager.getInstance().getParameter(WS_CERT_RESOLVER_CACHE_TTL); subjectTTL = OptionsParameter.getParamValueAsInteger(param, DEFAULT_WS_TTL); }
/** {@inheritDoc} */ @Override public void init() throws MessagingException { LOGGER.info("Initializing NHINDSecurityAndTrustMailet"); super.init(); // set the outbound policy for notifications if possible try { final boolean useOutboundPolicy = Boolean.parseBoolean( GatewayConfiguration.getConfigurationParam( SecurityAndTrustMailetOptions.USE_OUTGOING_POLICY_FOR_INCOMING_NOTIFICATIONS, this, "false")); // we don't know if this parameter came from the mailet config or the options manager, so just // go ahead and set it at // the options manager level because that it where the agent reads the value... no danger that // we will overwrite the value that we want... // we would just be writing the same value if the information came from the options manager // module // the mailet parameter gets precedence, so we want to overwrite the options manager if the // value exists in the mailet configuration OptionsManager.getInstance() .setOptionsParameter( new OptionsParameter( OptionsParameter.USE_OUTGOING_POLICY_FOR_INCOMING_NOTIFICATIONS, Boolean.toString(useOutboundPolicy))); } catch (Exception e) { // log a warning that the parameter could not be set } // set the rejection policy for tampered routing headers try { final boolean rejectOnTamperPolicy = Boolean.parseBoolean( GatewayConfiguration.getConfigurationParam( SecurityAndTrustMailetOptions.REJECT_ON_ROUTING_TAMPER, this, "false")); OptionsManager.getInstance() .setOptionsParameter( new OptionsParameter( OptionsParameter.REJECT_ON_ROUTING_TAMPER, Boolean.toString(rejectOnTamperPolicy))); } catch (Exception e) { // log a warning that the parameter could not be set } // set the JCE providers if available final String JCEName = GatewayConfiguration.getConfigurationParam( SecurityAndTrustMailetOptions.JCE_PROVIDER_NAME, this, ""); if (!StringUtils.isEmpty(JCEName)) OptionsManager.getInstance() .setOptionsParameter(new OptionsParameter(OptionsParameter.JCE_PROVIDER, JCEName)); final String sensitiveJCEName = GatewayConfiguration.getConfigurationParam( SecurityAndTrustMailetOptions.JCE_SENTITIVE_PROVIDER, this, ""); if (!StringUtils.isEmpty(sensitiveJCEName)) OptionsManager.getInstance() .setOptionsParameter( new OptionsParameter(OptionsParameter.JCE_SENTITIVE_PROVIDER, sensitiveJCEName)); // Get the configuration URL final String configURLParam = getInitParameter(SecurityAndTrustMailetOptions.CONFIG_URL_PARAM); if (StringUtils.isEmpty(configURLParam)) { LOGGER.error("NHINDSecurityAndTrustMailet Configuration URL cannot be empty or null."); throw new MessagingException( "NHINDSecurityAndTrustMailet Configuration URL cannot be empty or null."); } // parse into a URL and validate it is properly formed URL configURL = null; try { configURL = new URL(configURLParam); } catch (MalformedURLException ex) { LOGGER.error("Invalid configuration URL:" + ex.getMessage(), ex); throw new MessagingException( "NHINDSecurityAndTrustMailet Configuration URL cannot be empty or null.", ex); } final Collection<Module> modules = getInitModules(); Provider<SmtpAgentConfig> configProvider; try { configProvider = this.getConfigProvider(); if (configProvider == null) configProvider = createCompatConfigProvider(configURL); if (configProvider instanceof URLAccessedConfigProvider) ((URLAccessedConfigProvider) configProvider).setConfigURL(configURL); final Provider<ServiceSecurityManager> srvSecMgr = getServiceSecurityManagerProvider(); if (configProvider instanceof SecureURLAccessedConfigProvider) ((SecureURLAccessedConfigProvider) configProvider).setServiceSecurityManager(srvSecMgr); final Provider<KeyStoreProtectionManager> keyStoreManagerProvider = getKeyStoreManagerProvider(); if (configProvider instanceof KeyStoreProtectionConfigProvider && keyStoreManagerProvider != null) ((KeyStoreProtectionConfigProvider) configProvider) .setKeyStoreProtectionManger(keyStoreManagerProvider); agent = SmtpAgentFactory.createAgent(configURL, configProvider, null, modules); } catch (SmtpAgentException e) { LOGGER.error("Failed to create the SMTP agent: " + e.getMessage(), e); throw new MessagingException("Failed to create the SMTP agent: " + e.getMessage(), e); } // this should never happen because an exception should be thrown by Guice or one of the // providers, but check // just in case... /// CLOVER:OFF if (agent == null) { LOGGER.error("Failed to create the SMTP agent. Reason unknown."); throw new MessagingException("Failed to create the SMTP agent. Reason unknown."); } /// CLOVER:ON // get the DSN creation options // default is RELIABLE_DSN_OPTION final String dnsCreateOptions = GatewayConfiguration.getConfigurationParam( SecurityAndTrustMailetOptions.AUTO_DSN_FAILURE_CREATION_PARAM, this, RELIABLE_DSN_OPTION); for (String dsnOption : dnsCreateOptions.split(",")) { if (dsnOption.equalsIgnoreCase(RELIABLE_DSN_OPTION)) autoDSNForTimelyAndReliable = true; else if (dsnOption.equalsIgnoreCase(GENERAL_DSN_OPTION)) autoDSNForGeneral = true; } // set the agent and config in the Gateway state final GatewayState gwState = GatewayState.getInstance(); if (gwState.isAgentSettingManagerRunning()) gwState.stopAgentSettingsManager(); gwState.setSmtpAgent(agent); gwState.setSmptAgentConfig( SmptAgentConfigFactory.createSmtpAgentConfig(configURL, configProvider, null)); gwState.startAgentSettingsManager(); LOGGER.info("NHINDSecurityAndTrustMailet initialization complete."); }