From 21c0eb821f8d9f6df9bd310e3fef4cbbab83d3cc Mon Sep 17 00:00:00 2001 From: songww <songww@inspur.com> Date: 星期四, 21 五月 2020 09:29:58 +0800 Subject: [PATCH] 增加跨域代码,允许VUE跨域访问 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java | 71 ++++++++++++++++++++++++++++++----- 1 files changed, 60 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java index 55aa9fe..c15b9b6 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java @@ -24,7 +24,7 @@ import com.genersoft.iot.vmp.gb28181.bean.Host; /** - * @Description:TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜绫荤殑浣滅敤) + * @Description:鎽勫儚澶村懡浠equest鍒涢�犲櫒 TODO 鍐椾綑浠g爜澶寰呬紭鍖� * @author: songww * @date: 2020骞�5鏈�6鏃� 涓婂崍9:29:02 */ @@ -35,7 +35,7 @@ private SipLayer layer; @Autowired - private SipConfig config; + private SipConfig sipConfig; public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { Request request = null; @@ -44,16 +44,17 @@ SipURI requestURI = layer.getAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); // via ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); - ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(config.getSipIp(), config.getSipPort(), + ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag); + viaHeader.setRPort(); viaHeaders.add(viaHeader); // from - SipURI fromSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(), - config.getSipIp() + ":" + config.getSipPort()); + SipURI fromSipURI = layer.getAddressFactory().createSipURI(sipConfig.getSipId(), + sipConfig.getSipIp() + ":" + sipConfig.getSipPort()); Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI); FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); // to - SipURI toSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); + SipURI toSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getSipDomain()); Address toAddress = layer.getAddressFactory().createAddress(toSipURI); ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress, toTag); // callid @@ -71,22 +72,22 @@ return request; } - public Request createInviteRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { + public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { Request request = null; Host host = device.getHost(); //璇锋眰琛� - SipURI requestLine = layer.getAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); + SipURI requestLine = layer.getAddressFactory().createSipURI(channelId, host.getAddress()); //via ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); - ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(config.getSipIp(), config.getSipPort(), device.getTransport(), viaTag); + ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag); viaHeader.setRPort(); viaHeaders.add(viaHeader); //from - SipURI fromSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),config.getSipIp()+":"+config.getSipPort()); + SipURI fromSipURI = layer.getAddressFactory().createSipURI(sipConfig.getSipId(),sipConfig.getSipDomain()); Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI); FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); //蹇呴』瑕佹湁鏍囪锛屽惁鍒欐棤娉曞垱寤轰細璇濓紝鏃犳硶鍥炲簲ack //to - SipURI toSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),host.getAddress()); + SipURI toSipURI = layer.getAddressFactory().createSipURI(channelId,sipConfig.getSipDomain()); Address toAddress = layer.getAddressFactory().createAddress(toSipURI); ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress,null); @@ -101,9 +102,57 @@ //Forwards MaxForwardsHeader maxForwards = layer.getHeaderFactory().createMaxForwardsHeader(70); + //ceq CSeqHeader cSeqHeader = layer.getHeaderFactory().createCSeqHeader(1L, Request.INVITE); request = layer.getMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); + + Address concatAddress = layer.getAddressFactory().createAddress(layer.getAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort())); + request.addHeader(layer.getHeaderFactory().createContactHeader(concatAddress)); + + ContentTypeHeader contentTypeHeader = layer.getHeaderFactory().createContentTypeHeader("Application", "SDP"); + request.setContent(content, contentTypeHeader); + return request; + } + + public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException { + Request request = null; + Host host = device.getHost(); + //璇锋眰琛� + SipURI requestLine = layer.getAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); + //via + ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); + ViaHeader viaHeader = layer.getHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag); + viaHeader.setRPort(); + viaHeaders.add(viaHeader); + //from + SipURI fromSipURI = layer.getAddressFactory().createSipURI(sipConfig.getSipId(),sipConfig.getSipDomain()); + Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI); + FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); //蹇呴』瑕佹湁鏍囪锛屽惁鍒欐棤娉曞垱寤轰細璇濓紝鏃犳硶鍥炲簲ack + //to + SipURI toSipURI = layer.getAddressFactory().createSipURI(channelId,sipConfig.getSipDomain()); + Address toAddress = layer.getAddressFactory().createAddress(toSipURI); + ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress,null); + + //callid + CallIdHeader callIdHeader = null; + if(device.getTransport().equals("TCP")) { + callIdHeader = layer.getTcpSipProvider().getNewCallId(); + } + if(device.getTransport().equals("UDP")) { + callIdHeader = layer.getUdpSipProvider().getNewCallId(); + } + + //Forwards + MaxForwardsHeader maxForwards = layer.getHeaderFactory().createMaxForwardsHeader(70); + + //ceq + CSeqHeader cSeqHeader = layer.getHeaderFactory().createCSeqHeader(1L, Request.INVITE); + request = layer.getMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); + + Address concatAddress = layer.getAddressFactory().createAddress(layer.getAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort())); + request.addHeader(layer.getHeaderFactory().createContactHeader(concatAddress)); + ContentTypeHeader contentTypeHeader = layer.getHeaderFactory().createContentTypeHeader("Application", "SDP"); request.setContent(content, contentTypeHeader); return request; -- Gitblit v1.8.0