1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.boot.atna;
18
19 import org.openehealth.ipf.commons.audit.AuditContext;
20 import org.openehealth.ipf.commons.audit.DefaultAuditContext;
21 import org.springframework.beans.factory.annotation.Value;
22 import org.springframework.boot.actuate.security.AbstractAuthenticationAuditListener;
23 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
24 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
25 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
26 import org.springframework.boot.context.properties.ConfigurationProperties;
27 import org.springframework.boot.context.properties.EnableConfigurationProperties;
28 import org.springframework.context.annotation.Bean;
29 import org.springframework.context.annotation.Configuration;
30
31
32
33
34 @Configuration
35 @EnableConfigurationProperties(IpfAtnaConfigurationProperties.class)
36 public class IpfAtnaAutoConfiguration {
37
38
39 @Bean
40 @ConfigurationProperties(prefix = "ipf.atna")
41 @ConditionalOnMissingBean
42 public AuditContext atnaAuditorModuleConfig(IpfAtnaConfigurationProperties config,
43 @Value("${spring.application.name}") String appName) throws Exception {
44 DefaultAuditContext auditContext = new DefaultAuditContext();
45 auditContext.setAuditEnabled(config.isAuditEnabled());
46 auditContext.setAuditSourceId(appName);
47 auditContext.setAuditEnterpriseSiteId(config.getAuditEnterpriseSiteId());
48 auditContext.setAuditRepositoryHost(config.getAuditRepositoryHost());
49 auditContext.setAuditRepositoryPort(config.getAuditRepositoryPort());
50 auditContext.setAuditSource(config.getAuditSourceType());
51 auditContext.setSendingApplication(config.getAuditSendingApplication());
52 auditContext.setIncludeParticipantsFromResponse(config.isIncludeParticipantsFromResponse());
53 auditContext.setAuditRepositoryTransport(config.getAuditRepositoryTransport());
54
55 if (config.getAuditQueueClass() != null) {
56 auditContext.setAuditMessageQueue(config.getAuditQueueClass().newInstance());
57 }
58
59 if (config.getAuditExceptionHandlerClass() != null) {
60 auditContext.setAuditExceptionHandler(config.getAuditExceptionHandlerClass().newInstance());
61 }
62
63 if (config.getAuditSenderClass() != null) {
64 auditContext.setAuditTransmissionProtocol(config.getAuditSenderClass().newInstance());
65 }
66
67 if (config.getAuditMessagePostProcessorClass() != null) {
68 auditContext.setAuditMessagePostProcessor(config.getAuditMessagePostProcessorClass().newInstance());
69 }
70
71 return auditContext;
72 }
73
74
75 @Bean
76 @ConditionalOnProperty(value = "ipf.atna.auditor-enabled")
77 @ConditionalOnMissingBean
78 ApplicationStartEventListener applicationStartEventListener(AuditContext auditContext) {
79 return new ApplicationStartEventListener(auditContext);
80 }
81
82 @Bean
83 @ConditionalOnProperty(value = "ipf.atna.auditor-enabled")
84 @ConditionalOnMissingBean
85 ApplicationStopEventListener applicationStopEventListener(AuditContext auditContext) {
86 return new ApplicationStopEventListener(auditContext);
87 }
88
89 @Bean
90 @ConditionalOnProperty(value = "ipf.atna.auditor-enabled")
91 @ConditionalOnClass(name = "org.springframework.security.authentication.event.AbstractAuthenticationEvent")
92 @ConditionalOnMissingBean(AbstractAuthenticationAuditListener.class)
93 AuthenticationListener loginListener(AuditContext auditContext) {
94 return new AuthenticationListener(auditContext);
95 }
96
97 }