From 7b46769a1674a59d4e243c1f3b6d8b481099b645 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期四, 13 六月 2024 23:15:51 +0800
Subject: [PATCH] 修复国标录像下载后负载统计未清除的BUG
---
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java | 48 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 41 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
index 56663f1..1373530 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
@@ -16,6 +16,9 @@
import org.springframework.util.ObjectUtils;
import javax.sip.*;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -40,15 +43,46 @@
@Override
public void run(String... args) {
List<String> monitorIps = new ArrayList<>();
- // 浣跨敤閫楀彿鍒嗗壊澶氫釜ip
- String separator = ",";
- if (sipConfig.getIp().indexOf(separator) > 0) {
- String[] split = sipConfig.getIp().split(separator);
- monitorIps.addAll(Arrays.asList(split));
+ if (ObjectUtils.isEmpty(sipConfig.getIp())) {
+ try {
+ // 鑾峰緱鏈満鐨勬墍鏈夌綉缁滄帴鍙�
+ Enumeration<NetworkInterface> nifs = NetworkInterface.getNetworkInterfaces();
+ while (nifs.hasMoreElements()) {
+ NetworkInterface nif = nifs.nextElement();
+ // 鑾峰緱涓庤缃戠粶鎺ュ彛缁戝畾鐨� IP 鍦板潃锛屼竴鑸彧鏈変竴涓�
+ Enumeration<InetAddress> addresses = nif.getInetAddresses();
+ while (addresses.hasMoreElements()) {
+ InetAddress addr = addresses.nextElement();
+ if (addr instanceof Inet4Address) {
+ if (addr.getHostAddress().equals("127.0.0.1")){
+ continue;
+ }
+ if (nif.getName().startsWith("docker")) {
+ continue;
+ }
+ logger.error("[鑷姩閰嶇疆SIP鐩戝惉缃戝崱] 缃戝崱鎺ュ彛鍦板潃锛� {}", addr.getHostAddress());// 鍙叧蹇� IPv4 鍦板潃
+ monitorIps.add(addr.getHostAddress());
+ }
+ }
+ }
+ }catch (Exception e) {
+ logger.error("[璇诲彇缃戝崱淇℃伅澶辫触]", e);
+ }
+ if (monitorIps.isEmpty()) {
+ logger.error("[鑷姩閰嶇疆SIP鐩戝惉缃戝崱淇℃伅澶辫触]锛� 璇锋墜鍔ㄩ厤缃甋IP.IP鍚庨噸鏂板惎鍔�");
+ System.exit(1);
+ }
}else {
- monitorIps.add(sipConfig.getIp());
+ // 浣跨敤閫楀彿鍒嗗壊澶氫釜ip
+ String separator = ",";
+ if (sipConfig.getIp().indexOf(separator) > 0) {
+ String[] split = sipConfig.getIp().split(separator);
+ monitorIps.addAll(Arrays.asList(split));
+ }else {
+ monitorIps.add(sipConfig.getIp());
+ }
}
-
+ sipConfig.setShowIp(String.join(",", monitorIps));
SipFactory.getInstance().setPathName("gov.nist");
if (monitorIps.size() > 0) {
for (String monitorIp : monitorIps) {
--
Gitblit v1.8.0