From 1909c7f71fc1b0e290678a3efe95b62d0b9df75e Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 17 六月 2024 10:08:09 +0800
Subject: [PATCH] 调整参数名称
---
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 51 insertions(+), 8 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..6d99120 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;
@@ -36,19 +39,50 @@
private final Map<String, SipProviderImpl> tcpSipProviderMap = new ConcurrentHashMap<>();
private final Map<String, SipProviderImpl> udpSipProviderMap = new ConcurrentHashMap<>();
+ private final List<String> monitorIps = new ArrayList<>();
@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.info("[鑷姩閰嶇疆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) {
@@ -108,6 +142,9 @@
if (ObjectUtils.isEmpty(ip)) {
return null;
}
+ if (udpSipProviderMap.size() == 1) {
+ return udpSipProviderMap.values().stream().findFirst().get();
+ }
return udpSipProviderMap.get(ip);
}
@@ -129,10 +166,16 @@
if (ObjectUtils.isEmpty(ip)) {
return null;
}
+ if (tcpSipProviderMap.size() == 1) {
+ return tcpSipProviderMap.values().stream().findFirst().get();
+ }
return tcpSipProviderMap.get(ip);
}
public String getLocalIp(String deviceLocalIp) {
+ if (monitorIps.size() == 1) {
+ return monitorIps.get(0);
+ }
if (!ObjectUtils.isEmpty(deviceLocalIp)) {
return deviceLocalIp;
}
--
Gitblit v1.8.0