From 943f95ba8ce02f8088f2dfcfd83a60391a8a65a6 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 14 三月 2023 14:02:33 +0800 Subject: [PATCH] 增加消息通道配置,可以通道redis在wvp上下级之间发送消息 --- src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java | 145 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 103 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java index 08b0793..ad2c13b 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java @@ -1,48 +1,44 @@ package com.genersoft.iot.vmp.vmanager.server; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.genersoft.iot.vmp.VManageBootstrap; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.genersoft.iot.vmp.common.SystemAllInfo; import com.genersoft.iot.vmp.common.VersionPo; import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.VersionInfo; import com.genersoft.iot.vmp.conf.exception.ControllerException; -import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe; +import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe; import com.genersoft.iot.vmp.media.zlm.dto.IHookSubscribe; import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; -import com.genersoft.iot.vmp.service.IMediaServerService; -import com.genersoft.iot.vmp.utils.SpringBeanFactory; +import com.genersoft.iot.vmp.service.*; +import com.genersoft.iot.vmp.service.bean.MediaServerLoad; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; -import com.genersoft.iot.vmp.vmanager.bean.WVPResult; -import gov.nist.javax.sip.SipStackImpl; - +import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo; +import com.genersoft.iot.vmp.vmanager.bean.ResourceInfo; +import com.genersoft.iot.vmp.vmanager.bean.SystemConfigInfo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import org.ehcache.xml.model.ThreadPoolsType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import javax.sip.ListeningPoint; -import javax.sip.ObjectInUseException; -import javax.sip.SipProvider; -import java.util.Iterator; +import java.util.ArrayList; import java.util.List; @SuppressWarnings("rawtypes") @Tag(name = "鏈嶅姟鎺у埗") -@CrossOrigin + @RestController @RequestMapping("/api/server") public class ServerController { @Autowired - private ZLMHttpHookSubscribe zlmHttpHookSubscribe; + private ZlmHttpHookSubscribe zlmHttpHookSubscribe; @Autowired private IMediaServerService mediaServerService; @@ -56,12 +52,29 @@ @Autowired private UserSetting userSetting; + @Autowired + private IDeviceService deviceService; + + @Autowired + private IDeviceChannelService channelService; + + @Autowired + private IStreamPushService pushService; + + + @Autowired + private IStreamProxyService proxyService; + + @Value("${server.port}") private int serverPort; @Autowired private ThreadPoolTaskExecutor taskExecutor; + + @Autowired + private IRedisCatchStorage redisCatchStorage; @GetMapping(value = "/media_server/list") @@ -116,14 +129,8 @@ MediaServerItem mediaServerItemInDatabase = mediaServerService.getOne(mediaServerItem.getId()); if (mediaServerItemInDatabase != null) { - if (ObjectUtils.isEmpty(mediaServerItemInDatabase.getSendRtpPortRange()) && ObjectUtils.isEmpty(mediaServerItem.getSendRtpPortRange())) { - mediaServerItem.setSendRtpPortRange("30000,30500"); - } mediaServerService.update(mediaServerItem); } else { - if (ObjectUtils.isEmpty(mediaServerItem.getSendRtpPortRange())) { - mediaServerItem.setSendRtpPortRange("30000,30500"); - } mediaServerService.add(mediaServerItem); } } @@ -145,26 +152,38 @@ @GetMapping(value = "/restart") @ResponseBody public void restart() { - taskExecutor.execute(()-> { - try { - Thread.sleep(3000); - SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider"); - SipStackImpl stack = (SipStackImpl) up.getSipStack(); - stack.stop(); - Iterator listener = stack.getListeningPoints(); - while (listener.hasNext()) { - stack.deleteListeningPoint((ListeningPoint) listener.next()); - } - Iterator providers = stack.getSipProviders(); - while (providers.hasNext()) { - stack.deleteSipProvider((SipProvider) providers.next()); - } - VManageBootstrap.restart(); - } catch (InterruptedException | ObjectInUseException e) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage()); - } - }); +// taskExecutor.execute(()-> { +// try { +// Thread.sleep(3000); +// SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider"); +// SipStackImpl stack = (SipStackImpl) up.getSipStack(); +// stack.stop(); +// Iterator listener = stack.getListeningPoints(); +// while (listener.hasNext()) { +// stack.deleteListeningPoint((ListeningPoint) listener.next()); +// } +// Iterator providers = stack.getSipProviders(); +// while (providers.hasNext()) { +// stack.deleteSipProvider((SipProvider) providers.next()); +// } +// VManageBootstrap.restart(); +// } catch (InterruptedException | ObjectInUseException e) { +// throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage()); +// } +// }); }; + + @Operation(summary = "鑾峰彇绯荤粺淇℃伅淇℃伅") + @GetMapping(value = "/system/configInfo") + @ResponseBody + public SystemConfigInfo getConfigInfo() { + SystemConfigInfo systemConfigInfo = new SystemConfigInfo(); + systemConfigInfo.setVersion(versionInfo.getVersion()); + systemConfigInfo.setSip(sipConfig); + systemConfigInfo.setAddOn(userSetting); + systemConfigInfo.setServerPort(serverPort); + return systemConfigInfo; + } @Operation(summary = "鑾峰彇鐗堟湰淇℃伅") @GetMapping(value = "/version") @@ -205,4 +224,46 @@ public List<IHookSubscribe> getHooks() { return zlmHttpHookSubscribe.getAll(); } + + @GetMapping(value = "/system/info") + @ResponseBody + @Operation(summary = "鑾峰彇绯荤粺淇℃伅") + public SystemAllInfo getSystemInfo() { + SystemAllInfo systemAllInfo = redisCatchStorage.getSystemInfo(); + + return systemAllInfo; + } + + @GetMapping(value = "/media_server/load") + @ResponseBody + @Operation(summary = "鑾峰彇璐熻浇淇℃伅") + public List<MediaServerLoad> getMediaLoad() { + List<MediaServerLoad> result = new ArrayList<>(); + List<MediaServerItem> allOnline = mediaServerService.getAllOnline(); + if (allOnline.size() == 0) { + return result; + }else { + for (MediaServerItem mediaServerItem : allOnline) { + result.add(mediaServerService.getLoad(mediaServerItem)); + } + } + return result; + } + + @GetMapping(value = "/resource/info") + @ResponseBody + @Operation(summary = "鑾峰彇璐熻浇淇℃伅") + public ResourceInfo getResourceInfo() { + ResourceInfo result = new ResourceInfo(); + ResourceBaceInfo deviceInfo = deviceService.getOverview(); + result.setDevice(deviceInfo); + ResourceBaceInfo channelInfo = channelService.getOverview(); + result.setChannel(channelInfo); + ResourceBaceInfo pushInfo = pushService.getOverview(); + result.setPush(pushInfo); + ResourceBaceInfo proxyInfo = proxyService.getOverview(); + result.setProxy(proxyInfo); + + return result; + } } -- Gitblit v1.8.0