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;
}
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);
}
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);
}
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();
}
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.");
}
Aggregations