From da2662ab27e5655636bfa6338d8d1f083a99f36f Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 13 六月 2024 18:10:01 +0800 Subject: [PATCH] 国标28181-支持自动识别网卡监听,可以不再配置SIP.IP --- 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