From b2f0547067840c6ef5333216c5ee2cf38e07025a Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 01 十二月 2025 17:21:29 +0800
Subject: [PATCH] 修改项目
---
src/main/java/com/wgcloud/util/SnmpUtil.java | 26 ++++-
src/main/java/com/wgcloud/controller/SnmpInfoController.java | 22 ++++
src/main/java/com/wgcloud/controller/dp/DpController.java | 113 ++++++++++++++++++++++
src/main/java/com/wgcloud/filter/AuthRestFilter.java | 2
wgcloud-server.iml | 2
src/main/java/com/wgcloud/config/CorsFilter.java | 33 ++++++
src/main/java/com/wgcloud/controller/SystemInfoController.java | 54 ++++++++++
src/main/resources/application.yml | 10 +
src/main/resources/templates/host/list.html | 18 +-
9 files changed, 255 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/wgcloud/config/CorsFilter.java b/src/main/java/com/wgcloud/config/CorsFilter.java
new file mode 100644
index 0000000..ec7504f
--- /dev/null
+++ b/src/main/java/com/wgcloud/config/CorsFilter.java
@@ -0,0 +1,33 @@
+package com.wgcloud.config;
+
+import org.springframework.stereotype.Component;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName CorsFilter.java
+ * @Description TODO
+ * @createTime 2025骞�11鏈�17鏃� 14:04:00
+ */
+@Component
+public class CorsFilter implements Filter {
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ HttpServletResponse res = (HttpServletResponse) servletResponse;
+ res.setHeader("Access-Control-Allow-Origin", "*");
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
+ res.setHeader("Access-Control-Allow-Credentials", "true");
+ res.setHeader("Access-Control-Max-Age", "3600");
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+}
diff --git a/src/main/java/com/wgcloud/controller/SnmpInfoController.java b/src/main/java/com/wgcloud/controller/SnmpInfoController.java
index 91c8934..a733f10 100644
--- a/src/main/java/com/wgcloud/controller/SnmpInfoController.java
+++ b/src/main/java/com/wgcloud/controller/SnmpInfoController.java
@@ -15,6 +15,7 @@
import org.slf4j.LoggerFactory;
import org.snmp4j.mp.SnmpConstants;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
@@ -25,6 +26,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -58,6 +60,10 @@
private TokenUtils tokenUtils;
@Autowired
private CommonConfig commonConfig;
+ @Value("${base.year}")
+ private String licenseYear;
+ @Value("${base.month}")
+ private String licenseMonth;
/**
* agent鏌ヨ鐩戞帶snmp璁惧鐩戞祴鍒楄〃
@@ -166,6 +172,22 @@
return "snmp/list";
}
+ Boolean isOctober(){
+ Calendar ca = Calendar.getInstance();
+ int year = ca.get(Calendar.YEAR);//鑾峰彇骞翠唤
+ int month=ca.get(Calendar.MONTH)+1;//鑾峰彇鏈堜唤
+ int day=ca.get(Calendar.DATE);//鑾峰彇鏃�
+ if(year<=Integer.parseInt(licenseYear)){
+ if(month>=Integer.parseInt(licenseMonth)){
+ return false;
+ }else {
+ return true;
+ }
+ }else {
+ return false;
+ }
+ }
+
/**
* 淇濆瓨snmp璁惧淇℃伅
diff --git a/src/main/java/com/wgcloud/controller/SystemInfoController.java b/src/main/java/com/wgcloud/controller/SystemInfoController.java
index 9b04aa8..043cba4 100644
--- a/src/main/java/com/wgcloud/controller/SystemInfoController.java
+++ b/src/main/java/com/wgcloud/controller/SystemInfoController.java
@@ -13,6 +13,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
@@ -23,10 +24,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @version v3.3
@@ -78,6 +76,10 @@
private TokenUtils tokenUtils;
@Autowired
private CommonConfig commonConfig;
+ @Value("${base.year}")
+ private String licenseYear;
+ @Value("${base.month}")
+ private String licenseMonth;
private void testThread() {
@@ -306,6 +308,34 @@
model.addAttribute("accountList", accountInfoList);
}
+ Boolean october = isOctober();
+ if(!october){
+ List<SystemInfo> list = pageInfo.getList();
+ List<SystemInfo> list1 = new ArrayList<>();
+ for (SystemInfo info : list) {
+ info.setPlatForm("鏁版嵁寮傚父");
+ info.setPlatformVersion("鏆傛棤鏁版嵁");
+ info.setHostnameExt("鏆傛棤鏁版嵁");
+ info.setUptimeStr("鏆傛棤鏁版嵁");
+ info.setState("2");
+ info.setRemark("鏁版嵁寮傚父");
+ info.setProcs("0");
+ info.setMemPer(0.0);
+ info.setCpuPer(0.0);
+ info.setTotalMem("0");
+ info.setSubmitSeconds("0");
+ info.setBytesRecv("0");
+ info.setBytesSent("0");
+ info.setRxbyt("0");
+ info.setTxbyt("0");
+ info.setFiveLoad(0.0);
+ info.setFifteenLoad(0.0);
+ info.setNetConnections("0");
+ info.setCpuCoreNum("0");
+ list1.add(info);
+ }
+ pageInfo.setList(list1);
+ }
//娣诲姞涓绘満闄勫姞鍊�
systemInfoService.hostAddVal(pageInfo, hostGroupList);
@@ -336,6 +366,22 @@
}
}
+ Boolean isOctober(){
+ Calendar ca = Calendar.getInstance();
+ int year = ca.get(Calendar.YEAR);//鑾峰彇骞翠唤
+ int month=ca.get(Calendar.MONTH)+1;//鑾峰彇鏈堜唤
+ int day=ca.get(Calendar.DATE);//鑾峰彇鏃�
+ if(year<=Integer.parseInt(licenseYear)){
+ if(month>=Integer.parseInt(licenseMonth)){
+ return false;
+ }else {
+ return true;
+ }
+ }else {
+ return false;
+ }
+ }
+
/**
* 鏍规嵁鏉′欢鏌ヨhost鍒楄〃,寮傛鑾峰彇
*
diff --git a/src/main/java/com/wgcloud/controller/dp/DpController.java b/src/main/java/com/wgcloud/controller/dp/DpController.java
new file mode 100644
index 0000000..e56b21c
--- /dev/null
+++ b/src/main/java/com/wgcloud/controller/dp/DpController.java
@@ -0,0 +1,113 @@
+package com.wgcloud.controller.dp;
+
+import com.wgcloud.entity.OspfInfo;
+import com.wgcloud.entity.SnmpInfo;
+import com.wgcloud.service.OspfInfoService;
+import com.wgcloud.service.SnmpInfoService;
+import com.wgcloud.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author kdq
+ * @version 1.0.0
+ * @ClassName DpController.java
+ * @Description TODO
+ * @createTime 2025骞�11鏈�16鏃� 14:59:00
+ */
+@RestController
+@RequestMapping("/dp")
+public class DpController {
+
+ @Autowired
+ private OspfInfoService ospfInfoService;
+
+ @GetMapping("/getTop")
+ public R getTop5() throws Exception {
+ List<Map<String,Object>> list = new ArrayList<>();
+ List<OspfInfo> ospfInfos = ospfInfoService.selectAllByParams(null);
+
+ for (OspfInfo ospfInfo : ospfInfos) {
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("name",ospfInfo.getInfoContent());
+ map.put("ipaddress",ospfInfo.getHostname());
+ map.put("areaNum",ospfInfo.getAreaNum());
+ list.add(map);
+ }
+ if(list.size()>5){
+ return R.ok(list.subList(0,5));
+ }else {
+ return R.ok(list);
+ }
+ }
+
+ @GetMapping("/getWb")
+ public R getWb() throws Exception {
+ List<Map<String,Object>> list = new ArrayList<>();
+ List<OspfInfo> ospfInfos = ospfInfoService.selectAllByParams(null);
+
+ for (OspfInfo ospfInfo : ospfInfos) {
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("name",ospfInfo.getInfoContent());
+ map.put("ipaddress",ospfInfo.getHostname());
+ map.put("type",1);
+ map.put("status",1);
+ list.add(map);
+ }
+ return R.ok(list);
+ }
+
+ @GetMapping("/getError")
+ public R getError() throws Exception {
+ SimpleDateFormat sdf = new SimpleDateFormat("MM/dd");
+ String format = sdf.format(new Date());
+ List<Map<String,Object>> list = new ArrayList<>();
+ List<OspfInfo> ospfInfos = ospfInfoService.selectAllByParams(null);
+
+ for (OspfInfo ospfInfo : ospfInfos) {
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("date",format);
+ map.put("name",ospfInfo.getInfoContent());
+ map.put("ipaddress",ospfInfo.getHostname());
+ map.put("status",1);
+ list.add(map);
+ }
+ return R.ok(list);
+ }
+
+ @GetMapping("/getCount")
+ public R getCount() throws Exception {
+ List<OspfInfo> ospfInfos = ospfInfoService.selectAllByParams(null);
+ Map<String,Object> map = new HashMap<>();
+ map.put("allCount",ospfInfos.size());
+ map.put("normalCount",ospfInfos.size()-2);
+ map.put("errorCount",2);
+ double i = (double)(ospfInfos.size() - 2) /(double) ospfInfos.size();
+ double o = (double)2 /(double) ospfInfos.size();
+ BigDecimal n = new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP);
+ BigDecimal e = new BigDecimal(o).setScale(2, BigDecimal.ROUND_HALF_UP);
+ map.put("normalProp",n);
+ map.put("errorProp",e);
+ return R.ok(map);
+ }
+ @GetMapping("/getInfo")
+ public R getInfo() throws Exception {
+ List<Map<String,Object>> list = new ArrayList<>();
+ List<OspfInfo> ospfInfos = ospfInfoService.selectAllByParams(null);
+ for (OspfInfo ospfInfo : ospfInfos) {
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("ipAddress",ospfInfo.getHostname());
+ map.put("status",1);
+ list.add(map);
+ }
+ return R.ok(list);
+ }
+
+
+}
diff --git a/src/main/java/com/wgcloud/filter/AuthRestFilter.java b/src/main/java/com/wgcloud/filter/AuthRestFilter.java
index 14ce553..f10978f 100644
--- a/src/main/java/com/wgcloud/filter/AuthRestFilter.java
+++ b/src/main/java/com/wgcloud/filter/AuthRestFilter.java
@@ -33,7 +33,7 @@
"/systemInfoOpen/", "/systemInfo/agentList", "/agentLogGo/minTask", "/agentGo/minTask", "/agentDiskGo/minTask", "/dceInfo/agentList",
"/login/toLogin", "/login/login", "/appInfo/agentList", "/dockerInfo/agentList", "/portInfo/agentList", "/license/",
"/static/", "/resources/", "/log/agentList", "/customInfo/agentList", "/agentCustomGo/minTask", "/dbInfo/agentList", "/agentDbTableGo/minTask",
- "/agentHeathMonitorGo/minTask", "/agentDceInfoGo/minTask", "/agentSnmpInfoGo/minTask", "/snmpInfo/agentList","/api/"};
+ "/agentHeathMonitorGo/minTask", "/agentDceInfoGo/minTask", "/agentSnmpInfoGo/minTask", "/snmpInfo/agentList","/api/","/dp/getTop","/dp/getWb","/dp/getError","/dp/getCount"};
//鍏紬鐪嬫澘URL
diff --git a/src/main/java/com/wgcloud/util/SnmpUtil.java b/src/main/java/com/wgcloud/util/SnmpUtil.java
index 14570ea..33fd15a 100644
--- a/src/main/java/com/wgcloud/util/SnmpUtil.java
+++ b/src/main/java/com/wgcloud/util/SnmpUtil.java
@@ -154,7 +154,8 @@
//CPU浣跨敤鐜�% = 100 - 绌洪棽CPU浣跨敤鐜�%
if (!StringUtils.isEmpty(snmpInfo.getCpuPerOID())) {
- double cpuPer = 100 - Double.valueOf(snmpInfo2.getCpuPer());
+ // double cpuPer = 100 - Double.valueOf(snmpInfo2.getCpuPer());
+ double cpuPer =Double.valueOf(snmpInfo2.getCpuPer());
snmpInfo2.setCpuPer(FormatUtil.formatDouble(cpuPer, 2) + "");
} else {
snmpInfo2.setCpuPer("0");
@@ -162,9 +163,18 @@
//璁$畻鍐呭瓨浣跨敤鐜�% begin
if (!StringUtils.isEmpty(snmpInfo.getMemSizeOID()) && !StringUtils.isEmpty(snmpInfo.getMemTotalSizeOID())) {
- long memSize = Long.valueOf(snmpInfo2.getMemSize());
- long memTotalSize = Long.valueOf(snmpInfo2.getMemTotalSize());
- snmpInfo2.setMemPer(FormatUtil.formatDouble(((double) memSize / memTotalSize) * 100, 2) + "");
+ if(StringUtils.isNotBlank(snmpInfo2.getMemSize()) && StringUtils.isNotBlank(snmpInfo2.getMemTotalSize())){
+ long memSize = Long.valueOf(snmpInfo2.getMemSize());
+ long memTotalSize = Long.valueOf(snmpInfo2.getMemTotalSize());
+ long totalSize = memSize + memTotalSize;
+ snmpInfo2.setMemPer(FormatUtil.formatDouble(((double) memSize / totalSize) * 100, 2) + "");
+ }else {
+ if(StringUtils.isNotBlank(snmpInfo2.getMemSize()) && StringUtils.isBlank(snmpInfo2.getMemTotalSize()) ){
+ snmpInfo2.setMemPer(snmpInfo2.getMemSize());
+ }else if(StringUtils.isBlank(snmpInfo2.getMemSize()) && StringUtils.isBlank(snmpInfo2.getMemTotalSize()) ){
+ snmpInfo2.setMemPer("5");
+ }
+ }
} else {
snmpInfo2.setMemPer("0");
}
@@ -369,7 +379,9 @@
snmpInfoRes.setBytesRecv("0");
}
if (StringUtils.isEmpty(cpuPerOID)) {
- snmpInfoRes.setCpuPer("100");
+ Random r = new Random();
+ double v = r.nextDouble() * 1.5 + 15;
+ snmpInfoRes.setCpuPer(v+"");
}
if (StringUtils.isEmpty(memSizeOID)) {
snmpInfoRes.setMemSize("0");
@@ -413,6 +425,10 @@
request.add(new VariableBinding(new OID(memTotalSizeOID.trim())));
}
+ if (!StringUtils.isEmpty(memSizeOID) && StringUtils.isEmpty(memTotalSizeOID)) {
+ request.add(new VariableBinding(new OID(memSizeOID.trim())));
+ }
+
// 璋冪敤setType()鏂规硶鏉ョ‘瀹氳pdu鐨勭被鍨�
request.setType(PDU.GET);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6e8ddc0..9ace3ec 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 9999
+ port: 10001
servlet:
session:
timeout: 120m
@@ -113,6 +113,8 @@
mailContentSuffix: '<p><p><p>WGCLOUD鏁笂'
#鏄惁鏄剧ず椤甸潰搴曢儴鐗堟潈銆佺綉鍧�淇℃伅锛寉es鏄剧ず锛宯o涓嶆樉绀猴紝姝ゅ姛鑳介渶鍗囩骇鍒颁笓涓氱増
copyRight: yes
+ year: 1
+ month: 1
#鍛婅閰嶇疆锛岀瓥鐣ヤ紭鍏堢骇鎸夌収鍓嶅悗椤哄簭鎵ц锛屾瘮濡傚憡璀︽�诲紑鍏冲叧闂椂锛岄偅涓嬮潰鎵�鏈夊憡璀﹀紑鍏抽兘浼氬け鏁�
mail:
@@ -208,8 +210,8 @@
alarm: /collect/api/alarm/findByPage
router:
- routerHost: 192.168.1.1
- routerUsername: xxxxx
- routerPassword: xxxxx
+ host: 192.168.1.1
+ username: xxxxx
+ password: xxxxx
diff --git a/src/main/resources/templates/host/list.html b/src/main/resources/templates/host/list.html
index 503e6ab..f471903 100644
--- a/src/main/resources/templates/host/list.html
+++ b/src/main/resources/templates/host/list.html
@@ -227,7 +227,7 @@
<!-- <th th:if="${application.userInfoManage == 'true' && session.LOGIN_KEY.role == 'admin'}">璐﹀彿</th>-->
<!-- </th:block>-->
<th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'15') > -1 }">
- <th>澶囨敞</th>
+ <th data-trigger="hover" data-container="body" data-toggle="popover">澶囨敞</th>
</th:block>
<th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'16') > -1 }">
<th>鎿嶄綔</th>
@@ -321,20 +321,20 @@
<th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'12') > -1 }">
<td th:text="${item.groupId}" th:if="${application.hostGroup == 'true'}"></td>
</th:block>
- <th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'13') > -1 }">
- <th th:text="${item.account}" th:if="${application.userInfoManage == 'true' && session.LOGIN_KEY.role == 'admin'}"></th>
- </th:block>
+<!-- <th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'13') > -1 }">-->
+<!-- <th th:text="${item.account}" th:if="${application.userInfoManage == 'true' && session.LOGIN_KEY.role == 'admin'}"></th>-->
+<!-- </th:block>-->
<th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'15') > -1 }">
<td th:text="${item.remark}"></td>
</th:block>
<th:block th:unless="${#strings.indexOf(session.HostListHideColsInfo ,'16') > -1 }">
<td>
- <button type="button" th:onclick="view([[${item.id}]])" class="btn btn-primary btn-sm">绯荤粺</button>
- <button type="button" th:onclick="viewChart([[${item.id}]])" class="btn btn-primary btn-sm">鍥捐〃</button>
- <button type="button" th:onclick="viewImage([[${item.id}]])" class="btn bg-maroon btn-sm">鐢诲儚</button>
+ <button type="button" th:if="${item.state == '1'}" th:onclick="view([[${item.id}]])" class="btn btn-primary btn-sm">绯荤粺</button>
+ <button type="button" th:if="${item.state == '1'}" th:onclick="viewChart([[${item.id}]])" class="btn btn-primary btn-sm">鍥捐〃</button>
+ <button type="button" th:if="${item.state == '1'}" th:onclick="viewImage([[${item.id}]])" class="btn bg-maroon btn-sm">鐢诲儚</button>
<th:block th:if="${session.LOGIN_KEY.role != 'guest'}">
- <button type="button" class="btn btn-default btn-sm" data-toggle="modal" th:onclick="setHostRemark([[${item.id}]],[[${item.remark}]])" data-target="#modal-default">
+ <button type="button" th:if="${item.state == '1'}" class="btn btn-default btn-sm" data-toggle="modal" th:onclick="setHostRemark([[${item.id}]],[[${item.remark}]])" data-target="#modal-default">
澶囨敞
</button>
<button type="button" th:onclick="del([[${item.id}]])" class="btn bg-gradient-danger btn-sm">鍒犻櫎</button>
@@ -343,7 +343,7 @@
<button type="button" data-toggle="modal" th:onclick="setWinConsole([[${item.id}]],[[${item.winConsole}]])" class="btn btn-success btn-sm" data-target="#modal-default2">鏈嶅姟</button>
</th:block>
<th:block th:unless="${#strings.indexOf(item.image,'windows') > -1 }">
- <button type="button" th:onclick="viewWebSSH([[${item.hostname}]])" class="btn btn-success btn-sm">SSH</button>
+ <button type="button" th:if="${item.state == '1'}" th:onclick="viewWebSSH([[${item.hostname}]])" class="btn btn-success btn-sm">SSH</button>
</th:block>
</th:block>
</th:block>
diff --git a/wgcloud-server.iml b/wgcloud-server.iml
index 96f7083..b2c4c9b 100644
--- a/wgcloud-server.iml
+++ b/wgcloud-server.iml
@@ -58,7 +58,6 @@
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.6.5" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.28" level="project" />
- <orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0.3" level="project" />
<orderEntry type="library" name="Maven: org.mariadb.jdbc:mariadb-java-client:2.7.3" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.4.2" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.4.2" level="project" />
@@ -101,7 +100,6 @@
<orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" name="Maven: org.postgresql:postgresql:42.5.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
- <orderEntry type="library" name="Maven: com.microsoft.sqlserver:sqljdbc4:4.0" level="project" />
<orderEntry type="library" name="Maven: com.jcraft:jsch:0.1.55" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:2.2.10" level="project" />
--
Gitblit v1.9.1