From fff3d64f850b3ee61b9847cd80e7958c46cc6347 Mon Sep 17 00:00:00 2001 From: 庄梦蝶殇 <linhuaichuan1989@126.com> Date: 星期三, 27 七月 2022 18:31:33 +0800 Subject: [PATCH] fix 优化pom依赖,去除几个重复客户端。并改了几个 equals判断不精准的bug --- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java | 62 ++++++++++++++++++++++++------ 1 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java index b4b7469..94fe8df 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java @@ -1,9 +1,15 @@ package com.genersoft.iot.vmp.vmanager.gb28181.media; import com.genersoft.iot.vmp.common.StreamInfo; +import com.genersoft.iot.vmp.conf.security.SecurityUtils; +import com.genersoft.iot.vmp.conf.security.dto.LoginUser; +import com.genersoft.iot.vmp.media.zlm.dto.OnPublishHookParam; +import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; +import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.service.IStreamPushService; import com.genersoft.iot.vmp.service.IMediaService; -import com.genersoft.iot.vmp.storager.IVideoManagerStorager; +import com.genersoft.iot.vmp.storager.IRedisCatchStorage; +import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -15,6 +21,8 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; + @Api(tags = "濯掍綋娴佺浉鍏�") @Controller @@ -25,10 +33,7 @@ private final static Logger logger = LoggerFactory.getLogger(MediaController.class); @Autowired - private IVideoManagerStorager storager; - - @Autowired - private IStreamPushService streamPushService; + private IRedisCatchStorage redisCatchStorage; @Autowired private IMediaService mediaService; @@ -44,24 +49,55 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "app", value = "搴旂敤鍚�", dataTypeClass = String.class), @ApiImplicitParam(name = "stream", value = "娴乮d", dataTypeClass = String.class), - @ApiImplicitParam(name = "mediaServerId", value = "濯掍綋鏈嶅姟鍣╥d", dataTypeClass = String.class), + @ApiImplicitParam(name = "mediaServerId", value = "濯掍綋鏈嶅姟鍣╥d", dataTypeClass = String.class, required = false), }) @GetMapping(value = "/stream_info_by_app_and_stream") @ResponseBody - public WVPResult<StreamInfo> getStreamInfoByAppAndStream(@RequestParam String app, @RequestParam String stream, @RequestParam String mediaServerId){ - StreamInfo streamInfoByAppAndStreamWithCheck = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId); + public WVPResult<StreamInfo> getStreamInfoByAppAndStream(HttpServletRequest request, @RequestParam String app, + @RequestParam String stream, + @RequestParam(required = false) String mediaServerId, + @RequestParam(required = false) String callId, + @RequestParam(required = false) Boolean useSourceIpAsStreamIp){ + boolean authority = false; + if (callId != null) { + // 鏉冮檺鏍¢獙 + StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream); + if (streamAuthorityInfo.getCallId().equals(callId)) { + authority = true; + }else { + WVPResult<StreamInfo> result = new WVPResult<>(); + result.setCode(401); + result.setMsg("fail"); + return result; + } + }else { + // 鏄惁鐧婚檰鐢ㄦ埛, 鐧婚檰鐢ㄦ埛杩斿洖瀹屾暣淇℃伅 + LoginUser userInfo = SecurityUtils.getUserInfo(); + if (userInfo!= null) { + authority = true; + } + } + + StreamInfo streamInfo; + + if (useSourceIpAsStreamIp != null && useSourceIpAsStreamIp) { + String host = request.getHeader("Host"); + String localAddr = host.split(":")[0]; + logger.info("浣跨敤{}浣滀负杩斿洖娴佺殑ip", localAddr); + streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, localAddr, authority); + }else { + streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, authority); + } + WVPResult<StreamInfo> result = new WVPResult<>(); - if (streamInfoByAppAndStreamWithCheck != null){ + if (streamInfo != null){ result.setCode(0); result.setMsg("scccess"); - result.setData(streamInfoByAppAndStreamWithCheck); + result.setData(streamInfo); }else { result.setCode(-1); result.setMsg("fail"); } return result; } - - - } -- Gitblit v1.8.0