From 6ecd801c2365feb4e65f6684065aa97f11615797 Mon Sep 17 00:00:00 2001
From: songww <songww@inspur.com>
Date: 星期三, 13 五月 2020 20:38:32 +0800
Subject: [PATCH] 增加设备删除接口,只允许删除离线设备;增加视频停止播放接口

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 53 insertions(+), 4 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 5adbf66..b4eb4d2 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
@@ -46,14 +46,15 @@
 		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(device.getDeviceId(),
+		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,6 +72,49 @@
 		return request;
 	}
 	
+//	public Request createInviteRequest(Device device, 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(device.getDeviceId(),sipConfig.getSipIp()+":"+sipConfig.getSipPort());
+//		Address fromAddress = layer.getAddressFactory().createAddress(fromSipURI);
+//		FromHeader fromHeader = layer.getHeaderFactory().createFromHeader(fromAddress, fromTag); //蹇呴』瑕佹湁鏍囪锛屽惁鍒欐棤娉曞垱寤轰細璇濓紝鏃犳硶鍥炲簲ack
+//		//to
+//		SipURI toSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),host.getAddress()); 
+//		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;
+//	}
+	
 	public Request createInviteRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException {
 		Request request = null;
 		Host host = device.getHost();
@@ -82,11 +126,11 @@
 		viaHeader.setRPort();
 		viaHeaders.add(viaHeader);
 		//from
-		SipURI fromSipURI = layer.getAddressFactory().createSipURI(device.getDeviceId(),sipConfig.getSipIp()+":"+sipConfig.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(device.getDeviceId(),sipConfig.getSipDomain()); 
 		Address toAddress = layer.getAddressFactory().createAddress(toSipURI);
 		ToHeader toHeader = layer.getHeaderFactory().createToHeader(toAddress,null);
 
@@ -101,9 +145,14 @@
 		
 		//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