From 55f4c8cda0f426e3a8d31908018a6b9c890bc006 Mon Sep 17 00:00:00 2001
From: kongdeqiang <kongdeqiang@960204@163.com>
Date: 星期二, 02 十二月 2025 20:04:09 +0800
Subject: [PATCH] fix:完善逻辑
---
src/main/java/com/wgcloud/service/OspfInfoService.java | 142 +++++++++++++++++++++++++++++++++++++---------
1 files changed, 113 insertions(+), 29 deletions(-)
diff --git a/src/main/java/com/wgcloud/service/OspfInfoService.java b/src/main/java/com/wgcloud/service/OspfInfoService.java
index 2f2257b..2d21ed9 100644
--- a/src/main/java/com/wgcloud/service/OspfInfoService.java
+++ b/src/main/java/com/wgcloud/service/OspfInfoService.java
@@ -1,17 +1,25 @@
package com.wgcloud.service;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.TypeReference;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import com.wgcloud.entity.OspfErrorLog;
import com.wgcloud.entity.OspfInfo;
import com.wgcloud.entity.SnmpInfo;
+import com.wgcloud.entity.vo.OspfNeighbor;
+import com.wgcloud.mapper.OspfErrorLogMapper;
import com.wgcloud.mapper.OspfInfoMapper;
import com.wgcloud.util.DateUtil;
+import com.wgcloud.util.OspfNeighborUtil;
import com.wgcloud.util.UUIDUtil;
import org.apache.commons.lang3.StringUtils;
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.Service;
+import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.List;
@@ -30,6 +38,15 @@
@Autowired
private RouterConnectionService routerConnectionService;
+ @Autowired
+ private OspfNeighborUtil ospfNeighborUtil;
+ @Autowired
+ private OspfErrorLogMapper errorLogMapper;
+
+ @Value("${osfService.host}")
+ private String remoteHost;
+ @Value("${osfService.port}")
+ private String remotePort;
private static final Logger logger = LoggerFactory.getLogger(OspfInfoService.class);
@@ -70,44 +87,111 @@
OspfInfoMapper.updateById(ospfInfo);
}
- public boolean checkOspfStatus() {
- String command = "display ospf brief";
- String output = routerConnectionService.executeCommand(command);
-
- if (output == null) {
- return false;
- }
-
- // 妫�鏌ヨ緭鍑轰腑鏄惁鍖呭惈OSPF鐩稿叧淇℃伅
- boolean containsRouterId = StringUtils.containsIgnoreCase(output, "Router ID");
- boolean containsArea = StringUtils.containsIgnoreCase(output, "Area");
- boolean containsProcessId = StringUtils.containsIgnoreCase(output, "Process ID");
-
- // 妫�鏌ユ槸鍚︽湁閿欒淇℃伅
- boolean containsError = StringUtils.containsIgnoreCase(output, "Error") ||
- StringUtils.containsIgnoreCase(output, "Fail") ||
- StringUtils.containsIgnoreCase(output, "Invalid");
-
- return (containsRouterId && containsArea && containsProcessId) && !containsError;
- }
-
/**
* 鑾峰彇璇︾粏鐨凮SPF閭诲眳淇℃伅
*/
- public String getDetailedOspfNeighborInfo() {
- String command = "display ospf peer";
- return routerConnectionService.executeCommand(command);
+ public void getDetailedOspfNeighborInfo() {
+ List<OspfInfo> ospfInfos = OspfInfoMapper.selectAllByParams(null);
+ for (OspfInfo ospfInfo : ospfInfos) {
+ String command = "display ospf peer "+ospfInfo.getHostname();
+ String result = routerConnectionService.executeCommand(command,ospfInfo.getMonitorUsername(),ospfInfo.getMonitorPassword(),ospfInfo.getMonitorIp());
+ System.out.println("鑾峰彇鍒扮殑閭诲眳淇℃伅涓猴細"+result);
+ if(StringUtils.isNotBlank(result)){
+ List<OspfNeighbor> neighbors = ospfNeighborUtil.analysisStr(result);
+ if(neighbors != null || neighbors.size()>0){
+ OspfNeighbor ospfNeighbor = neighbors.get(0);
+ String state = ospfNeighbor.getState();
+ if (state.contains("Down") || state.contains("Init")) {
+ ospfInfo.setState("1");
+ OspfInfoMapper.updateById(ospfInfo);
+
+ HashMap<String, Object> hashMap = new HashMap<>();
+ hashMap.put("state","1");
+ hashMap.put("hostname",ospfInfo.getHostname());
+ List<OspfErrorLog> ospfErrorLogs = errorLogMapper.selectAllByParams(hashMap);
+ if(ospfErrorLogs==null||ospfErrorLogs.size()==0){
+ OspfErrorLog ospfErrorLog = new OspfErrorLog();
+ ospfErrorLog.setInfoContent(ospfInfo.getInfoContent());
+ ospfErrorLog.setHostname(ospfInfo.getHostname());
+ ospfErrorLog.setState("1");
+ try {
+ errorLogMapper.save(ospfErrorLog);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }else {
+ ospfInfo.setState("0");
+ OspfInfoMapper.updateById(ospfInfo);
+ }
+ }
+ }else {
+ ospfInfo.setState("1");
+ OspfInfoMapper.updateById(ospfInfo);
+ }
+
+ }
+ }
+
+ public void getRouterStatus() {
+ List<OspfInfo> ospfInfos = OspfInfoMapper.selectAllByParams(null);
+ for (OspfInfo ospfInfo : ospfInfos) {
+ String command = "display ospf peer "+ospfInfo.getHostname();
+ Map<String,String> map = new HashMap<>();
+ map.put("command",command);
+ map.put("username",ospfInfo.getMonitorUsername());
+ map.put("password",ospfInfo.getMonitorPassword());
+ map.put("monitorIp",ospfInfo.getMonitorIp());
+ String str = JSON.toJSONString(map);
+ System.out.println(str);
+ try {
+ String url = "http://"+remoteHost+":"+remotePort+"/api/connect/getResult";
+ String responseBody = HttpRequest.post(url)
+ .timeout(5000)
+ .body(str)
+ .execute()
+ .body();
+ System.out.println(responseBody);
+
+ if(responseBody.equals("1")){
+ HashMap<String, Object> hashMap = new HashMap<>();
+ hashMap.put("state","1");
+ hashMap.put("hostname",ospfInfo.getHostname());
+ List<OspfErrorLog> ospfErrorLogs = errorLogMapper.selectAllByParams(hashMap);
+ if(ospfErrorLogs==null||ospfErrorLogs.size()==0){
+ OspfErrorLog ospfErrorLog = new OspfErrorLog();
+ ospfErrorLog.setInfoContent(ospfInfo.getInfoContent());
+ ospfErrorLog.setHostname(ospfInfo.getHostname());
+ ospfErrorLog.setState("1");
+ ospfErrorLog.setId(UUIDUtil.getUUID());
+ ospfErrorLog.setCreateTime(DateUtil.getNowTime());
+ try {
+ errorLogMapper.save(ospfErrorLog);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }
+ ospfInfo.setState(responseBody);
+ OspfInfoMapper.updateById(ospfInfo);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ ospfInfo.setState("1");
+ OspfInfoMapper.updateById(ospfInfo);
+ }
+ }
}
/**
* 鑾峰彇OSPF鎺ュ彛鐘舵��
*/
- public String getOspfInterfaceStatus() {
- String command = "display ospf interface";
- return routerConnectionService.executeCommand(command);
- }
+// public String getOspfInterfaceStatus() {
+// String command = "display ospf interface";
+// return routerConnectionService.executeCommand(command);
+// }
-
+
public int countByParams(Map<String, Object> params) throws Exception {
--
Gitblit v1.9.1