1
2
3
4
5
6
7
8
9
10
11 package psiprobe;
12
13 import com.opensymphony.sitemesh.webapp.SiteMeshFilter;
14
15 import jakarta.servlet.DispatcherType;
16 import jakarta.servlet.FilterRegistration;
17 import jakarta.servlet.MultipartConfigElement;
18 import jakarta.servlet.ServletContext;
19 import jakarta.servlet.ServletException;
20 import jakarta.servlet.ServletRegistration;
21 import jakarta.servlet.SessionTrackingMode;
22
23 import java.util.EnumSet;
24 import java.util.HashMap;
25 import java.util.Map;
26
27 import org.springframework.web.WebApplicationInitializer;
28 import org.springframework.web.context.ContextLoaderListener;
29 import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
30 import org.springframework.web.filter.DelegatingFilterProxy;
31
32
33
34
35 public class ProbeInitializer implements WebApplicationInitializer {
36
37 @Override
38 public void onStartup(ServletContext servletContext) throws ServletException {
39
40
41 try (AnnotationConfigWebApplicationContext rootContext =
42 new AnnotationConfigWebApplicationContext()) {
43 rootContext.register(ProbeConfig.class);
44
45
46 servletContext.addListener(new ContextLoaderListener(rootContext));
47 }
48
49
50 ServletRegistration.Dynamic probe = servletContext.addServlet("probe", ProbeServlet.class);
51
52
53 MultipartConfigElement multipartConfig = new MultipartConfigElement(null, -1L, -1L, 0);
54 probe.setMultipartConfig(multipartConfig);
55
56
57 servletContext.setInitParameter("attribute.value.roles", "ROLE_MANAGER,ROLE_MANAGER-GUI");
58
59
60 Map<String, String> initParameters = new HashMap<>();
61 initParameters.put("contextConfigLocation", "");
62 probe.setInitParameters(initParameters);
63
64
65 probe.setLoadOnStartup(0);
66
67
68 probe.addMapping("*.htm", "*.ajax", "/logs/*", "/chart.png");
69
70
71 FilterRegistration.Dynamic sitemesh =
72 servletContext.addFilter("sitemesh", SiteMeshFilter.class);
73 sitemesh.addMappingForUrlPatterns(
74 EnumSet.of(DispatcherType.FORWARD, DispatcherType.REQUEST, DispatcherType.ERROR), false,
75 "/*");
76
77
78 FilterRegistration.Dynamic security =
79 servletContext.addFilter("filterChainProxy", DelegatingFilterProxy.class);
80 security.addMappingForUrlPatterns(
81 EnumSet.of(DispatcherType.FORWARD, DispatcherType.REQUEST, DispatcherType.ERROR), false,
82 "/*");
83
84
85 servletContext.getSessionCookieConfig().setHttpOnly(true);
86 servletContext.getSessionCookieConfig().setSecure(true);
87
88
89 EnumSet<SessionTrackingMode> trackingMode = EnumSet.of(SessionTrackingMode.COOKIE);
90 servletContext.setSessionTrackingModes(trackingMode);
91 }
92
93 }