From a8c424e49db9213e879bf6c44cebccdfddaa1808 Mon Sep 17 00:00:00 2001 From: BradyXu <brady_xu@outlook.com> Date: 星期日, 12 五月 2024 02:00:55 +0800 Subject: [PATCH] 修复sip绑定监听多网卡IP时,新增上级平台新增失败的问题,本地IP改成从配置的多IP下拉选择 --- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManger.java | 35 +++++++++++++++++++++-------------- 1 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManger.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManger.java index 6f97558..cdf1e3f 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManger.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManger.java @@ -5,10 +5,10 @@ import com.alibaba.fastjson2.JSONObject; import com.genersoft.iot.vmp.conf.DynamicTask; import com.genersoft.iot.vmp.conf.UserSetting; -import com.genersoft.iot.vmp.media.event.MediaServerChangeEvent; -import com.genersoft.iot.vmp.media.event.MediaServerDeleteEvent; +import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent; +import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerDeleteEvent; import com.genersoft.iot.vmp.media.service.IMediaServerService; -import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; +import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.zlm.dto.ZLMServerConfig; import com.genersoft.iot.vmp.media.zlm.event.HookZlmServerKeepaliveEvent; import com.genersoft.iot.vmp.media.zlm.event.HookZlmServerStartEvent; @@ -36,8 +36,8 @@ private final static Logger logger = LoggerFactory.getLogger(ZLMMediaServerStatusManger.class); - private final Map<Object, MediaServerItem> offlineZlmPrimaryMap = new ConcurrentHashMap<>(); - private final Map<Object, MediaServerItem> offlineZlmsecondaryMap = new ConcurrentHashMap<>(); + private final Map<Object, MediaServer> offlineZlmPrimaryMap = new ConcurrentHashMap<>(); + private final Map<Object, MediaServer> offlineZlmsecondaryMap = new ConcurrentHashMap<>(); private final Map<Object, Long> offlineZlmTimeMap = new ConcurrentHashMap<>(); @Autowired @@ -55,6 +55,9 @@ @Value("${server.port}") private Integer serverPort; + @Value("${server.servlet.context-path:}") + private String serverServletContextPath; + @Autowired private UserSetting userSetting; @@ -67,13 +70,14 @@ || event.getMediaServerItemList().isEmpty()) { return; } - for (MediaServerItem mediaServerItem : event.getMediaServerItemList()) { + for (MediaServer mediaServerItem : event.getMediaServerItemList()) { if (!type.equals(mediaServerItem.getType())) { continue; } logger.info("[ZLM-娣诲姞寰呬笂绾胯妭鐐筣 ID锛�" + mediaServerItem.getId()); offlineZlmPrimaryMap.put(mediaServerItem.getId(), mediaServerItem); offlineZlmTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis()); + execute(); } } @@ -85,7 +89,7 @@ || event.getMediaServerItem().isStatus()) { return; } - MediaServerItem serverItem = mediaServerService.getOne(event.getMediaServerItem().getId()); + MediaServer serverItem = mediaServerService.getOne(event.getMediaServerItem().getId()); if (serverItem == null) { return; } @@ -99,7 +103,7 @@ if (event.getMediaServerItem() == null) { return; } - MediaServerItem serverItem = mediaServerService.getOne(event.getMediaServerItem().getId()); + MediaServer serverItem = mediaServerService.getOne(event.getMediaServerItem().getId()); if (serverItem == null) { return; } @@ -126,7 +130,7 @@ return; } if (!offlineZlmPrimaryMap.isEmpty()) { - for (MediaServerItem mediaServerItem : offlineZlmPrimaryMap.values()) { + for (MediaServer mediaServerItem : offlineZlmPrimaryMap.values()) { if (offlineZlmTimeMap.get(mediaServerItem.getId()) < System.currentTimeMillis() - 30*60*1000) { offlineZlmsecondaryMap.put(mediaServerItem.getId(), mediaServerItem); offlineZlmPrimaryMap.remove(mediaServerItem.getId()); @@ -150,7 +154,7 @@ } } if (!offlineZlmsecondaryMap.isEmpty()) { - for (MediaServerItem mediaServerItem : offlineZlmsecondaryMap.values()) { + for (MediaServer mediaServerItem : offlineZlmsecondaryMap.values()) { if (offlineZlmTimeMap.get(mediaServerItem.getId()) < System.currentTimeMillis() - 30*60*1000) { continue; } @@ -175,7 +179,7 @@ } } - private void online(MediaServerItem mediaServerItem, ZLMServerConfig config) { + private void online(MediaServer mediaServerItem, ZLMServerConfig config) { offlineZlmPrimaryMap.remove(mediaServerItem.getId()); offlineZlmsecondaryMap.remove(mediaServerItem.getId()); offlineZlmTimeMap.remove(mediaServerItem.getId()); @@ -193,10 +197,12 @@ } } if (config != null) { + initPort(mediaServerItem, config); setZLMConfig(mediaServerItem, "0".equals(config.getHookEnable()) || !Objects.equals(mediaServerItem.getHookAliveInterval(), config.getHookAliveInterval())); } } + mediaServerService.update(mediaServerItem); } // 璁剧疆涓ゆ蹇冭烦鏈敹鍒板垯璁や负zlm绂荤嚎 String key = "zlm-keepalive-" + mediaServerItem.getId(); @@ -209,7 +215,8 @@ mediaServerService.update(mediaServerItem); }, (int)(mediaServerItem.getHookAliveInterval() * 2 * 1000)); } - private void initPort(MediaServerItem mediaServerItem, ZLMServerConfig zlmServerConfig) { + private void initPort(MediaServer mediaServerItem, ZLMServerConfig zlmServerConfig) { + // 绔彛鍙細浠庨厤缃腑璇诲彇涓�娆★紝涓�鏃﹁嚜宸遍厤缃垨鑰呰鍙栬繃浜嗗皢涓嶅湪閰嶇疆 if (mediaServerItem.getHttpSSlPort() == 0) { mediaServerItem.setHttpSSlPort(zlmServerConfig.getHttpSSLport()); } @@ -231,11 +238,11 @@ mediaServerItem.setHookAliveInterval(10F); } - public void setZLMConfig(MediaServerItem mediaServerItem, boolean restart) { + public void setZLMConfig(MediaServer mediaServerItem, boolean restart) { logger.info("[濯掍綋鏈嶅姟鑺傜偣] 姝e湪璁剧疆 锛歿} -> {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); String protocol = sslEnabled ? "https" : "http"; - String hookPrefix = String.format("%s://%s:%s/index/hook", protocol, mediaServerItem.getHookIp(), serverPort); + String hookPrefix = String.format("%s://%s:%s%s/index/hook", protocol, mediaServerItem.getHookIp(), serverPort, (serverServletContextPath == null || "/".equals(serverServletContextPath)) ? "" : serverServletContextPath); Map<String, Object> param = new HashMap<>(); param.put("api.secret",mediaServerItem.getSecret()); // -profile:v Baseline -- Gitblit v1.8.0