Search in sources :

Example 1 with SmtpAgentConfig

use of org.nhindirect.gateway.smtp.config.SmtpAgentConfig in project nhin-d by DirectProject.

the class NHINDSecurityAndTrustMailet method createCompatConfigProvider.

protected Provider<SmtpAgentConfig> createCompatConfigProvider(URL configURL) {
    Provider<SmtpAgentConfig> provider;
    if (configURL.getProtocol().equalsIgnoreCase("HTTP") || configURL.getProtocol().equalsIgnoreCase("HTTPS")) {
        // web services based
        provider = new WSSmtpAgentConfigProvider(configURL, null);
    } else {
        // use the default XML configuration
        // convert URL to file location
        File fl = FileUtils.toFile(configURL);
        provider = new XMLSmtpAgentConfigProvider(fl.getAbsolutePath(), null);
    }
    return provider;
}
Also used : WSSmtpAgentConfigProvider(org.nhindirect.gateway.smtp.provider.WSSmtpAgentConfigProvider) XMLSmtpAgentConfigProvider(org.nhindirect.gateway.smtp.provider.XMLSmtpAgentConfigProvider) File(java.io.File) SmtpAgentConfig(org.nhindirect.gateway.smtp.config.SmtpAgentConfig)

Example 2 with SmtpAgentConfig

use of org.nhindirect.gateway.smtp.config.SmtpAgentConfig in project nhin-d by DirectProject.

the class SmtpAgentFactory_CreateAgent_Test method testCreateDefaultAgent_XMLConfigurationProvider_AuditorModule.

public void testCreateDefaultAgent_XMLConfigurationProvider_AuditorModule() throws Exception {
    Provider<SmtpAgentConfig> configProvider = new XMLSmtpAgentConfigProvider(TestUtils.getTestConfigFile("ValidConfig.xml"), new MockNHINDAgentProvider(Arrays.asList("mydomain")));
    SmtpAgent agent = SmtpAgentFactory.createAgent(null, configProvider, new MockNHINDAgentProvider(Arrays.asList("mydomain")), Arrays.asList(FileAuditorModule.create("target/AuditFile.txt")));
    assertNotNull(agent);
    assertNotNull(agent.getAgent());
    assertTrue(agent.getAgent() instanceof MockNHINDAgent);
    DefaultSmtpAgent smtpAgent = (DefaultSmtpAgent) agent;
    assertNotNull(smtpAgent.getAuditor());
    assertTrue(smtpAgent.getAuditor() instanceof FileAuditor);
}
Also used : MockNHINDAgent(org.nhindirect.stagent.MockNHINDAgent) XMLSmtpAgentConfigProvider(org.nhindirect.gateway.smtp.provider.XMLSmtpAgentConfigProvider) MockNHINDAgentProvider(org.nhindirect.stagent.provider.MockNHINDAgentProvider) SmtpAgentConfig(org.nhindirect.gateway.smtp.config.SmtpAgentConfig) FileAuditor(org.nhindirect.common.audit.impl.FileAuditor)

Example 3 with SmtpAgentConfig

use of org.nhindirect.gateway.smtp.config.SmtpAgentConfig in project nhin-d by DirectProject.

the class SmtpAgentFactory_CreateAgent_Test method testCreateDefaultAgent_XMLConfigurationProvider_MockAgent.

public void testCreateDefaultAgent_XMLConfigurationProvider_MockAgent() throws Exception {
    Provider<SmtpAgentConfig> configProvider = new XMLSmtpAgentConfigProvider(TestUtils.getTestConfigFile("ValidConfig.xml"), new MockNHINDAgentProvider(Arrays.asList("mydomain")));
    SmtpAgent agent = SmtpAgentFactory.createAgent(null, configProvider, new MockNHINDAgentProvider(Arrays.asList("mydomain")));
    assertNotNull(agent);
    assertNotNull(agent.getAgent());
    assertTrue(agent.getAgent() instanceof MockNHINDAgent);
}
Also used : MockNHINDAgent(org.nhindirect.stagent.MockNHINDAgent) XMLSmtpAgentConfigProvider(org.nhindirect.gateway.smtp.provider.XMLSmtpAgentConfigProvider) MockNHINDAgentProvider(org.nhindirect.stagent.provider.MockNHINDAgentProvider) SmtpAgentConfig(org.nhindirect.gateway.smtp.config.SmtpAgentConfig)

Example 4 with SmtpAgentConfig

use of org.nhindirect.gateway.smtp.config.SmtpAgentConfig in project nhin-d by DirectProject.

the class SmtpAgentFactory method buildAgentInjector.

/*
	 * Creates an injector for getting SmtpAgent instances
	 */
protected static Injector buildAgentInjector(URL configLocation, Provider<SmtpAgentConfig> configProvider, Provider<NHINDAgent> agentProvider) {
    Injector configInjector = Guice.createInjector(SmtpAgentConfigModule.create(configLocation, configProvider, agentProvider));
    SmtpAgentConfig config = configInjector.getInstance(SmtpAgentConfig.class);
    return config.getAgentInjector();
}
Also used : Injector(com.google.inject.Injector) SmtpAgentConfig(org.nhindirect.gateway.smtp.config.SmtpAgentConfig)

Example 5 with SmtpAgentConfig

use of org.nhindirect.gateway.smtp.config.SmtpAgentConfig in project nhin-d by DirectProject.

the class NHINDSecurityAndTrustMailet method init.

/**
	 * {@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);
    }
    ///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.");
}
Also used : MalformedURLException(java.net.MalformedURLException) SmtpAgentException(org.nhindirect.gateway.smtp.SmtpAgentException) MessagingException(javax.mail.MessagingException) KeyStoreProtectionManager(org.nhindirect.common.crypto.KeyStoreProtectionManager) MessagingException(javax.mail.MessagingException) InvocationTargetException(java.lang.reflect.InvocationTargetException) SmtpAgentException(org.nhindirect.gateway.smtp.SmtpAgentException) MalformedURLException(java.net.MalformedURLException) ServiceException(org.nhindirect.common.rest.exceptions.ServiceException) URL(java.net.URL) SmtpAgentConfig(org.nhindirect.gateway.smtp.config.SmtpAgentConfig) OptionsParameter(org.nhindirect.stagent.options.OptionsParameter) ServiceSecurityManager(org.nhindirect.common.rest.ServiceSecurityManager) GatewayState(org.nhindirect.gateway.smtp.GatewayState) SecureURLAccessedConfigProvider(org.nhindirect.gateway.smtp.provider.SecureURLAccessedConfigProvider) URLAccessedConfigProvider(org.nhindirect.gateway.smtp.provider.URLAccessedConfigProvider) SecureURLAccessedConfigProvider(org.nhindirect.gateway.smtp.provider.SecureURLAccessedConfigProvider) Module(com.google.inject.Module) AuditorModule(org.nhindirect.gateway.smtp.module.AuditorModule) KeyStoreProtectionConfigProvider(org.nhindirect.gateway.smtp.provider.KeyStoreProtectionConfigProvider)

Aggregations

SmtpAgentConfig (org.nhindirect.gateway.smtp.config.SmtpAgentConfig)7 XMLSmtpAgentConfigProvider (org.nhindirect.gateway.smtp.provider.XMLSmtpAgentConfigProvider)4 File (java.io.File)2 WSSmtpAgentConfigProvider (org.nhindirect.gateway.smtp.provider.WSSmtpAgentConfigProvider)2 MockNHINDAgent (org.nhindirect.stagent.MockNHINDAgent)2 MockNHINDAgentProvider (org.nhindirect.stagent.provider.MockNHINDAgentProvider)2 Injector (com.google.inject.Injector)1 Module (com.google.inject.Module)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 MalformedURLException (java.net.MalformedURLException)1 URL (java.net.URL)1 MessagingException (javax.mail.MessagingException)1 FileAuditor (org.nhindirect.common.audit.impl.FileAuditor)1 KeyStoreProtectionManager (org.nhindirect.common.crypto.KeyStoreProtectionManager)1 ServiceSecurityManager (org.nhindirect.common.rest.ServiceSecurityManager)1 ServiceException (org.nhindirect.common.rest.exceptions.ServiceException)1 GatewayState (org.nhindirect.gateway.smtp.GatewayState)1 SmtpAgentException (org.nhindirect.gateway.smtp.SmtpAgentException)1 AuditorModule (org.nhindirect.gateway.smtp.module.AuditorModule)1 KeyStoreProtectionConfigProvider (org.nhindirect.gateway.smtp.provider.KeyStoreProtectionConfigProvider)1