old mode 100644
new mode 100755
|  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.SipLayer; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.utils.SipUtils; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 
|---|
|  |  |  | 
|---|
|  |  |  | parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort()); | 
|---|
|  |  |  | //via | 
|---|
|  |  |  | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(parentPlatform.getServerIP(), | 
|---|
|  |  |  | parentPlatform.getServerPort(), parentPlatform.getTransport(), SipUtils.getNewViaTag()); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), | 
|---|
|  |  |  | parentPlatform.getDevicePort(), parentPlatform.getTransport(), SipUtils.getNewViaTag()); | 
|---|
|  |  |  | viaHeader.setRPort(); | 
|---|
|  |  |  | viaHeaders.add(viaHeader); | 
|---|
|  |  |  | //from | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Request createMessageRequest(ParentPlatform parentPlatform, String content, SendRtpItem sendRtpItem) throws PeerUnavailableException, ParseException, InvalidArgumentException { | 
|---|
|  |  |  | CallIdHeader callIdHeader = SipFactory.getInstance().createHeaderFactory().createCallIdHeader(sendRtpItem.getCallId()); | 
|---|
|  |  |  | callIdHeader.setCallId(sendRtpItem.getCallId()); | 
|---|
|  |  |  | return createMessageRequest(parentPlatform, content, sendRtpItem.getToTag(), SipUtils.getNewViaTag(), sendRtpItem.getFromTag(), callIdHeader); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | SipURI requestURI = SipFactory.getInstance().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress); | 
|---|
|  |  |  | // via | 
|---|
|  |  |  | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()), | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), parentPlatform.getDevicePort(), | 
|---|
|  |  |  | parentPlatform.getTransport(), viaTag); | 
|---|
|  |  |  | viaHeader.setRPort(); | 
|---|
|  |  |  | viaHeaders.add(viaHeader); | 
|---|
|  |  |  | 
|---|
|  |  |  | SipURI requestURI = SipFactory.getInstance().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort()); | 
|---|
|  |  |  | // via | 
|---|
|  |  |  | ArrayList<ViaHeader> viaHeaders = new ArrayList<>(); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()), | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), parentPlatform.getDevicePort(), | 
|---|
|  |  |  | parentPlatform.getTransport(), SipUtils.getNewViaTag()); | 
|---|
|  |  |  | viaHeader.setRPort(); | 
|---|
|  |  |  | viaHeaders.add(viaHeader); | 
|---|
|  |  |  | 
|---|
|  |  |  | SipURI fromSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), | 
|---|
|  |  |  | parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort()); | 
|---|
|  |  |  | Address fromAddress = SipFactory.getInstance().createAddressFactory().createAddress(fromSipURI); | 
|---|
|  |  |  | FromHeader fromHeader = SipFactory.getInstance().createHeaderFactory().createFromHeader(fromAddress, subscribeInfo.getResponse().getToTag()); | 
|---|
|  |  |  | FromHeader fromHeader = SipFactory.getInstance().createHeaderFactory().createFromHeader(fromAddress, subscribeInfo.getResponse() != null ? subscribeInfo.getResponse().getToTag(): subscribeInfo.getSimulatedToTag()); | 
|---|
|  |  |  | // to | 
|---|
|  |  |  | SipURI toSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerGBDomain()); | 
|---|
|  |  |  | Address toAddress = SipFactory.getInstance().createAddressFactory().createAddress(toSipURI); | 
|---|
|  |  |  | ToHeader toHeader = SipFactory.getInstance().createHeaderFactory().createToHeader(toAddress, subscribeInfo.getRequest().getFromTag()); | 
|---|
|  |  |  | ToHeader toHeader = SipFactory.getInstance().createHeaderFactory().createToHeader(toAddress, subscribeInfo.getRequest() != null ?subscribeInfo.getRequest().getFromTag(): subscribeInfo.getSimulatedFromTag()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // Forwards | 
|---|
|  |  |  | MaxForwardsHeader maxForwards = SipFactory.getInstance().createHeaderFactory().createMaxForwardsHeader(70); | 
|---|
|  |  |  | 
|---|
|  |  |  | // 设置编码, 防止中文乱码 | 
|---|
|  |  |  | messageFactory.setDefaultContentEncodingCharset("gb2312"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | CallIdHeader callIdHeader = SipFactory.getInstance().createHeaderFactory().createCallIdHeader(subscribeInfo.getRequest().getCallIdHeader().getCallId()); | 
|---|
|  |  |  | CallIdHeader callIdHeader = SipFactory.getInstance().createHeaderFactory().createCallIdHeader(subscribeInfo.getRequest() != null ? subscribeInfo.getRequest().getCallIdHeader().getCallId(): subscribeInfo.getSimulatedCallId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request = (SIPRequest) messageFactory.createRequest(requestURI, Request.NOTIFY, callIdHeader, cSeqHeader, fromHeader, | 
|---|
|  |  |  | toHeader, viaHeaders, maxForwards); | 
|---|
|  |  |  | 
|---|
|  |  |  | SipURI requestURI = SipFactory.getInstance().createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerIP()+ ":" + platform.getServerPort()); | 
|---|
|  |  |  | // via | 
|---|
|  |  |  | ArrayList<ViaHeader> viaHeaders = new ArrayList<>(); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(platform.getDeviceIp(), Integer.parseInt(platform.getDevicePort()), | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(platform.getDeviceIp(), platform.getDevicePort(), | 
|---|
|  |  |  | platform.getTransport(), SipUtils.getNewViaTag()); | 
|---|
|  |  |  | viaHeader.setRPort(); | 
|---|
|  |  |  | viaHeaders.add(viaHeader); | 
|---|
|  |  |  | // from | 
|---|
|  |  |  | SipURI fromSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(platform.getDeviceGBId(), | 
|---|
|  |  |  | SipURI fromSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(sendRtpItem.getChannelId(), | 
|---|
|  |  |  | platform.getDeviceIp() + ":" + platform.getDevicePort()); | 
|---|
|  |  |  | Address fromAddress = SipFactory.getInstance().createAddressFactory().createAddress(fromSipURI); | 
|---|
|  |  |  | FromHeader fromHeader = SipFactory.getInstance().createHeaderFactory().createFromHeader(fromAddress, sendRtpItem.getToTag()); | 
|---|
|  |  |  | 
|---|
|  |  |  | MaxForwardsHeader maxForwards = SipFactory.getInstance().createHeaderFactory().createMaxForwardsHeader(70); | 
|---|
|  |  |  | // ceq | 
|---|
|  |  |  | CSeqHeader cSeqHeader = SipFactory.getInstance().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE); | 
|---|
|  |  |  | MessageFactoryImpl messageFactory = (MessageFactoryImpl) SipFactory.getInstance().createMessageFactory(); | 
|---|
|  |  |  | // 设置编码, 防止中文乱码 | 
|---|
|  |  |  | messageFactory.setDefaultContentEncodingCharset("gb2312"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | CallIdHeader callIdHeader = SipFactory.getInstance().createHeaderFactory().createCallIdHeader(sendRtpItem.getCallId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request = (SIPRequest) messageFactory.createRequest(requestURI, Request.BYE, callIdHeader, cSeqHeader, fromHeader, | 
|---|
|  |  |  | request = (SIPRequest) SipFactory.getInstance().createMessageFactory().createRequest(requestURI, Request.BYE, callIdHeader, cSeqHeader, fromHeader, | 
|---|
|  |  |  | toHeader, viaHeaders, maxForwards); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request.addHeader(SipUtils.createUserAgentHeader(gitUtil)); | 
|---|
|  |  |  | 
|---|
|  |  |  | String sipAddress = platform.getDeviceIp() + ":" + platform.getDevicePort(); | 
|---|
|  |  |  | Address concatAddress = SipFactory.getInstance().createAddressFactory().createAddress(SipFactory.getInstance().createAddressFactory() | 
|---|
|  |  |  | .createSipURI(platform.getDeviceGBId(), sipAddress)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request.addHeader(SipFactory.getInstance().createHeaderFactory().createContactHeader(concatAddress)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return request; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Request createInviteRequest(ParentPlatform platform, String channelId, String content, String viaTag, String fromTag, String ssrc, CallIdHeader callIdHeader) throws PeerUnavailableException, ParseException, InvalidArgumentException { | 
|---|
|  |  |  | Request request = null; | 
|---|
|  |  |  | //请求行 | 
|---|
|  |  |  | String platformHostAddress = platform.getServerIP() + ":" + platform.getServerPort(); | 
|---|
|  |  |  | String localHostAddress = sipLayer.getLocalIp(platform.getDeviceIp())+":"+ platform.getDevicePort(); | 
|---|
|  |  |  | SipURI requestLine = SipFactory.getInstance().createAddressFactory().createSipURI(channelId, platformHostAddress); | 
|---|
|  |  |  | //via | 
|---|
|  |  |  | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(platform.getDeviceIp()), platform.getDevicePort(), platform.getTransport(), viaTag); | 
|---|
|  |  |  | viaHeader.setRPort(); | 
|---|
|  |  |  | viaHeaders.add(viaHeader); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //from | 
|---|
|  |  |  | SipURI fromSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain()); | 
|---|
|  |  |  | Address fromAddress = SipFactory.getInstance().createAddressFactory().createAddress(fromSipURI); | 
|---|
|  |  |  | FromHeader fromHeader = SipFactory.getInstance().createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack | 
|---|
|  |  |  | //to | 
|---|
|  |  |  | SipURI toSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(channelId, platformHostAddress); | 
|---|
|  |  |  | Address toAddress = SipFactory.getInstance().createAddressFactory().createAddress(toSipURI); | 
|---|
|  |  |  | ToHeader toHeader = SipFactory.getInstance().createHeaderFactory().createToHeader(toAddress,null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //Forwards | 
|---|
|  |  |  | MaxForwardsHeader maxForwards = SipFactory.getInstance().createHeaderFactory().createMaxForwardsHeader(70); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //ceq | 
|---|
|  |  |  | CSeqHeader cSeqHeader = SipFactory.getInstance().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE); | 
|---|
|  |  |  | request = SipFactory.getInstance().createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request.addHeader(SipUtils.createUserAgentHeader(gitUtil)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Address concatAddress = SipFactory.getInstance().createAddressFactory().createAddress(SipFactory.getInstance().createAddressFactory().createSipURI(sipConfig.getId(),localHostAddress)); | 
|---|
|  |  |  | request.addHeader(SipFactory.getInstance().createHeaderFactory().createContactHeader(concatAddress)); | 
|---|
|  |  |  | // Subject | 
|---|
|  |  |  | SubjectHeader subjectHeader = SipFactory.getInstance().createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0)); | 
|---|
|  |  |  | request.addHeader(subjectHeader); | 
|---|
|  |  |  | ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP"); | 
|---|
|  |  |  | request.setContent(content, contentTypeHeader); | 
|---|
|  |  |  | return request; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Request createByteRequest(ParentPlatform platform, String channelId, SipTransactionInfo transactionInfo) throws PeerUnavailableException, ParseException, InvalidArgumentException { | 
|---|
|  |  |  | String deviceHostAddress = platform.getDeviceIp() + ":" + platform.getDevicePort(); | 
|---|
|  |  |  | Request request = null; | 
|---|
|  |  |  | SipURI requestLine = SipFactory.getInstance().createAddressFactory().createSipURI(channelId, deviceHostAddress); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // via | 
|---|
|  |  |  | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); | 
|---|
|  |  |  | ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(platform.getDeviceIp()), platform.getDevicePort(), platform.getTransport(), SipUtils.getNewViaTag()); | 
|---|
|  |  |  | viaHeaders.add(viaHeader); | 
|---|
|  |  |  | //from | 
|---|
|  |  |  | SipURI fromSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain()); | 
|---|
|  |  |  | Address fromAddress = SipFactory.getInstance().createAddressFactory().createAddress(fromSipURI); | 
|---|
|  |  |  | FromHeader fromHeader = SipFactory.getInstance().createHeaderFactory().createFromHeader(fromAddress, transactionInfo.isAsSender()?transactionInfo.getFromTag():transactionInfo.getToTag()); | 
|---|
|  |  |  | //to | 
|---|
|  |  |  | SipURI toSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(channelId, deviceHostAddress); | 
|---|
|  |  |  | Address toAddress = SipFactory.getInstance().createAddressFactory().createAddress(toSipURI); | 
|---|
|  |  |  | ToHeader toHeader = SipFactory.getInstance().createHeaderFactory().createToHeader(toAddress,transactionInfo.isAsSender()?transactionInfo.getToTag():transactionInfo.getFromTag()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //Forwards | 
|---|
|  |  |  | MaxForwardsHeader maxForwards = SipFactory.getInstance().createHeaderFactory().createMaxForwardsHeader(70); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //ceq | 
|---|
|  |  |  | CSeqHeader cSeqHeader = SipFactory.getInstance().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE); | 
|---|
|  |  |  | CallIdHeader callIdHeader = SipFactory.getInstance().createHeaderFactory().createCallIdHeader(transactionInfo.getCallId()); | 
|---|
|  |  |  | request = SipFactory.getInstance().createMessageFactory().createRequest(requestLine, Request.BYE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request.addHeader(SipUtils.createUserAgentHeader(gitUtil)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Address concatAddress = SipFactory.getInstance().createAddressFactory().createAddress(SipFactory.getInstance().createAddressFactory().createSipURI(sipConfig.getId(), sipLayer.getLocalIp(platform.getDeviceIp())+":"+ platform.getDevicePort())); | 
|---|
|  |  |  | request.addHeader(SipFactory.getInstance().createHeaderFactory().createContactHeader(concatAddress)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | request.addHeader(SipUtils.createUserAgentHeader(gitUtil)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return request; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|