From b15e559eae82db811b31f1e3c47e3be027f20e27 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期一, 08 一月 2024 16:18:28 +0800 Subject: [PATCH] Merge branch '2.6.9' into wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java | 169 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 116 insertions(+), 53 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 old mode 100644 new mode 100755 index 08b0793..d1c72fc --- 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,46 @@ 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.conf.security.JwtUtils; +import com.genersoft.iot.vmp.media.zlm.SendRtpPortManager; +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.ResourceBaseInfo; +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.security.SecurityRequirement; 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,37 +54,54 @@ @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; + private IRedisCatchStorage redisCatchStorage; + + @Autowired + private SendRtpPortManager sendRtpPortManager; @GetMapping(value = "/media_server/list") @ResponseBody - @Operation(summary = "娴佸獟浣撴湇鍔″垪琛�") + @Operation(summary = "娴佸獟浣撴湇鍔″垪琛�", security = @SecurityRequirement(name = JwtUtils.HEADER)) public List<MediaServerItem> getMediaServerList() { return mediaServerService.getAll(); } @GetMapping(value = "/media_server/online/list") @ResponseBody - @Operation(summary = "鍦ㄧ嚎娴佸獟浣撴湇鍔″垪琛�") + @Operation(summary = "鍦ㄧ嚎娴佸獟浣撴湇鍔″垪琛�", security = @SecurityRequirement(name = JwtUtils.HEADER)) public List<MediaServerItem> getOnlineMediaServerList() { return mediaServerService.getAllOnline(); } @GetMapping(value = "/media_server/one/{id}") @ResponseBody - @Operation(summary = "鍋滄瑙嗛鍥炴斁") + @Operation(summary = "鍋滄瑙嗛鍥炴斁", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "id", description = "娴佸獟浣撴湇鍔D", required = true) public MediaServerItem getMediaServer(@PathVariable String id) { return mediaServerService.getOne(id); } - @Operation(summary = "娴嬭瘯娴佸獟浣撴湇鍔�") + @Operation(summary = "娴嬭瘯娴佸獟浣撴湇鍔�", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "ip", description = "娴佸獟浣撴湇鍔P", required = true) @Parameter(name = "port", description = "娴佸獟浣撴湇鍔TT绔彛", required = true) @Parameter(name = "secret", description = "娴佸獟浣撴湇鍔ecret", required = true) @@ -96,7 +111,7 @@ return mediaServerService.checkMediaServer(ip, port, secret); } - @Operation(summary = "娴嬭瘯娴佸獟浣撳綍鍍忕鐞嗘湇鍔�") + @Operation(summary = "娴嬭瘯娴佸獟浣撳綍鍍忕鐞嗘湇鍔�", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "ip", description = "娴佸獟浣撴湇鍔P", required = true) @Parameter(name = "port", description = "娴佸獟浣撴湇鍔TT绔彛", required = true) @GetMapping(value = "/media_server/record/check") @@ -108,7 +123,7 @@ } } - @Operation(summary = "淇濆瓨娴佸獟浣撴湇鍔�") + @Operation(summary = "淇濆瓨娴佸獟浣撴湇鍔�", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "mediaServerItem", description = "娴佸獟浣撲俊鎭�", required = true) @PostMapping(value = "/media_server/save") @ResponseBody @@ -116,19 +131,13 @@ 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); } } - @Operation(summary = "绉婚櫎娴佸獟浣撴湇鍔�") + @Operation(summary = "绉婚櫎娴佸獟浣撴湇鍔�", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "id", description = "娴佸獟浣揑D", required = true) @DeleteMapping(value = "/media_server/delete") @ResponseBody @@ -141,32 +150,44 @@ } - @Operation(summary = "閲嶅惎鏈嶅姟") + @Operation(summary = "閲嶅惎鏈嶅姟", security = @SecurityRequirement(name = JwtUtils.HEADER)) @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 = "鑾峰彇鐗堟湰淇℃伅") + @Operation(summary = "鑾峰彇绯荤粺淇℃伅淇℃伅", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @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 = "鑾峰彇鐗堟湰淇℃伅", security = @SecurityRequirement(name = JwtUtils.HEADER)) @GetMapping(value = "/version") @ResponseBody public VersionPo VersionPogetVersion() { @@ -205,4 +226,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(); + ResourceBaseInfo deviceInfo = deviceService.getOverview(); + result.setDevice(deviceInfo); + ResourceBaseInfo channelInfo = channelService.getOverview(); + result.setChannel(channelInfo); + ResourceBaseInfo pushInfo = pushService.getOverview(); + result.setPush(pushInfo); + ResourceBaseInfo proxyInfo = proxyService.getOverview(); + result.setProxy(proxyInfo); + + return result; + } } -- Gitblit v1.8.0