1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.console;
20
21 import com.giffing.wicket.spring.boot.starter.web.config.WicketWebInitializerAutoConfig.WebSocketWicketWebInitializerAutoConfiguration;
22 import java.util.List;
23 import java.util.Map;
24 import org.apache.syncope.client.console.commons.AccessPolicyConfProvider;
25 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionLinksProvider;
26 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionsProvider;
27 import org.apache.syncope.client.console.commons.AnyWizardBuilderAdditionalSteps;
28 import org.apache.syncope.client.console.commons.ExternalResourceProvider;
29 import org.apache.syncope.client.console.commons.ImplementationInfoProvider;
30 import org.apache.syncope.client.console.commons.PolicyTabProvider;
31 import org.apache.syncope.client.console.commons.StatusProvider;
32 import org.apache.syncope.client.console.commons.VirSchemaDetailsPanelProvider;
33 import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
34 import org.apache.syncope.client.console.wizards.any.UserFormFinalizer;
35 import org.apache.syncope.client.ui.commons.actuate.SyncopeCoreHealthIndicator;
36 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
37 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
38 import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStart;
39 import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStop;
40 import org.apache.wicket.request.resource.IResource;
41 import org.springframework.boot.autoconfigure.SpringBootApplication;
42 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
43 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
44 import org.springframework.boot.builder.SpringApplicationBuilder;
45 import org.springframework.boot.context.properties.EnableConfigurationProperties;
46 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
47 import org.springframework.context.annotation.Bean;
48
49 @SpringBootApplication(proxyBeanMethods = false)
50 @EnableConfigurationProperties(ConsoleProperties.class)
51 public class SyncopeConsoleApplication extends SpringBootServletInitializer {
52
53 public static void main(final String[] args) {
54 new SpringApplicationBuilder(SyncopeConsoleApplication.class).
55 properties("spring.config.name:console").
56 build().run(args);
57 }
58
59 @Override
60 protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
61 return builder.properties(Map.of(
62 WebSocketWicketWebInitializerAutoConfiguration.REGISTER_SERVER_ENDPOINT_ENABLED, false,
63 "spring.config.name", "console")).
64 sources(SyncopeConsoleApplication.class);
65 }
66
67 @ConditionalOnMissingBean
68 @Bean
69 public SyncopeWebApplication syncopeWebApplication(
70 final ConsoleProperties props,
71 final ClassPathScanImplementationLookup lookup,
72 final ServiceOps serviceOps,
73 final ExternalResourceProvider resourceProvider,
74 final AnyDirectoryPanelAdditionalActionsProvider anyDirectoryPanelAdditionalActionsProvider,
75 final AnyDirectoryPanelAdditionalActionLinksProvider anyDirectoryPanelAdditionalActionLinksProvider,
76 final AnyWizardBuilderAdditionalSteps anyWizardBuilderAdditionalSteps,
77 final StatusProvider statusProvider,
78 final VirSchemaDetailsPanelProvider virSchemaDetailsPanelProvider,
79 final ImplementationInfoProvider implementationInfoProvider,
80 final AccessPolicyConfProvider accessPolicyConfProvider,
81 final List<PolicyTabProvider> policyTabProviders,
82 final List<UserFormFinalizer> userFormFinalizers,
83 final List<IResource> resources) {
84
85 return new SyncopeWebApplication(
86 props,
87 lookup,
88 serviceOps,
89 resourceProvider,
90 anyDirectoryPanelAdditionalActionsProvider,
91 anyDirectoryPanelAdditionalActionLinksProvider,
92 anyWizardBuilderAdditionalSteps, statusProvider,
93 virSchemaDetailsPanelProvider,
94 implementationInfoProvider,
95 accessPolicyConfProvider,
96 policyTabProviders,
97 userFormFinalizers,
98 resources);
99 }
100
101 @ConditionalOnMissingBean
102 @Bean
103 public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator(
104 final ServiceOps serviceOps, final ConsoleProperties props) {
105
106 return new SyncopeCoreHealthIndicator(
107 serviceOps,
108 props.getAnonymousUser(),
109 props.getAnonymousKey(),
110 props.isUseGZIPCompression());
111 }
112
113 @ConditionalOnProperty(
114 prefix = "keymaster", name = "enableAutoRegistration", havingValue = "true", matchIfMissing = true)
115 @Bean
116 public KeymasterStart keymasterStart() {
117 return new KeymasterStart(NetworkService.Type.CONSOLE);
118 }
119
120 @ConditionalOnProperty(
121 prefix = "keymaster", name = "enableAutoRegistration", havingValue = "true", matchIfMissing = true)
122 @Bean
123 public KeymasterStop keymasterStop() {
124 return new KeymasterStop(NetworkService.Type.CONSOLE);
125 }
126 }