fix-use-source-ip-as-stream-ip

pull/1077/head
Cloud User 2023-09-15 22:39:08 +08:00
parent e073b60cb1
commit bc431e4290
4 changed files with 90 additions and 3 deletions

View File

@ -523,6 +523,69 @@ public class StreamInfo implements Serializable, Cloneable{
StreamInfo instance = null; StreamInfo instance = null;
try{ try{
instance = (StreamInfo)super.clone(); 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) { }catch(CloneNotSupportedException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -6,7 +6,7 @@ import java.io.Serializable;
@Schema(description = "流地址信息") @Schema(description = "流地址信息")
public class StreamURL implements Serializable { public class StreamURL implements Serializable,Cloneable {
@Schema(description = "协议") @Schema(description = "协议")
private String protocol; private String protocol;
@ -77,4 +77,8 @@ public class StreamURL implements Serializable {
return null; return null;
} }
} }
@Override
public StreamURL clone() throws CloneNotSupportedException {
return (StreamURL) super.clone();
}
} }

View File

@ -40,6 +40,8 @@ import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.sip.InvalidArgumentException; import javax.sip.InvalidArgumentException;
import javax.sip.SipException; import javax.sip.SipException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@ -128,7 +130,15 @@ public class PlayController {
if (data != null) { if (data != null) {
StreamInfo streamInfo = (StreamInfo)data; StreamInfo streamInfo = (StreamInfo)data;
if (userSetting.getUseSourceIpAsStreamIp()) { 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)); wvpResult.setData(new StreamContent(streamInfo));
} }

View File

@ -34,6 +34,8 @@ import org.springframework.web.context.request.async.DeferredResult;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.sip.InvalidArgumentException; import javax.sip.InvalidArgumentException;
import javax.sip.SipException; import javax.sip.SipException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException; import java.text.ParseException;
import java.util.UUID; import java.util.UUID;
@ -99,7 +101,15 @@ public class PlaybackController {
if (data != null) { if (data != null) {
StreamInfo streamInfo = (StreamInfo)data; StreamInfo streamInfo = (StreamInfo)data;
if (userSetting.getUseSourceIpAsStreamIp()) { 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)); wvpResult.setData(new StreamContent(streamInfo));
} }