From bc431e429026d5efb9d404767f76a0724978d40d Mon Sep 17 00:00:00 2001
From: Cloud User <liaobin143@gmail.com>
Date: 星期五, 15 九月 2023 22:39:08 +0800
Subject: [PATCH] fix-use-source-ip-as-stream-ip
---
src/main/java/com/genersoft/iot/vmp/common/StreamURL.java | 6 ++
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java | 12 +++++
src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java | 63 +++++++++++++++++++++++++++++++
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 12 +++++
4 files changed, 90 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
index cde235b..70718c7 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
@@ -523,6 +523,69 @@
StreamInfo instance = null;
try{
instance = (StreamInfo)super.clone();
+ if (this.flv != null) {
+ instance.flv=this.flv.clone();
+ }
+ if (this.ws_flv != null ){
+ instance.ws_flv= this.ws_flv.clone();
+ }
+ if (this.hls != null ) {
+ instance.hls= this.hls.clone();
+ }
+ if (this.ws_hls != null ) {
+ instance.ws_hls= this.ws_hls.clone();
+ }
+ if (this.ts != null ) {
+ instance.ts= this.ts.clone();
+ }
+ if (this.ws_ts != null ) {
+ instance.ws_ts= this.ws_ts.clone();
+ }
+ if (this.fmp4 != null ) {
+ instance.fmp4= this.fmp4.clone();
+ }
+ if (this.ws_fmp4 != null ) {
+ instance.ws_fmp4= this.ws_fmp4.clone();
+ }
+ if (this.rtc != null ) {
+ instance.rtc= this.rtc.clone();
+ }
+ if (this.https_flv != null) {
+ instance.https_flv= this.https_flv.clone();
+ }
+ if (this.wss_flv != null) {
+ instance.wss_flv= this.wss_flv.clone();
+ }
+ if (this.https_hls != null) {
+ instance.https_hls= this.https_hls.clone();
+ }
+ if (this.wss_hls != null) {
+ instance.wss_hls= this.wss_hls.clone();
+ }
+ if (this.wss_ts != null) {
+ instance.wss_ts= this.wss_ts.clone();
+ }
+ if (this.https_fmp4 != null) {
+ instance.https_fmp4= this.https_fmp4.clone();
+ }
+ if (this.wss_fmp4 != null) {
+ instance.wss_fmp4= this.wss_fmp4.clone();
+ }
+ if (this.rtcs != null) {
+ instance.rtcs= this.rtcs.clone();
+ }
+ if (this.rtsp != null) {
+ instance.rtsp= this.rtsp.clone();
+ }
+ if (this.rtsps != null) {
+ instance.rtsps= this.rtsps.clone();
+ }
+ if (this.rtmp != null) {
+ instance.rtmp= this.rtmp.clone();
+ }
+ if (this.rtmps != null) {
+ instance.rtmps= this.rtmps.clone();
+ }
}catch(CloneNotSupportedException e) {
e.printStackTrace();
}
diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java b/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java
index eecf469..40bd7e2 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/StreamURL.java
@@ -6,7 +6,7 @@
@Schema(description = "娴佸湴鍧�淇℃伅")
-public class StreamURL implements Serializable {
+public class StreamURL implements Serializable,Cloneable {
@Schema(description = "鍗忚")
private String protocol;
@@ -77,4 +77,8 @@
return null;
}
}
+ @Override
+ public StreamURL clone() throws CloneNotSupportedException {
+ return (StreamURL) super.clone();
+ }
}
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 3d233dc..6db7e4b 100755
--- 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
@@ -40,6 +40,8 @@
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;
@@ -128,7 +130,15 @@
if (data != null) {
StreamInfo streamInfo = (StreamInfo)data;
if (userSetting.getUseSourceIpAsStreamIp()) {
- streamInfo.channgeStreamIp(request.getLocalAddr());
+ streamInfo=streamInfo.clone();//娣辨嫹璐�
+ String host;
+ try {
+ URL url=new URL(request.getRequestURL().toString());
+ host=url.getHost();
+ } catch (MalformedURLException e) {
+ host=request.getLocalAddr();
+ }
+ streamInfo.channgeStreamIp(host);
}
wvpResult.setData(new StreamContent(streamInfo));
}
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 d3225a2..63299b2 100755
--- 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
@@ -34,6 +34,8 @@
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;
@@ -99,7 +101,15 @@
if (data != null) {
StreamInfo streamInfo = (StreamInfo)data;
if (userSetting.getUseSourceIpAsStreamIp()) {
- streamInfo.channgeStreamIp(request.getLocalAddr());
+ streamInfo=streamInfo.clone();//娣辨嫹璐�
+ String host;
+ try {
+ URL url=new URL(request.getRequestURL().toString());
+ host=url.getHost();
+ } catch (MalformedURLException e) {
+ host=request.getLocalAddr();
+ }
+ streamInfo.channgeStreamIp(host);
}
wvpResult.setData(new StreamContent(streamInfo));
}
--
Gitblit v1.8.0