fuliqi
2025-01-15 ab491a079ba4ab85ffef35d14c0767eba01455d8
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
@@ -39,10 +39,10 @@
   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<>();
      if (ObjectUtils.isEmpty(sipConfig.getIp())) {
         try {
            // 获得本机的所有网络接口
@@ -60,7 +60,7 @@
                     if (nif.getName().startsWith("docker")) {
                        continue;
                     }
                     logger.error("[自动配置SIP监听网卡] 网卡接口地址: {}", addr.getHostAddress());// 只关心 IPv4 地址
                     logger.info("[自动配置SIP监听网卡] 网卡接口地址: {}", addr.getHostAddress());// 只关心 IPv4 地址
                     monitorIps.add(addr.getHostAddress());
                  }
               }
@@ -82,7 +82,9 @@
            monitorIps.add(sipConfig.getIp());
         }
      }
      sipConfig.setShowIp(String.join(",", monitorIps));
      if (ObjectUtils.isEmpty(sipConfig.getShowIp())){
         sipConfig.setShowIp(String.join(",", monitorIps));
      }
      SipFactory.getInstance().setPathName("gov.nist");
      if (monitorIps.size() > 0) {
         for (String monitorIp : monitorIps) {
@@ -139,6 +141,9 @@
   }
   public SipProviderImpl getUdpSipProvider(String ip) {
      if (udpSipProviderMap.size() == 1) {
         return udpSipProviderMap.values().stream().findFirst().get();
      }
      if (ObjectUtils.isEmpty(ip)) {
         return null;
      }
@@ -160,6 +165,9 @@
   }
   public SipProviderImpl getTcpSipProvider(String ip) {
      if (tcpSipProviderMap.size() == 1) {
         return tcpSipProviderMap.values().stream().findFirst().get();
      }
      if (ObjectUtils.isEmpty(ip)) {
         return null;
      }
@@ -167,6 +175,9 @@
   }
   public String getLocalIp(String deviceLocalIp) {
      if (monitorIps.size() == 1) {
         return monitorIps.get(0);
      }
      if (!ObjectUtils.isEmpty(deviceLocalIp)) {
         return deviceLocalIp;
      }