From 6000f212978c74d22e00102f310d3129eddc210c Mon Sep 17 00:00:00 2001 From: binban Date: Tue, 18 Apr 2023 09:57:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=85=8D=E7=BD=AE=E2=80=9Csi?= =?UTF-8?q?p-use-source-ip-as-remote-address=E2=80=9D=E4=B8=BAtrue?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=92=AD=E6=94=BE=E5=92=8C=E5=9B=9E=E6=94=BE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=AD=A3=E7=A1=AE=E5=A4=84=E7=90=86=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vmanager/gb28181/play/PlayController.java | 13 +++++++++++-- .../gb28181/playback/PlaybackController.java | 18 ++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java index 958cc689..c8d2d4b1 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java @@ -35,6 +35,8 @@ import org.springframework.web.context.request.async.DeferredResult; import javax.servlet.http.HttpServletRequest; import javax.sip.InvalidArgumentException; import javax.sip.SipException; +import java.net.MalformedURLException; +import java.net.URL; import java.text.ParseException; import java.util.List; import java.util.UUID; @@ -113,9 +115,16 @@ public class PlayController { resultStream.setCode(wvpResult1.getCode()); resultStream.setMsg(wvpResult1.getMsg()); if (wvpResult1.getCode() == ErrorCode.SUCCESS.getCode()) { - StreamInfo data = wvpResult1.getData().clone(); if (userSetting.getUseSourceIpAsStreamIp()) { - data.channgeStreamIp(request.getLocalName()); + StreamInfo data = wvpResult1.getData().clone(); + String host=""; + try { + URL url = new URL(request.getRequestURL().toString()); + host=url.getHost(); + } catch (MalformedURLException e) { + host=request.getLocalName(); + } + data.channgeStreamIp(host); } resultStream.setData(new StreamContent(wvpResult1.getData())); } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java index 8bab3fd0..f89bf6ac 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java @@ -31,8 +31,11 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import org.springframework.web.context.request.async.DeferredResult; +import javax.servlet.http.HttpServletRequest; import javax.sip.InvalidArgumentException; import javax.sip.SipException; +import java.net.MalformedURLException; +import java.net.URL; import java.text.ParseException; import java.util.UUID; @@ -74,8 +77,8 @@ public class PlaybackController { @Parameter(name = "startTime", description = "开始时间", required = true) @Parameter(name = "endTime", description = "结束时间", required = true) @GetMapping("/start/{deviceId}/{channelId}") - public DeferredResult> start(@PathVariable String deviceId, @PathVariable String channelId, - String startTime, String endTime) { + public DeferredResult> start(HttpServletRequest request, @PathVariable String deviceId, @PathVariable String channelId, + String startTime, String endTime) { if (logger.isDebugEnabled()) { logger.debug(String.format("设备回放 API调用,deviceId:%s ,channelId:%s", deviceId, channelId)); @@ -97,6 +100,17 @@ public class PlaybackController { wvpResult.setCode(playBackResult.getCode()); wvpResult.setMsg(playBackResult.getMsg()); if (playBackResult.getCode() == ErrorCode.SUCCESS.getCode()) { + if (userSetting.getUseSourceIpAsStreamIp()) { + StreamInfo data = ((StreamInfo)playBackResult.getData()).clone(); + String host=""; + try { + URL url = new URL(request.getRequestURL().toString()); + host=url.getHost(); + } catch (MalformedURLException e) { + host=request.getLocalName(); + } + data.channgeStreamIp(host); + } StreamInfo streamInfo = (StreamInfo)playBackResult.getData(); wvpResult.setData(new StreamContent(streamInfo)); } -- Gitee