1
2
3
4
5
6
7
8
9
10
11 package psiprobe.controllers.system;
12
13 import jakarta.inject.Inject;
14 import jakarta.servlet.http.HttpServletRequest;
15 import jakarta.servlet.http.HttpServletResponse;
16
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.List;
20 import java.util.Map;
21
22 import org.springframework.web.servlet.ModelAndView;
23
24 import psiprobe.beans.RuntimeInfoAccessorBean;
25 import psiprobe.controllers.AbstractTomcatContainerController;
26 import psiprobe.model.SystemInformation;
27 import psiprobe.tools.SecurityUtils;
28
29
30
31
32 public class BaseSysInfoController extends AbstractTomcatContainerController {
33
34
35 private List<String> filterOutKeys = new ArrayList<>();
36
37
38 @Inject
39 private RuntimeInfoAccessorBean runtimeInfoAccessor;
40
41
42 private long collectionPeriod;
43
44
45
46
47
48
49 public List<String> getFilterOutKeys() {
50 return filterOutKeys;
51 }
52
53
54
55
56
57
58 public void setFilterOutKeys(List<String> filterOutKeys) {
59 this.filterOutKeys = filterOutKeys;
60 }
61
62
63
64
65
66
67 public long getCollectionPeriod() {
68 return collectionPeriod;
69 }
70
71
72
73
74
75
76 public void setCollectionPeriod(long collectionPeriod) {
77 this.collectionPeriod = collectionPeriod;
78 }
79
80 @Override
81 protected ModelAndView handleRequestInternal(HttpServletRequest request,
82 HttpServletResponse response) throws Exception {
83
84 SystemInformation systemInformation = new SystemInformation();
85 systemInformation
86 .setAppBase(containerWrapper.getTomcatContainer().getAppBase().getAbsolutePath());
87 systemInformation.setConfigBase(containerWrapper.getTomcatContainer().getConfigBase());
88
89 Map<String, String> sysProps = new HashMap<>();
90 for (String propertyName : System.getProperties().stringPropertyNames()) {
91 String propertyValue = System.getProperty(propertyName);
92 sysProps.put(propertyName, propertyValue);
93 }
94
95 if (!SecurityUtils.hasAttributeValueRole(getServletContext())) {
96 for (String key : filterOutKeys) {
97 sysProps.remove(key);
98 }
99 }
100
101 systemInformation.setSystemProperties(sysProps);
102
103 ModelAndView mv = new ModelAndView(getViewName());
104 mv.addObject("systemInformation", systemInformation);
105 mv.addObject("runtime", runtimeInfoAccessor.getRuntimeInformation());
106 mv.addObject("collectionPeriod", getCollectionPeriod());
107 return mv;
108 }
109
110 }