Commit 1ab73f69ebdb30cdf8aeb5437c307df34bc0f6a6

Authored by 648540858
1 parent f3454caa

支持多网卡

Showing 19 changed files with 475 additions and 434 deletions
sql/update.sql
... ... @@ -14,6 +14,9 @@ alter table device
14 14 add sdpIp varchar(50) default null;
15 15  
16 16 alter table device
  17 + add localIp varchar(50) default null;
  18 +
  19 +alter table device
17 20 add password varchar(255) default null;
18 21  
19 22 alter table device
... ...
src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
... ... @@ -10,11 +10,6 @@ public class SipConfig {
10 10  
11 11 private String ip;
12 12  
13   - /**
14   - * 默认使用 0.0.0.0
15   - */
16   - private String monitorIp = "0.0.0.0";
17   -
18 13 private Integer port;
19 14  
20 15 private String domain;
... ... @@ -35,10 +30,6 @@ public class SipConfig {
35 30 this.ip = ip;
36 31 }
37 32  
38   - public void setMonitorIp(String monitorIp) {
39   - this.monitorIp = monitorIp;
40   - }
41   -
42 33 public void setPort(Integer port) {
43 34 this.port = port;
44 35 }
... ... @@ -67,10 +58,6 @@ public class SipConfig {
67 58 this.registerTimeInterval = registerTimeInterval;
68 59 }
69 60  
70   - public String getMonitorIp() {
71   - return monitorIp;
72   - }
73   -
74 61 public String getIp() {
75 62 return ip;
76 63 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
... ... @@ -8,16 +8,17 @@ import gov.nist.javax.sip.SipStackImpl;
8 8 import org.slf4j.Logger;
9 9 import org.slf4j.LoggerFactory;
10 10 import org.springframework.beans.factory.annotation.Autowired;
11   -import org.springframework.context.annotation.Bean;
12   -import org.springframework.context.annotation.Configuration;
13   -import org.springframework.context.annotation.DependsOn;
  11 +import org.springframework.boot.CommandLineRunner;
  12 +import org.springframework.core.annotation.Order;
  13 +import org.springframework.stereotype.Component;
14 14  
15 15 import javax.sip.*;
16   -import java.util.Properties;
17   -import java.util.TooManyListenersException;
  16 +import java.util.*;
  17 +import java.util.concurrent.ConcurrentHashMap;
18 18  
19   -@Configuration
20   -public class SipLayer{
  19 +@Component
  20 +@Order(value=1)
  21 +public class SipLayer implements CommandLineRunner {
21 22  
22 23 private final static Logger logger = LoggerFactory.getLogger(SipLayer.class);
23 24  
... ... @@ -27,70 +28,103 @@ public class SipLayer{
27 28 @Autowired
28 29 private ISIPProcessorObserver sipProcessorObserver;
29 30  
30   - private SipStackImpl sipStack;
  31 +
  32 +
  33 + private final Map<String, SipProviderImpl> tcpSipProviderMap = new ConcurrentHashMap<>();
  34 + private final Map<String, SipProviderImpl> udpSipProviderMap = new ConcurrentHashMap<>();
31 35  
32 36 private SipFactory sipFactory;
33 37  
  38 + @Override
  39 + public void run(String... args) {
  40 + List<String> monitorIps = new ArrayList<>();
  41 + // 使用逗号分割多个ip
  42 + String separator = ",";
  43 + if (sipConfig.getIp().indexOf(separator) > 0) {
  44 + String[] split = sipConfig.getIp().split(separator);
  45 + monitorIps.addAll(Arrays.asList(split));
  46 + }else {
  47 + monitorIps.add(sipConfig.getIp());
  48 + }
34 49  
35   - @Bean("sipFactory")
36   - SipFactory createSipFactory() {
37 50 sipFactory = SipFactory.getInstance();
38 51 sipFactory.setPathName("gov.nist");
39   - return sipFactory;
40   - }
41   -
42   - @Bean("sipStack")
43   - @DependsOn({"sipFactory"})
44   - SipStackImpl createSipStack() throws PeerUnavailableException {
45   - sipStack = ( SipStackImpl )sipFactory.createSipStack(DefaultProperties.getProperties(sipConfig.getMonitorIp(), false));
46   - return sipStack;
  52 + if (monitorIps.size() > 0) {
  53 + for (String monitorIp : monitorIps) {
  54 + addListeningPoint(monitorIp, sipConfig.getPort());
  55 + }
  56 + if (udpSipProviderMap.size() + tcpSipProviderMap.size() == 0) {
  57 + System.exit(1);
  58 + }
  59 + }
47 60 }
48 61  
49   - @Bean(name = "tcpSipProvider")
50   - @DependsOn("sipStack")
51   - SipProviderImpl startTcpListener() {
52   - ListeningPoint tcpListeningPoint = null;
53   - SipProviderImpl tcpSipProvider = null;
  62 + private void addListeningPoint(String monitorIp, int port){
  63 + SipStackImpl sipStack;
  64 + try {
  65 + sipStack = (SipStackImpl)sipFactory.createSipStack(DefaultProperties.getProperties(monitorIp, false));
  66 + } catch (PeerUnavailableException e) {
  67 + logger.error("[Sip Server] SIP服务启动失败, 监听地址{}失败,请检查ip是否正确", monitorIp);
  68 + return;
  69 + }
  70 +
54 71 try {
55   - tcpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "TCP");
56   - tcpSipProvider = (SipProviderImpl)sipStack.createSipProvider(tcpListeningPoint);
  72 + ListeningPoint tcpListeningPoint = sipStack.createListeningPoint(monitorIp, port, "TCP");
  73 + SipProviderImpl tcpSipProvider = (SipProviderImpl)sipStack.createSipProvider(tcpListeningPoint);
57 74 tcpSipProvider.setDialogErrorsAutomaticallyHandled();
58 75 tcpSipProvider.addSipListener(sipProcessorObserver);
59   - logger.info("[Sip Server] TCP 启动成功 {}:{}", sipConfig.getMonitorIp(), sipConfig.getPort());
60   - } catch (TransportNotSupportedException e) {
61   - e.printStackTrace();
62   - } catch (InvalidArgumentException e) {
63   - logger.error("[Sip Server] 无法使用 [ {}:{} ]作为SIP[ TCP ]服务,可排查: 1. sip.monitor-ip 是否为本机网卡IP; 2. sip.port 是否已被占用"
64   - , sipConfig.getMonitorIp(), sipConfig.getPort());
65   - } catch (TooManyListenersException e) {
66   - e.printStackTrace();
67   - } catch (ObjectInUseException e) {
68   - e.printStackTrace();
  76 + tcpSipProviderMap.put(monitorIp, tcpSipProvider);
  77 +
  78 + logger.info("[Sip Server] tcp://{}:{} 启动成功", monitorIp, port);
  79 + } catch (TransportNotSupportedException
  80 + | TooManyListenersException
  81 + | ObjectInUseException
  82 + | InvalidArgumentException e) {
  83 + logger.error("[Sip Server] tcp://{}:{} SIP服务启动失败,请检查端口是否被占用或者ip是否正确"
  84 + , monitorIp, port);
69 85 }
70   - return tcpSipProvider;
71   - }
72   -
73   - @Bean(name = "udpSipProvider")
74   - @DependsOn("sipStack")
75   - SipProviderImpl startUdpListener() {
76   - ListeningPoint udpListeningPoint = null;
77   - SipProviderImpl udpSipProvider = null;
  86 +
78 87 try {
79   - udpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "UDP");
80   - udpSipProvider = (SipProviderImpl)sipStack.createSipProvider(udpListeningPoint);
  88 + ListeningPoint udpListeningPoint = sipStack.createListeningPoint(monitorIp, port, "UDP");
  89 +
  90 + SipProviderImpl udpSipProvider = (SipProviderImpl)sipStack.createSipProvider(udpListeningPoint);
81 91 udpSipProvider.addSipListener(sipProcessorObserver);
82   - } catch (TransportNotSupportedException e) {
83   - e.printStackTrace();
84   - } catch (InvalidArgumentException e) {
85   - logger.error("[Sip Server] 无法使用 [ {}:{} ]作为SIP[ UDP ]服务,可排查: 1. sip.monitor-ip 是否为本机网卡IP; 2. sip.port 是否已被占用"
86   - , sipConfig.getMonitorIp(), sipConfig.getPort());
87   - } catch (TooManyListenersException e) {
88   - e.printStackTrace();
89   - } catch (ObjectInUseException e) {
90   - e.printStackTrace();
  92 +
  93 + udpSipProviderMap.put(monitorIp, udpSipProvider);
  94 +
  95 + logger.info("[Sip Server] udp://{}:{} 启动成功", monitorIp, port);
  96 + } catch (TransportNotSupportedException
  97 + | TooManyListenersException
  98 + | ObjectInUseException
  99 + | InvalidArgumentException e) {
  100 + logger.error("[Sip Server] udp://{}:{} SIP服务启动失败,请检查端口是否被占用或者ip是否正确"
  101 + , monitorIp, port);
91 102 }
92   - logger.info("[Sip Server] UDP 启动成功 {}:{}", sipConfig.getMonitorIp(), sipConfig.getPort());
93   - return udpSipProvider;
94 103 }
95 104  
  105 + public SipFactory getSipFactory() {
  106 + return sipFactory;
  107 + }
  108 +
  109 + public SipProviderImpl getUdpSipProvider(String ip) {
  110 + return udpSipProviderMap.get(ip);
  111 + }
  112 +
  113 + public SipProviderImpl getUdpSipProvider() {
  114 + if (udpSipProviderMap.size() != 1) {
  115 + return null;
  116 + }
  117 + return udpSipProviderMap.values().stream().findFirst().get();
  118 + }
  119 +
  120 + public SipProviderImpl getTcpSipProvider() {
  121 + if (tcpSipProviderMap.size() != 1) {
  122 + return null;
  123 + }
  124 + return tcpSipProviderMap.values().stream().findFirst().get();
  125 + }
  126 +
  127 + public SipProviderImpl getTcpSipProvider(String ip) {
  128 + return tcpSipProviderMap.get(ip);
  129 + }
96 130 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
... ... @@ -178,6 +178,9 @@ public class Device {
178 178 @Schema(description = "收流IP")
179 179 private String sdpIp;
180 180  
  181 + @Schema(description = "SIP交互IP(设备访问平台的IP)")
  182 + private String localIp;
  183 +
181 184  
182 185 public String getDeviceId() {
183 186 return deviceId;
... ... @@ -402,4 +405,12 @@ public class Device {
402 405 public void setSdpIp(String sdpIp) {
403 406 this.sdpIp = sdpIp;
404 407 }
  408 +
  409 + public String getLocalIp() {
  410 + return localIp;
  411 + }
  412 +
  413 + public void setLocalIp(String localIp) {
  414 + this.localIp = localIp;
  415 + }
405 416 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
... ... @@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
5 5 import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
6 6 import com.genersoft.iot.vmp.gb28181.transmit.event.response.ISIPResponseProcessor;
7 7 import com.genersoft.iot.vmp.gb28181.transmit.event.timeout.ITimeoutProcessor;
  8 +import gov.nist.javax.sip.message.SIPRequest;
8 9 import org.slf4j.Logger;
9 10 import org.slf4j.LoggerFactory;
10 11 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -15,6 +16,7 @@ import javax.sip.*;
15 16 import javax.sip.header.*;
16 17 import javax.sip.message.Request;
17 18 import javax.sip.message.Response;
  19 +import java.net.InetAddress;
18 20 import java.util.Map;
19 21 import java.util.concurrent.ConcurrentHashMap;
20 22  
... ... @@ -75,6 +77,7 @@ public class SIPProcessorObserver implements ISIPProcessorObserver {
75 77 ISIPRequestProcessor sipRequestProcessor = requestProcessorMap.get(method);
76 78 if (sipRequestProcessor == null) {
77 79 logger.warn("不支持方法{}的request", method);
  80 + // TODO 回复错误玛
78 81 return;
79 82 }
80 83 requestProcessorMap.get(method).process(requestEvent);
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
1 1 package com.genersoft.iot.vmp.gb28181.transmit;
2 2  
  3 +import com.genersoft.iot.vmp.gb28181.SipLayer;
3 4 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
4 5 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
5 6 import com.genersoft.iot.vmp.utils.GitUtil;
6 7 import gov.nist.javax.sip.SipProviderImpl;
  8 +import gov.nist.javax.sip.message.SIPRequest;
7 9 import org.slf4j.Logger;
8 10 import org.slf4j.LoggerFactory;
9 11 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -18,6 +20,7 @@ import javax.sip.header.ViaHeader;
18 20 import javax.sip.message.Message;
19 21 import javax.sip.message.Request;
20 22 import javax.sip.message.Response;
  23 +import java.net.InetAddress;
21 24 import java.text.ParseException;
22 25  
23 26 /**
... ... @@ -30,15 +33,7 @@ public class SIPSender {
30 33 private final Logger logger = LoggerFactory.getLogger(SIPSender.class);
31 34  
32 35 @Autowired
33   - @Qualifier(value = "tcpSipProvider")
34   - private SipProviderImpl tcpSipProvider;
35   -
36   - @Autowired
37   - @Qualifier(value = "udpSipProvider")
38   - private SipProviderImpl udpSipProvider;
39   -
40   - @Autowired
41   - private SipFactory sipFactory;
  36 + private SipLayer sipLayer;
42 37  
43 38 @Autowired
44 39 private GitUtil gitUtil;
... ... @@ -46,25 +41,25 @@ public class SIPSender {
46 41 @Autowired
47 42 private SipSubscribe sipSubscribe;
48 43  
49   - public void transmitRequest(Message message) throws SipException, ParseException {
50   - transmitRequest(message, null, null);
  44 + public void transmitRequest(String ip, Message message) throws SipException, ParseException {
  45 + transmitRequest(ip, message, null, null);
51 46 }
52 47  
53   - public void transmitRequest(Message message, SipSubscribe.Event errorEvent) throws SipException, ParseException {
54   - transmitRequest(message, errorEvent, null);
  48 + public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent) throws SipException, ParseException {
  49 + transmitRequest(ip, message, errorEvent, null);
55 50 }
56 51  
57   - public void transmitRequest(Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, ParseException {
  52 + public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, ParseException {
58 53 ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
59 54 String transport = "UDP";
60 55 if (viaHeader == null) {
61   - logger.warn("[消息头缺失]: ViaHeader");
  56 + logger.warn("[消息头缺失]: ViaHeader, 使用默认的UDP方式处理数据");
62 57 }else {
63 58 transport = viaHeader.getTransport();
64 59 }
65 60 if (message.getHeader(UserAgentHeader.NAME) == null) {
66 61 try {
67   - message.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  62 + message.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
68 63 } catch (ParseException e) {
69 64 logger.error("添加UserAgentHeader失败", e);
70 65 }
... ... @@ -88,6 +83,11 @@ public class SIPSender {
88 83 });
89 84 }
90 85 if ("TCP".equals(transport)) {
  86 + SipProviderImpl tcpSipProvider = sipLayer.getTcpSipProvider(ip);
  87 + if (tcpSipProvider == null) {
  88 + logger.error("[发送信息失败] 未找到tcp://{}的监听信息", ip);
  89 + return;
  90 + }
91 91 if (message instanceof Request) {
92 92 tcpSipProvider.sendRequest((Request)message);
93 93 }else if (message instanceof Response) {
... ... @@ -95,16 +95,21 @@ public class SIPSender {
95 95 }
96 96  
97 97 } else if ("UDP".equals(transport)) {
  98 + SipProviderImpl sipProvider = sipLayer.getUdpSipProvider(ip);
  99 + if (sipProvider == null) {
  100 + logger.error("[发送信息失败] 未找到udp://{}的监听信息", ip);
  101 + return;
  102 + }
98 103 if (message instanceof Request) {
99   - udpSipProvider.sendRequest((Request)message);
  104 + sipProvider.sendRequest((Request)message);
100 105 }else if (message instanceof Response) {
101   - udpSipProvider.sendResponse((Response)message);
  106 + sipProvider.sendResponse((Response)message);
102 107 }
103 108 }
104 109 }
105 110  
106   - public CallIdHeader getNewCallIdHeader(String transport){
107   - return transport.equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
108   - : udpSipProvider.getNewCallId();
  111 + public CallIdHeader getNewCallIdHeader(String ip, String transport){
  112 + return transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider(ip).getNewCallId()
  113 + : sipLayer.getUdpSipProvider(ip).getNewCallId();
109 114 }
110 115 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
1 1 package com.genersoft.iot.vmp.gb28181.transmit.cmd;
2 2  
3 3 import com.genersoft.iot.vmp.conf.SipConfig;
  4 +import com.genersoft.iot.vmp.gb28181.SipLayer;
4 5 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
5 6 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
6 7 import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;
... ... @@ -36,7 +37,7 @@ public class SIPRequestHeaderPlarformProvider {
36 37 private SipConfig sipConfig;
37 38  
38 39 @Autowired
39   - private SipFactory sipFactory;
  40 + private SipLayer sipLayer;
40 41  
41 42 @Autowired
42 43 private GitUtil gitUtil;
... ... @@ -48,38 +49,38 @@ public class SIPRequestHeaderPlarformProvider {
48 49 Request request = null;
49 50 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort();
50 51 //请求行
51   - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(platform.getServerGBId(),
  52 + SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getServerGBId(),
52 53 platform.getServerIP() + ":" + platform.getServerPort());
53 54 //via
54 55 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
55   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(platform.getServerIP(), platform.getServerPort(), platform.getTransport(), viaTag);
  56 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(platform.getServerIP(), platform.getServerPort(), platform.getTransport(), viaTag);
56 57 viaHeader.setRPort();
57 58 viaHeaders.add(viaHeader);
58 59 //from
59   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain());
60   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
61   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
  60 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain());
  61 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  62 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, fromTag);
62 63 //to
63   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain());
64   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
65   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
  64 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain());
  65 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  66 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress,null);
66 67  
67 68 //Forwards
68   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  69 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
69 70  
70 71 //ceq
71   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(CSeq, Request.REGISTER);
72   - request = sipFactory.createMessageFactory().createRequest(requestLine, Request.REGISTER, callIdHeader,
  72 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(CSeq, Request.REGISTER);
  73 + request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestLine, Request.REGISTER, callIdHeader,
73 74 cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
74 75  
75   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory()
  76 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory()
76 77 .createSipURI(platform.getDeviceGBId(), sipAddress));
77   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  78 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
78 79  
79   - ExpiresHeader expires = sipFactory.createHeaderFactory().createExpiresHeader(isRegister ? platform.getExpires() : 0);
  80 + ExpiresHeader expires = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(isRegister ? platform.getExpires() : 0);
80 81 request.addHeader(expires);
81 82  
82   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  83 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
83 84  
84 85 return request;
85 86 }
... ... @@ -89,9 +90,9 @@ public class SIPRequestHeaderPlarformProvider {
89 90  
90 91  
91 92 Request registerRequest = createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), fromTag, viaTag, callIdHeader, isRegister);
92   - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
  93 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
93 94 if (www == null) {
94   - AuthorizationHeader authorizationHeader = sipFactory.createHeaderFactory().createAuthorizationHeader("Digest");
  95 + AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader("Digest");
95 96 authorizationHeader.setUsername(parentPlatform.getDeviceGBId());
96 97 authorizationHeader.setURI(requestURI);
97 98 authorizationHeader.setAlgorithm("MD5");
... ... @@ -140,7 +141,7 @@ public class SIPRequestHeaderPlarformProvider {
140 141  
141 142 String RESPONSE = DigestUtils.md5DigestAsHex(reStr.toString().getBytes());
142 143  
143   - AuthorizationHeader authorizationHeader = sipFactory.createHeaderFactory().createAuthorizationHeader(scheme);
  144 + AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader(scheme);
144 145 authorizationHeader.setUsername(parentPlatform.getDeviceGBId());
145 146 authorizationHeader.setRealm(realm);
146 147 authorizationHeader.setNonce(nonce);
... ... @@ -158,7 +159,7 @@ public class SIPRequestHeaderPlarformProvider {
158 159 }
159 160  
160 161 public Request createMessageRequest(ParentPlatform parentPlatform, String content, SendRtpItem sendRtpItem) throws PeerUnavailableException, ParseException, InvalidArgumentException {
161   - CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(sendRtpItem.getCallId());
  162 + CallIdHeader callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(sendRtpItem.getCallId());
162 163 return createMessageRequest(parentPlatform, content, sendRtpItem.getToTag(), SipUtils.getNewViaTag(), sendRtpItem.getFromTag(), callIdHeader);
163 164 }
164 165  
... ... @@ -171,36 +172,36 @@ public class SIPRequestHeaderPlarformProvider {
171 172 Request request = null;
172 173 String serverAddress = parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort();
173 174 // sipuri
174   - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
  175 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
175 176 // via
176 177 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
177   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
  178 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
178 179 parentPlatform.getTransport(), viaTag);
179 180 viaHeader.setRPort();
180 181 viaHeaders.add(viaHeader);
181 182 // from
182   - // SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), parentPlatform.getDeviceIp() + ":" + parentPlatform.getDeviceIp());
183   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), sipConfig.getDomain());
184   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
185   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
  183 + // SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), parentPlatform.getDeviceIp() + ":" + parentPlatform.getDeviceIp());
  184 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), sipConfig.getDomain());
  185 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  186 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, fromTag);
186 187 // to
187   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
188   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
189   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
  188 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
  189 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  190 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, toTag);
190 191  
191 192 // Forwards
192   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  193 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
193 194 // ceq
194   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.MESSAGE);
195   - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
  195 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.MESSAGE);
  196 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
196 197 // 设置编码, 防止中文乱码
197 198 messageFactory.setDefaultContentEncodingCharset(parentPlatform.getCharacterSet());
198 199 request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
199 200 toHeader, viaHeaders, maxForwards);
200 201  
201   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  202 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
202 203  
203   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
  204 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
204 205 request.setContent(content, contentTypeHeader);
205 206 return request;
206 207 }
... ... @@ -208,54 +209,54 @@ public class SIPRequestHeaderPlarformProvider {
208 209 public SIPRequest createNotifyRequest(ParentPlatform parentPlatform, String content, SubscribeInfo subscribeInfo) throws PeerUnavailableException, ParseException, InvalidArgumentException {
209 210 SIPRequest request = null;
210 211 // sipuri
211   - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort());
  212 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort());
212 213 // via
213 214 ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
214   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
  215 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
215 216 parentPlatform.getTransport(), SipUtils.getNewViaTag());
216 217 viaHeader.setRPort();
217 218 viaHeaders.add(viaHeader);
218 219 // from
219   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(),
  220 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(),
220 221 parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort());
221   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
222   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, subscribeInfo.getResponse().getToTag());
  222 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  223 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, subscribeInfo.getResponse().getToTag());
223 224 // to
224   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerGBDomain());
225   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
226   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, subscribeInfo.getRequest().getFromTag());
  225 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerGBDomain());
  226 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  227 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, subscribeInfo.getRequest().getFromTag());
227 228  
228 229 // Forwards
229   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  230 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
230 231 // ceq
231   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.NOTIFY);
232   - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
  232 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.NOTIFY);
  233 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
233 234 // 设置编码, 防止中文乱码
234 235 messageFactory.setDefaultContentEncodingCharset("gb2312");
235 236  
236   - CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(subscribeInfo.getRequest().getCallIdHeader().getCallId());
  237 + CallIdHeader callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(subscribeInfo.getRequest().getCallIdHeader().getCallId());
237 238  
238 239 request = (SIPRequest) messageFactory.createRequest(requestURI, Request.NOTIFY, callIdHeader, cSeqHeader, fromHeader,
239 240 toHeader, viaHeaders, maxForwards);
240 241  
241   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  242 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
242 243  
243   - EventHeader event = sipFactory.createHeaderFactory().createEventHeader(subscribeInfo.getEventType());
  244 + EventHeader event = sipLayer.getSipFactory().createHeaderFactory().createEventHeader(subscribeInfo.getEventType());
244 245 if (subscribeInfo.getEventId() != null) {
245 246 event.setEventId(subscribeInfo.getEventId());
246 247 }
247 248  
248 249 request.addHeader(event);
249 250  
250   - SubscriptionStateHeader active = sipFactory.createHeaderFactory().createSubscriptionStateHeader("active");
  251 + SubscriptionStateHeader active = sipLayer.getSipFactory().createHeaderFactory().createSubscriptionStateHeader("active");
251 252 request.setHeader(active);
252 253  
253 254 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort();
254   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory()
  255 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory()
255 256 .createSipURI(parentPlatform.getDeviceGBId(), sipAddress));
256   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  257 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
257 258  
258   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
  259 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
259 260 request.setContent(content, contentTypeHeader);
260 261 return request;
261 262 }
... ... @@ -268,42 +269,42 @@ public class SIPRequestHeaderPlarformProvider {
268 269  
269 270 SIPRequest request = null;
270 271 // sipuri
271   - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerIP()+ ":" + platform.getServerPort());
  272 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerIP()+ ":" + platform.getServerPort());
272 273 // via
273 274 ArrayList<ViaHeader> viaHeaders = new ArrayList<>();
274   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(platform.getDeviceIp(), Integer.parseInt(platform.getDevicePort()),
  275 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(platform.getDeviceIp(), Integer.parseInt(platform.getDevicePort()),
275 276 platform.getTransport(), SipUtils.getNewViaTag());
276 277 viaHeader.setRPort();
277 278 viaHeaders.add(viaHeader);
278 279 // from
279   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(),
  280 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getDeviceGBId(),
280 281 platform.getDeviceIp() + ":" + platform.getDevicePort());
281   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
282   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, sendRtpItem.getToTag());
  282 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  283 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, sendRtpItem.getToTag());
283 284 // to
284   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerGBDomain());
285   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
286   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, sendRtpItem.getFromTag());
  285 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerGBDomain());
  286 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  287 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, sendRtpItem.getFromTag());
287 288  
288 289 // Forwards
289   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  290 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
290 291 // ceq
291   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE);
292   - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
  292 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE);
  293 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
293 294 // 设置编码, 防止中文乱码
294 295 messageFactory.setDefaultContentEncodingCharset("gb2312");
295 296  
296   - CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(sendRtpItem.getCallId());
  297 + CallIdHeader callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(sendRtpItem.getCallId());
297 298  
298 299 request = (SIPRequest) messageFactory.createRequest(requestURI, Request.BYE, callIdHeader, cSeqHeader, fromHeader,
299 300 toHeader, viaHeaders, maxForwards);
300 301  
301   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  302 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
302 303  
303 304 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort();
304   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory()
  305 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory()
305 306 .createSipURI(platform.getDeviceGBId(), sipAddress));
306   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  307 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
307 308  
308 309 return request;
309 310 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
... ... @@ -9,21 +9,15 @@ import javax.sip.address.SipURI;
9 9 import javax.sip.header.*;
10 10 import javax.sip.message.Request;
11 11  
12   -import com.genersoft.iot.vmp.common.StreamInfo;
13   -import com.genersoft.iot.vmp.gb28181.bean.SipMsgInfo;
  12 +import com.genersoft.iot.vmp.gb28181.SipLayer;
14 13 import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
15   -import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
16 14 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
17 15 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
18 16 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
19 17 import com.genersoft.iot.vmp.utils.GitUtil;
20   -import gov.nist.javax.sip.SipProviderImpl;
21   -import gov.nist.javax.sip.SipStackImpl;
22 18 import gov.nist.javax.sip.message.SIPRequest;
23 19 import gov.nist.javax.sip.message.SIPResponse;
24   -import gov.nist.javax.sip.stack.SIPDialog;
25 20 import org.springframework.beans.factory.annotation.Autowired;
26   -import org.springframework.beans.factory.annotation.Qualifier;
27 21 import org.springframework.stereotype.Component;
28 22  
29 23 import com.genersoft.iot.vmp.conf.SipConfig;
... ... @@ -41,7 +35,7 @@ public class SIPRequestHeaderProvider {
41 35 private SipConfig sipConfig;
42 36  
43 37 @Autowired
44   - private SipFactory sipFactory;
  38 + private SipLayer sipLayer;
45 39  
46 40 @Autowired
47 41 private GitUtil gitUtil;
... ... @@ -55,32 +49,32 @@ public class SIPRequestHeaderProvider {
55 49 public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
56 50 Request request = null;
57 51 // sipuri
58   - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
  52 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
59 53 // via
60 54 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
61   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
  55 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
62 56 viaHeader.setRPort();
63 57 viaHeaders.add(viaHeader);
64 58 // from
65   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
66   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
67   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
  59 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
  60 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  61 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, fromTag);
68 62 // to
69   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
70   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
71   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
  63 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
  64 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  65 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, toTag);
72 66  
73 67 // Forwards
74   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  68 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
75 69 // ceq
76   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.MESSAGE);
  70 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.MESSAGE);
77 71  
78   - request = sipFactory.createMessageFactory().createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
  72 + request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
79 73 toHeader, viaHeaders, maxForwards);
80 74  
81   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  75 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
82 76  
83   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
  77 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
84 78 request.setContent(content, contentTypeHeader);
85 79 return request;
86 80 }
... ... @@ -88,38 +82,38 @@ public class SIPRequestHeaderProvider {
88 82 public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
89 83 Request request = null;
90 84 //请求行
91   - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
  85 + SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress());
92 86 //via
93 87 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
94   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
  88 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
95 89 viaHeader.setRPort();
96 90 viaHeaders.add(viaHeader);
97 91  
98 92 //from
99   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
100   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
101   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
  93 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
  94 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  95 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
102 96 //to
103   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
104   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
105   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
  97 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress());
  98 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  99 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress,null);
106 100  
107 101 //Forwards
108   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  102 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
109 103  
110 104 //ceq
111   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE);
112   - request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
  105 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE);
  106 + request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
113 107  
114   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  108 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
115 109  
116   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
117   - // Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
118   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  110 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
  111 + // Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
  112 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
119 113 // Subject
120   - SubjectHeader subjectHeader = sipFactory.createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
  114 + SubjectHeader subjectHeader = sipLayer.getSipFactory().createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
121 115 request.addHeader(subjectHeader);
122   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
  116 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
123 117 request.setContent(content, contentTypeHeader);
124 118 return request;
125 119 }
... ... @@ -127,39 +121,39 @@ public class SIPRequestHeaderProvider {
127 121 public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader, String ssrc) throws ParseException, InvalidArgumentException, PeerUnavailableException {
128 122 Request request = null;
129 123 //请求行
130   - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
  124 + SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress());
131 125 // via
132 126 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
133   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
  127 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
134 128 viaHeader.setRPort();
135 129 viaHeaders.add(viaHeader);
136 130 //from
137   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
138   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
139   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
  131 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
  132 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  133 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
140 134 //to
141   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
142   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
143   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
  135 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress());
  136 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  137 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress,null);
144 138  
145 139 //Forwards
146   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  140 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
147 141  
148 142 //ceq
149   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE);
150   - request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
  143 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE);
  144 + request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
151 145  
152   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
153   - // Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
154   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  146 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
  147 + // Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
  148 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
155 149  
156   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  150 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
157 151  
158 152 // Subject
159   - SubjectHeader subjectHeader = sipFactory.createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
  153 + SubjectHeader subjectHeader = sipLayer.getSipFactory().createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
160 154 request.addHeader(subjectHeader);
161 155  
162   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
  156 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
163 157 request.setContent(content, contentTypeHeader);
164 158 return request;
165 159 }
... ... @@ -167,34 +161,34 @@ public class SIPRequestHeaderProvider {
167 161 public Request createByteRequest(Device device, String channelId, SipTransactionInfo transactionInfo) throws ParseException, InvalidArgumentException, PeerUnavailableException {
168 162 Request request = null;
169 163 //请求行
170   - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
  164 + SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress());
171 165 // via
172 166 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
173   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag());
  167 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag());
174 168 viaHeaders.add(viaHeader);
175 169 //from
176   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
177   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
178   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, transactionInfo.getFromTag());
  170 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
  171 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  172 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, transactionInfo.getFromTag());
179 173 //to
180   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,device.getHostAddress());
181   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
182   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, transactionInfo.getToTag());
  174 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId,device.getHostAddress());
  175 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  176 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, transactionInfo.getToTag());
183 177  
184 178 //Forwards
185   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  179 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
186 180  
187 181 //ceq
188   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE);
189   - CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(transactionInfo.getCallId());
190   - request = sipFactory.createMessageFactory().createRequest(requestLine, Request.BYE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
  182 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.BYE);
  183 + CallIdHeader callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(transactionInfo.getCallId());
  184 + request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestLine, Request.BYE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
191 185  
192   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  186 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
193 187  
194   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
195   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  188 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
  189 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
196 190  
197   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  191 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
198 192  
199 193 return request;
200 194 }
... ... @@ -202,50 +196,50 @@ public class SIPRequestHeaderProvider {
202 196 public Request createSubscribeRequest(Device device, String content, SIPRequest requestOld, Integer expires, String event, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
203 197 Request request = null;
204 198 // sipuri
205   - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
  199 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
206 200 // via
207 201 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
208   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(),
  202 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(),
209 203 device.getTransport(), SipUtils.getNewViaTag());
210 204 viaHeader.setRPort();
211 205 viaHeaders.add(viaHeader);
212 206 // from
213   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
214   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
215   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, requestOld == null ? SipUtils.getNewFromTag() :requestOld.getFromTag());
  207 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
  208 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  209 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, requestOld == null ? SipUtils.getNewFromTag() :requestOld.getFromTag());
216 210 // to
217   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
218   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
219   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, requestOld == null ? null :requestOld.getToTag());
  211 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
  212 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  213 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, requestOld == null ? null :requestOld.getToTag());
220 214  
221 215 // Forwards
222   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  216 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
223 217  
224 218 // ceq
225   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.SUBSCRIBE);
  219 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.SUBSCRIBE);
226 220  
227   - request = sipFactory.createMessageFactory().createRequest(requestURI, Request.SUBSCRIBE, callIdHeader, cSeqHeader, fromHeader,
  221 + request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestURI, Request.SUBSCRIBE, callIdHeader, cSeqHeader, fromHeader,
228 222 toHeader, viaHeaders, maxForwards);
229 223  
230 224  
231   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
232   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  225 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
  226 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
233 227  
234 228 // Expires
235   - ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(expires);
  229 + ExpiresHeader expireHeader = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(expires);
236 230 request.addHeader(expireHeader);
237 231  
238 232 // Event
239   - EventHeader eventHeader = sipFactory.createHeaderFactory().createEventHeader(event);
  233 + EventHeader eventHeader = sipLayer.getSipFactory().createHeaderFactory().createEventHeader(event);
240 234  
241 235 int random = (int) Math.floor(Math.random() * 10000);
242 236 eventHeader.setEventId(random + "");
243 237 request.addHeader(eventHeader);
244 238  
245   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
  239 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
246 240 request.setContent(content, contentTypeHeader);
247 241  
248   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  242 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
249 243  
250 244 return request;
251 245 }
... ... @@ -257,37 +251,37 @@ public class SIPRequestHeaderProvider {
257 251 }
258 252 SIPRequest request = null;
259 253 //请求行
260   - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
  254 + SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress());
261 255 // via
262 256 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
263   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag());
  257 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag());
264 258 viaHeaders.add(viaHeader);
265 259 //from
266   - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
267   - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
268   - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, transactionInfo.getFromTag());
  260 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
  261 + Address fromAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(fromSipURI);
  262 + FromHeader fromHeader = sipLayer.getSipFactory().createHeaderFactory().createFromHeader(fromAddress, transactionInfo.getFromTag());
269 263 //to
270   - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,device.getHostAddress());
271   - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
272   - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, transactionInfo.getToTag());
  264 + SipURI toSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId,device.getHostAddress());
  265 + Address toAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(toSipURI);
  266 + ToHeader toHeader = sipLayer.getSipFactory().createHeaderFactory().createToHeader(toAddress, transactionInfo.getToTag());
273 267  
274 268 //Forwards
275   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  269 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
276 270  
277 271 //ceq
278   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INFO);
279   - CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(transactionInfo.getCallId());
280   - request = (SIPRequest)sipFactory.createMessageFactory().createRequest(requestLine, Request.INFO, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
  272 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INFO);
  273 + CallIdHeader callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(transactionInfo.getCallId());
  274 + request = (SIPRequest)sipLayer.getSipFactory().createMessageFactory().createRequest(requestLine, Request.INFO, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
281 275  
282   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  276 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
283 277  
284   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
285   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  278 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
  279 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
286 280  
287   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  281 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
288 282  
289 283 if (content != null) {
290   - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application",
  284 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("Application",
291 285 "MANSRTSP");
292 286 request.setContent(content, contentTypeHeader);
293 287 }
... ... @@ -298,23 +292,23 @@ public class SIPRequestHeaderProvider {
298 292  
299 293 // via
300 294 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
301   - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), sipResponse.getTopmostViaHeader().getTransport(), SipUtils.getNewViaTag());
  295 + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), sipResponse.getTopmostViaHeader().getTransport(), SipUtils.getNewViaTag());
302 296 viaHeaders.add(viaHeader);
303 297  
304 298 //Forwards
305   - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
  299 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
306 300  
307 301 //ceq
308   - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(sipResponse.getCSeqHeader().getSeqNumber(), Request.ACK);
  302 + CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(sipResponse.getCSeqHeader().getSeqNumber(), Request.ACK);
309 303  
310   - Request request = sipFactory.createMessageFactory().createRequest(sipURI, Request.ACK, sipResponse.getCallIdHeader(), cSeqHeader, sipResponse.getFromHeader(), sipResponse.getToHeader(), viaHeaders, maxForwards);
  304 + Request request = sipLayer.getSipFactory().createMessageFactory().createRequest(sipURI, Request.ACK, sipResponse.getCallIdHeader(), cSeqHeader, sipResponse.getFromHeader(), sipResponse.getToHeader(), viaHeaders, maxForwards);
311 305  
312   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  306 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
313 307  
314   - Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
315   - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
  308 + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
  309 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
316 310  
317   - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
  311 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
318 312  
319 313 return request;
320 314 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
... ... @@ -6,6 +6,7 @@ import com.genersoft.iot.vmp.conf.DynamicTask;
6 6 import com.genersoft.iot.vmp.conf.SipConfig;
7 7 import com.genersoft.iot.vmp.conf.UserSetting;
8 8 import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
  9 +import com.genersoft.iot.vmp.gb28181.SipLayer;
9 10 import com.genersoft.iot.vmp.gb28181.bean.*;
10 11 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
11 12 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
... ... @@ -21,23 +22,12 @@ import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
21 22 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
22 23 import com.genersoft.iot.vmp.service.IMediaServerService;
23 24 import com.genersoft.iot.vmp.service.bean.SSRCInfo;
24   -import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
25   -import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
26   -import com.genersoft.iot.vmp.utils.GitUtil;
27   -import gov.nist.javax.sip.SIPConstants;
28   -import gov.nist.javax.sip.SipProviderImpl;
29   -import gov.nist.javax.sip.SipStackImpl;
30 25 import gov.nist.javax.sip.message.SIPRequest;
31 26 import gov.nist.javax.sip.message.SIPResponse;
32   -import gov.nist.javax.sip.stack.SIPClientTransaction;
33   -import gov.nist.javax.sip.stack.SIPClientTransactionImpl;
34   -import gov.nist.javax.sip.stack.SIPDialog;
35 27 import org.slf4j.Logger;
36 28 import org.slf4j.LoggerFactory;
37 29 import org.springframework.beans.factory.annotation.Autowired;
38   -import org.springframework.beans.factory.annotation.Qualifier;
39 30 import org.springframework.context.annotation.DependsOn;
40   -import org.springframework.context.annotation.Lazy;
41 31 import org.springframework.stereotype.Component;
42 32 import org.springframework.util.ObjectUtils;
43 33  
... ... @@ -67,7 +57,7 @@ public class SIPCommander implements ISIPCommander {
67 57 private SipConfig sipConfig;
68 58  
69 59 @Autowired
70   - private SipFactory sipFactory;
  60 + private SipLayer sipLayer;
71 61  
72 62 @Autowired
73 63 private SIPSender sipSender;
... ... @@ -196,9 +186,9 @@ public class SIPCommander implements ISIPCommander {
196 186 ptzXml.append("</Info>\r\n");
197 187 ptzXml.append("</Control>\r\n");
198 188  
199   - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(device.getTransport()));
  189 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
200 190  
201   - sipSender.transmitRequest( request);
  191 + sipSender.transmitRequest(device.getLocalIp(),request);
202 192 }
203 193  
204 194 /**
... ... @@ -231,8 +221,8 @@ public class SIPCommander implements ISIPCommander {
231 221  
232 222  
233 223  
234   - SIPRequest request = (SIPRequest) headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
235   - sipSender.transmitRequest(request);
  224 + SIPRequest request = (SIPRequest) headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  225 + sipSender.transmitRequest(device.getLocalIp(),request);
236 226  
237 227 }
238 228  
... ... @@ -260,8 +250,8 @@ public class SIPCommander implements ISIPCommander {
260 250 ptzXml.append("</Control>\r\n");
261 251  
262 252  
263   - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
264   - sipSender.transmitRequest(request, errorEvent, okEvent);
  253 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  254 + sipSender.transmitRequest(device.getLocalIp(),request, errorEvent, okEvent);
265 255  
266 256 }
267 257  
... ... @@ -355,8 +345,8 @@ public class SIPCommander implements ISIPCommander {
355 345  
356 346  
357 347  
358   - Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(device.getTransport()));
359   - sipSender.transmitRequest( request, (e -> {
  348 + Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  349 + sipSender.transmitRequest(device.getLocalIp(), request, (e -> {
360 350 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
361 351 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
362 352 errorEvent.response(e);
... ... @@ -438,36 +428,39 @@ public class SIPCommander implements ISIPCommander {
438 428 content.append("a=rtpmap:97 MPEG4/90000\r\n");
439 429 content.append("a=rtpmap:98 H264/90000\r\n");
440 430 content.append("a=rtpmap:99 H265/90000\r\n");
441   - if ("TCP-PASSIVE".equalsIgnoreCase(streamMode)) { // tcp被动模式
  431 + if ("TCP-PASSIVE".equalsIgnoreCase(streamMode)) {
  432 + // tcp被动模式
442 433 content.append("a=setup:passive\r\n");
443 434 content.append("a=connection:new\r\n");
444   - } else if ("TCP-ACTIVE".equalsIgnoreCase(streamMode)) { // tcp主动模式
  435 + } else if ("TCP-ACTIVE".equalsIgnoreCase(streamMode)) {
  436 + // tcp主动模式
445 437 content.append("a=setup:active\r\n");
446 438 content.append("a=connection:new\r\n");
447 439 }
448 440 }
449 441  
450   - content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
  442 + //ssrc
  443 + content.append("y=" + ssrcInfo.getSsrc() + "\r\n");
451 444  
452 445 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
453 446 // 添加订阅
454 447 subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
455 448 if (hookEvent != null) {
456   - InviteStreamInfo inviteStreamInfo = new InviteStreamInfo(mediaServerItemInUse, json,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream());
  449 + InviteStreamInfo inviteStreamInfo = new InviteStreamInfo(mediaServerItemInUse, json,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream());
457 450 hookEvent.call(inviteStreamInfo);
458 451 }
459 452 subscribe.removeSubscribe(hookSubscribe);
460 453 });
461   - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()), ssrcInfo.getSsrc());
  454 + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()), ssrcInfo.getSsrc());
462 455  
463   - sipSender.transmitRequest( request, errorEvent, event -> {
  456 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, event -> {
464 457 ResponseEvent responseEvent = (ResponseEvent) event.event;
465 458 SIPResponse response = (SIPResponse) responseEvent.getResponse();
466   - streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.playback);
  459 + streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.playback);
467 460 okEvent.response(event);
468 461 });
469 462 if (inviteStreamCallback != null) {
470   - inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
  463 + inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
471 464 }
472 465 }
473 466  
... ... @@ -556,7 +549,7 @@ public class SIPCommander implements ISIPCommander {
556 549 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId());
557 550 // 添加订阅
558 551 subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
559   - hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
  552 + hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
560 553 subscribe.removeSubscribe(hookSubscribe);
561 554 hookSubscribe.getContent().put("regist", false);
562 555 hookSubscribe.getContent().put("schema", "rtsp");
... ... @@ -565,7 +558,7 @@ public class SIPCommander implements ISIPCommander {
565 558 (MediaServerItem mediaServerItemForEnd, JSONObject jsonForEnd) -> {
566 559 logger.info("[录像]下载结束, 发送BYE");
567 560 try {
568   - streamByeCmd(device, channelId, ssrcInfo.getStream(),sipSender.getNewCallIdHeader(device.getTransport()).getCallId());
  561 + streamByeCmd(device, channelId, ssrcInfo.getStream(),sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId());
569 562 } catch (InvalidArgumentException | ParseException | SipException |
570 563 SsrcTransactionNotFoundException e) {
571 564 logger.error("[录像]下载结束, 发送BYE失败 {}", e.getMessage());
... ... @@ -573,14 +566,14 @@ public class SIPCommander implements ISIPCommander {
573 566 });
574 567 });
575 568  
576   - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()), ssrcInfo.getSsrc());
  569 + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()), ssrcInfo.getSsrc());
577 570 if (inviteStreamCallback != null) {
578   - inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
  571 + inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
579 572 }
580   - sipSender.transmitRequest( request, errorEvent, okEvent -> {
  573 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent -> {
581 574 ResponseEvent responseEvent = (ResponseEvent) okEvent.event;
582 575 SIPResponse response = (SIPResponse) responseEvent.getResponse();
583   - streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download);
  576 + streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download);
584 577 });
585 578 }
586 579  
... ... @@ -607,7 +600,7 @@ public class SIPCommander implements ISIPCommander {
607 600 streamSession.remove(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream());
608 601  
609 602 Request byteRequest = headerProvider.createByteRequest(device, channelId, ssrcTransaction.getSipTransactionInfo());
610   - sipSender.transmitRequest( byteRequest, null, okEvent);
  603 + sipSender.transmitRequest(device.getLocalIp(), byteRequest, null, okEvent);
611 604 }
612 605  
613 606 /**
... ... @@ -640,8 +633,8 @@ public class SIPCommander implements ISIPCommander {
640 633  
641 634  
642 635  
643   - Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
644   - sipSender.transmitRequest( request);
  636 + Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  637 + sipSender.transmitRequest(device.getLocalIp(), request);
645 638  
646 639 }
647 640  
... ... @@ -660,8 +653,8 @@ public class SIPCommander implements ISIPCommander {
660 653  
661 654  
662 655  
663   - Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
664   - sipSender.transmitRequest( request, errorEvent);
  656 + Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  657 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
665 658  
666 659 }
667 660  
... ... @@ -691,8 +684,8 @@ public class SIPCommander implements ISIPCommander {
691 684  
692 685  
693 686  
694   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
695   - sipSender.transmitRequest( request, errorEvent);
  687 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  688 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
696 689 }
697 690  
698 691 /**
... ... @@ -715,8 +708,8 @@ public class SIPCommander implements ISIPCommander {
715 708  
716 709  
717 710  
718   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
719   - sipSender.transmitRequest( request);
  711 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  712 + sipSender.transmitRequest(device.getLocalIp(), request);
720 713 }
721 714  
722 715 /**
... ... @@ -740,8 +733,8 @@ public class SIPCommander implements ISIPCommander {
740 733  
741 734  
742 735  
743   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
744   - sipSender.transmitRequest( request, errorEvent);
  736 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  737 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
745 738 }
746 739  
747 740 /**
... ... @@ -776,8 +769,8 @@ public class SIPCommander implements ISIPCommander {
776 769  
777 770  
778 771  
779   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
780   - sipSender.transmitRequest( request, errorEvent);
  772 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  773 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
781 774 }
782 775  
783 776 /**
... ... @@ -805,8 +798,8 @@ public class SIPCommander implements ISIPCommander {
805 798  
806 799  
807 800  
808   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
809   - sipSender.transmitRequest( request);
  801 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  802 + sipSender.transmitRequest(device.getLocalIp(), request);
810 803 }
811 804  
812 805 /**
... ... @@ -852,8 +845,8 @@ public class SIPCommander implements ISIPCommander {
852 845  
853 846  
854 847  
855   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
856   - sipSender.transmitRequest( request, errorEvent);
  848 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  849 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
857 850 }
858 851  
859 852 /**
... ... @@ -915,8 +908,8 @@ public class SIPCommander implements ISIPCommander {
915 908  
916 909  
917 910  
918   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
919   - sipSender.transmitRequest( request, errorEvent);
  911 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  912 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
920 913 }
921 914  
922 915 /**
... ... @@ -938,9 +931,9 @@ public class SIPCommander implements ISIPCommander {
938 931  
939 932  
940 933  
941   - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
  934 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
942 935  
943   - sipSender.transmitRequest( request, errorEvent);
  936 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
944 937 }
945 938  
946 939 /**
... ... @@ -962,9 +955,9 @@ public class SIPCommander implements ISIPCommander {
962 955  
963 956  
964 957  
965   - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
  958 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
966 959  
967   - sipSender.transmitRequest( request);
  960 + sipSender.transmitRequest(device.getLocalIp(), request);
968 961  
969 962 }
970 963  
... ... @@ -987,9 +980,9 @@ public class SIPCommander implements ISIPCommander {
987 980  
988 981  
989 982  
990   - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
  983 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
991 984  
992   - sipSender.transmitRequest( request, errorEvent);
  985 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
993 986 }
994 987  
995 988 /**
... ... @@ -1033,9 +1026,9 @@ public class SIPCommander implements ISIPCommander {
1033 1026  
1034 1027  
1035 1028 Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
1036   - SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
  1029 + SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
1037 1030  
1038   - sipSender.transmitRequest( request, errorEvent, okEvent);
  1031 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent);
1039 1032 }
1040 1033  
1041 1034 /**
... ... @@ -1083,8 +1076,8 @@ public class SIPCommander implements ISIPCommander {
1083 1076  
1084 1077  
1085 1078  
1086   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
1087   - sipSender.transmitRequest( request, errorEvent);
  1079 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  1080 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
1088 1081 }
1089 1082  
1090 1083 /**
... ... @@ -1113,8 +1106,8 @@ public class SIPCommander implements ISIPCommander {
1113 1106  
1114 1107  
1115 1108  
1116   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
1117   - sipSender.transmitRequest( request, errorEvent);
  1109 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  1110 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
1118 1111 }
1119 1112  
1120 1113 /**
... ... @@ -1140,8 +1133,8 @@ public class SIPCommander implements ISIPCommander {
1140 1133  
1141 1134  
1142 1135  
1143   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
1144   - sipSender.transmitRequest( request, errorEvent);
  1136 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  1137 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
1145 1138 }
1146 1139  
1147 1140 /**
... ... @@ -1164,9 +1157,9 @@ public class SIPCommander implements ISIPCommander {
1164 1157  
1165 1158  
1166 1159  
1167   - Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
  1160 + Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
1168 1161  
1169   - sipSender.transmitRequest( request, errorEvent);
  1162 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent);
1170 1163  
1171 1164 }
1172 1165  
... ... @@ -1194,13 +1187,13 @@ public class SIPCommander implements ISIPCommander {
1194 1187 CallIdHeader callIdHeader;
1195 1188  
1196 1189 if (requestOld != null) {
1197   - callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
  1190 + callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
1198 1191 } else {
1199   - callIdHeader = sipSender.getNewCallIdHeader(device.getTransport());
  1192 + callIdHeader = sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport());
1200 1193 }
1201 1194 SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), requestOld, device.getSubscribeCycleForMobilePosition(), "presence",callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
1202 1195  
1203   - sipSender.transmitRequest( request, errorEvent, okEvent);
  1196 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent);
1204 1197 return request;
1205 1198 }
1206 1199  
... ... @@ -1249,8 +1242,8 @@ public class SIPCommander implements ISIPCommander {
1249 1242  
1250 1243  
1251 1244  
1252   - Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(device.getTransport()));
1253   - sipSender.transmitRequest( request);
  1245 + Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  1246 + sipSender.transmitRequest(device.getLocalIp(), request);
1254 1247  
1255 1248 }
1256 1249  
... ... @@ -1269,15 +1262,15 @@ public class SIPCommander implements ISIPCommander {
1269 1262 CallIdHeader callIdHeader;
1270 1263  
1271 1264 if (requestOld != null) {
1272   - callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
  1265 + callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
1273 1266 } else {
1274   - callIdHeader = sipSender.getNewCallIdHeader(device.getTransport());
  1267 + callIdHeader = sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport());
1275 1268 }
1276 1269  
1277 1270 // 有效时间默认为60秒以上
1278 1271 SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), requestOld, device.getSubscribeCycleForCatalog(), "Catalog",
1279 1272 callIdHeader);
1280   - sipSender.transmitRequest( request, errorEvent, okEvent);
  1273 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent);
1281 1274 return request;
1282 1275 }
1283 1276  
... ... @@ -1298,9 +1291,9 @@ public class SIPCommander implements ISIPCommander {
1298 1291 dragXml.append(cmdString);
1299 1292 dragXml.append("</Control>\r\n");
1300 1293  
1301   - Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
  1294 + Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
1302 1295 logger.debug("拉框信令: " + request.toString());
1303   - sipSender.transmitRequest(request);
  1296 + sipSender.transmitRequest(device.getLocalIp(),request);
1304 1297 }
1305 1298  
1306 1299  
... ... @@ -1379,7 +1372,7 @@ public class SIPCommander implements ISIPCommander {
1379 1372 return;
1380 1373 }
1381 1374  
1382   - sipSender.transmitRequest( request, errorEvent, okEvent);
  1375 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent);
1383 1376 }
1384 1377  
1385 1378 @Override
... ... @@ -1409,8 +1402,8 @@ public class SIPCommander implements ISIPCommander {
1409 1402 deviceStatusXml.append("</Notify>\r\n");
1410 1403  
1411 1404  
1412   - Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
1413   - sipSender.transmitRequest(request);
  1405 + Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()));
  1406 + sipSender.transmitRequest(device.getLocalIp(),request);
1414 1407  
1415 1408  
1416 1409 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
1 1 package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
2 2  
3 3 import com.alibaba.fastjson.JSONObject;
  4 +import com.genersoft.iot.vmp.gb28181.SipLayer;
4 5 import com.genersoft.iot.vmp.gb28181.bean.*;
5 6 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
6 7 import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
... ... @@ -56,7 +57,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
56 57 private ZLMRTPServerFactory zlmrtpServerFactory;
57 58  
58 59 @Autowired
59   - private SipFactory sipFactory;
  60 + private SipLayer sipLayer;
60 61  
61 62 @Autowired
62 63 private SIPSender sipSender;
... ... @@ -76,7 +77,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
76 77 SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException {
77 78 Request request;
78 79 if (!registerAgain ) {
79   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  80 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
80 81  
81 82 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform,
82 83 redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(),
... ... @@ -98,11 +99,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
98 99 });
99 100  
100 101 }else {
101   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  102 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
102 103 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister);
103 104 }
104 105  
105   - sipSender.transmitRequest( request, null, okEvent);
  106 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent);
106 107 }
107 108  
108 109 @Override
... ... @@ -117,7 +118,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
117 118 keepaliveXml.append("<Status>OK</Status>\r\n");
118 119 keepaliveXml.append("</Notify>\r\n");
119 120  
120   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  121 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
121 122  
122 123 Request request = headerProviderPlatformProvider.createMessageRequest(
123 124 parentPlatform,
... ... @@ -125,7 +126,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
125 126 SipUtils.getNewFromTag(),
126 127 SipUtils.getNewViaTag(),
127 128 callIdHeader);
128   - sipSender.transmitRequest( request, errorEvent, okEvent);
  129 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, errorEvent, okEvent);
129 130 return callIdHeader.getCallId();
130 131 }
131 132  
... ... @@ -148,10 +149,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
148 149 String catalogXml = getCatalogXml(channels, sn, parentPlatform, size);
149 150  
150 151 // callid
151   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  152 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
152 153  
153 154 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
154   - sipSender.transmitRequest( request);
  155 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request);
155 156  
156 157 }
157 158  
... ... @@ -234,10 +235,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
234 235 }
235 236 String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size());
236 237 // callid
237   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  238 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
238 239  
239 240 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader);
240   - sipSender.transmitRequest( request, null, eventResult -> {
  241 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, eventResult -> {
241 242 int indexNext = index + parentPlatform.getCatalogGroup();
242 243 try {
243 244 sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext);
... ... @@ -273,10 +274,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
273 274 deviceInfoXml.append("<Result>OK</Result>\r\n");
274 275 deviceInfoXml.append("</Response>\r\n");
275 276  
276   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  277 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
277 278  
278 279 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
279   - sipSender.transmitRequest( request);
  280 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request);
280 281 }
281 282  
282 283 /**
... ... @@ -303,10 +304,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
303 304 deviceStatusXml.append("<Status>OK</Status>\r\n");
304 305 deviceStatusXml.append("</Response>\r\n");
305 306  
306   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  307 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
307 308  
308 309 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
309   - sipSender.transmitRequest( request);
  310 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request);
310 311  
311 312 }
312 313  
... ... @@ -365,10 +366,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
365 366 deviceStatusXml.append("</info>\r\n");
366 367 deviceStatusXml.append("</Notify>\r\n");
367 368  
368   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  369 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
369 370  
370 371 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader);
371   - sipSender.transmitRequest( request);
  372 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request);
372 373  
373 374 }
374 375  
... ... @@ -408,14 +409,14 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
408 409 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent,
409 410 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent )
410 411 throws SipException, ParseException, InvalidArgumentException {
411   - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
  412 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
412 413 String characterSet = parentPlatform.getCharacterSet();
413 414 // 设置编码, 防止中文乱码
414 415 messageFactory.setDefaultContentEncodingCharset(characterSet);
415 416  
416 417 SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo);
417 418  
418   - sipSender.transmitRequest( notifyRequest);
  419 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), notifyRequest);
419 420 }
420 421  
421 422 private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) {
... ... @@ -580,21 +581,21 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
580 581 recordXml.append("</Response>\r\n");
581 582  
582 583 // callid
583   - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport());
  584 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
584 585  
585 586 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
586   - sipSender.transmitRequest( request);
  587 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request);
587 588  
588 589 }
589 590  
590 591 @Override
591   - public void sendMediaStatusNotify(ParentPlatform platform, SendRtpItem sendRtpItem) throws SipException, InvalidArgumentException, ParseException {
592   - if (sendRtpItem == null || platform == null) {
  592 + public void sendMediaStatusNotify(ParentPlatform parentPlatform, SendRtpItem sendRtpItem) throws SipException, InvalidArgumentException, ParseException {
  593 + if (sendRtpItem == null || parentPlatform == null) {
593 594 return;
594 595 }
595 596  
596 597  
597   - String characterSet = platform.getCharacterSet();
  598 + String characterSet = parentPlatform.getCharacterSet();
598 599 StringBuffer mediaStatusXml = new StringBuffer(200);
599 600 mediaStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
600 601 mediaStatusXml.append("<Notify>\r\n");
... ... @@ -604,10 +605,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
604 605 mediaStatusXml.append("<NotifyType>121</NotifyType>\r\n");
605 606 mediaStatusXml.append("</Notify>\r\n");
606 607  
607   - SIPRequest messageRequest = (SIPRequest)headerProviderPlatformProvider.createMessageRequest(platform, mediaStatusXml.toString(),
  608 + SIPRequest messageRequest = (SIPRequest)headerProviderPlatformProvider.createMessageRequest(parentPlatform, mediaStatusXml.toString(),
608 609 sendRtpItem);
609 610  
610   - sipSender.transmitRequest(messageRequest);
  611 + sipSender.transmitRequest(parentPlatform.getDeviceIp(),messageRequest);
611 612  
612 613 }
613 614  
... ... @@ -623,26 +624,26 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
623 624 }
624 625  
625 626 @Override
626   - public void streamByeCmd(ParentPlatform platform, SendRtpItem sendRtpItem) throws SipException, InvalidArgumentException, ParseException {
  627 + public void streamByeCmd(ParentPlatform parentPlatform, SendRtpItem sendRtpItem) throws SipException, InvalidArgumentException, ParseException {
627 628 if (sendRtpItem == null ) {
628 629 logger.info("[向上级发送BYE], sendRtpItem 为NULL");
629 630 return;
630 631 }
631   - if (platform == null) {
  632 + if (parentPlatform == null) {
632 633 logger.info("[向上级发送BYE], platform 为NULL");
633 634 return;
634 635 }
635   - logger.info("[向上级发送BYE], {}/{}", platform.getServerGBId(), sendRtpItem.getChannelId());
  636 + logger.info("[向上级发送BYE], {}/{}", parentPlatform.getServerGBId(), sendRtpItem.getChannelId());
636 637 String mediaServerId = sendRtpItem.getMediaServerId();
637 638 MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
638 639 if (mediaServerItem != null) {
639 640 mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc());
640 641 zlmrtpServerFactory.closeRTPServer(mediaServerItem, sendRtpItem.getStreamId());
641 642 }
642   - SIPRequest byeRequest = headerProviderPlatformProvider.createByeRequest(platform, sendRtpItem);
  643 + SIPRequest byeRequest = headerProviderPlatformProvider.createByeRequest(parentPlatform, sendRtpItem);
643 644 if (byeRequest == null) {
644 645 logger.warn("[向上级发送bye]:无法创建 byeRequest");
645 646 }
646   - sipSender.transmitRequest(byeRequest);
  647 + sipSender.transmitRequest(parentPlatform.getDeviceIp(),byeRequest);
647 648 }
648 649 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
... ... @@ -177,7 +177,7 @@ public abstract class SIPRequestProcessorParent {
177 177 }
178 178  
179 179 // 发送response
180   - sipSender.transmitRequest(response);
  180 + sipSender.transmitRequest(sipRequest.getLocalAddress().getHostAddress(), response);
181 181  
182 182 return response;
183 183 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
... ... @@ -417,7 +417,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
417 417 // 未知错误。直接转发设备点播的错误
418 418 try {
419 419 Response response = getMessageFactory().createResponse(event.statusCode, evt.getRequest());
420   - sipSender.transmitRequest(response);
  420 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
421 421 } catch (ParseException | SipException e) {
422 422 e.printStackTrace();
423 423 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
... ... @@ -15,6 +15,7 @@ import gov.nist.javax.sip.address.AddressImpl;
15 15 import gov.nist.javax.sip.address.SipUri;
16 16 import gov.nist.javax.sip.header.Expires;
17 17 import gov.nist.javax.sip.header.SIPDateHeader;
  18 +import gov.nist.javax.sip.message.SIPRequest;
18 19 import org.slf4j.Logger;
19 20 import org.slf4j.LoggerFactory;
20 21 import org.springframework.beans.factory.InitializingBean;
... ... @@ -71,8 +72,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
71 72 RequestEventExt evtExt = (RequestEventExt) evt;
72 73 String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort();
73 74 logger.info("[注册请求] 开始处理: {}", requestAddress);
74   - Request request = evt.getRequest();
75   - ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
  75 + SIPRequest request = (SIPRequest)evt.getRequest();
76 76 Response response = null;
77 77 boolean passwordCorrect = false;
78 78 // 注册标志
... ... @@ -88,7 +88,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
88 88 logger.info("[注册请求] 未携带授权头 回复401: {}", requestAddress);
89 89 response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
90 90 new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
91   - sipSender.transmitRequest(response);
  91 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
92 92 return;
93 93 }
94 94  
... ... @@ -101,7 +101,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
101 101 response = getMessageFactory().createResponse(Response.FORBIDDEN, request);
102 102 response.setReasonPhrase("wrong password");
103 103 logger.info("[注册请求] 密码/SIP服务器ID错误, 回复403: {}", requestAddress);
104   - sipSender.transmitRequest(response);
  104 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
105 105 return;
106 106 }
107 107  
... ... @@ -114,9 +114,9 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
114 114 dateHeader.setDate(wvpSipDate);
115 115 response.addHeader(dateHeader);
116 116  
117   - if (expiresHeader == null) {
  117 + if (request.getExpires() == null) {
118 118 response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
119   - sipSender.transmitRequest(response);
  119 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
120 120 return;
121 121 }
122 122 // 添加Contact头
... ... @@ -145,12 +145,13 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
145 145 device.setIp(received);
146 146 device.setPort(rPort);
147 147 device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
148   - if (expiresHeader.getExpires() == 0) {
  148 + device.setLocalIp(request.getLocalAddress().getHostAddress());
  149 + if (request.getExpires().getExpires() == 0) {
149 150 // 注销成功
150 151 registerFlag = false;
151 152 } else {
152 153 // 注册成功
153   - device.setExpires(expiresHeader.getExpires());
  154 + device.setExpires(request.getExpires().getExpires());
154 155 registerFlag = true;
155 156 // 判断TCP还是UDP
156 157 ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
... ... @@ -158,7 +159,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
158 159 device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP");
159 160 }
160 161  
161   - sipSender.transmitRequest(response);
  162 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
162 163 // 注册成功
163 164 // 保存到redis
164 165 if (registerFlag) {
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
... ... @@ -93,7 +93,7 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
93 93 response.setExpires(expireHeader);
94 94 }
95 95 logger.info("response : " + response);
96   - sipSender.transmitRequest(response);
  96 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
97 97 }
98 98 } catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
99 99 e.printStackTrace();
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
... ... @@ -84,23 +84,24 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
84 84 logger.error("[命令发送失败] 国标级联 注销: {}", e.getMessage());
85 85 }
86 86 taskExecutor.execute(()->{
87   - try {
88   - Thread.sleep(3000);
89   - SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
90   - SipStackImpl stack = (SipStackImpl)up.getSipStack();
91   - stack.stop();
92   - Iterator listener = stack.getListeningPoints();
93   - while (listener.hasNext()) {
94   - stack.deleteListeningPoint((ListeningPoint) listener.next());
95   - }
96   - Iterator providers = stack.getSipProviders();
97   - while (providers.hasNext()) {
98   - stack.deleteSipProvider((SipProvider) providers.next());
99   - }
100   - VManageBootstrap.restart();
101   - } catch (InterruptedException | ObjectInUseException e) {
102   - logger.error("[任务执行失败] 服务重启: {}", e.getMessage());
103   - }
  87 + // 远程启动
  88 +// try {
  89 +// Thread.sleep(3000);
  90 +// SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
  91 +// SipStackImpl stack = (SipStackImpl)up.getSipStack();
  92 +// stack.stop();
  93 +// Iterator listener = stack.getListeningPoints();
  94 +// while (listener.hasNext()) {
  95 +// stack.deleteListeningPoint((ListeningPoint) listener.next());
  96 +// }
  97 +// Iterator providers = stack.getSipProviders();
  98 +// while (providers.hasNext()) {
  99 +// stack.deleteSipProvider((SipProvider) providers.next());
  100 +// }
  101 +// VManageBootstrap.restart();
  102 +// } catch (InterruptedException | ObjectInUseException e) {
  103 +// logger.error("[任务执行失败] 服务重启: {}", e.getMessage());
  104 +// }
104 105 });
105 106 } else {
106 107 // 远程启动指定设备
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
1 1 package com.genersoft.iot.vmp.gb28181.transmit.event.response.impl;
2 2  
3 3 import com.genersoft.iot.vmp.conf.SipConfig;
  4 +import com.genersoft.iot.vmp.gb28181.SipLayer;
4 5 import com.genersoft.iot.vmp.gb28181.bean.Device;
5 6 import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
6 7 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
... ... @@ -54,7 +55,7 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract {
54 55  
55 56  
56 57 @Autowired
57   - private SipFactory sipFactory;
  58 + private SipLayer sipLayer;
58 59  
59 60 @Autowired
60 61 private SIPSender sipSender;
... ... @@ -103,11 +104,11 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract {
103 104 } else {
104 105 sdp = SdpFactory.getInstance().createSessionDescription(contentString);
105 106 }
106   - SipURI requestUri = sipFactory.createAddressFactory().createSipURI(sdp.getOrigin().getUsername(), event.getRemoteIpAddress() + ":" + event.getRemotePort());
  107 + SipURI requestUri = sipLayer.getSipFactory().createAddressFactory().createSipURI(sdp.getOrigin().getUsername(), event.getRemoteIpAddress() + ":" + event.getRemotePort());
107 108 Request reqAck = headerProvider.createAckRequest(requestUri, response);
108 109  
109 110 logger.info("[回复ack] {}-> {}:{} ", sdp.getOrigin().getUsername(), event.getRemoteIpAddress(), event.getRemotePort());
110   - sipSender.transmitRequest(reqAck);
  111 + sipSender.transmitRequest(response.getLocalAddress().getHostAddress(), reqAck);
111 112 }
112 113 } catch (InvalidArgumentException | ParseException | SipException | SdpParseException e) {
113 114 logger.info("[点播回复ACK],异常:", e );
... ...
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
... ... @@ -21,7 +21,7 @@ import org.springframework.stereotype.Component;
21 21 import java.util.*;
22 22  
23 23 @Component
24   -@Order(value=1)
  24 +@Order(value=2)
25 25 public class ZLMRunner implements CommandLineRunner {
26 26  
27 27 private final static Logger logger = LoggerFactory.getLogger(ZLMRunner.class);
... ...
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
... ... @@ -25,6 +25,7 @@ public interface DeviceMapper {
25 25 "streamMode," +
26 26 "ip," +
27 27 "sdpIp," +
  28 + "localIp," +
28 29 "port," +
29 30 "hostAddress," +
30 31 "expires," +
... ... @@ -54,6 +55,7 @@ public interface DeviceMapper {
54 55 "streamMode," +
55 56 "ip," +
56 57 "sdpIp," +
  58 + "localIp," +
57 59 "port," +
58 60 "hostAddress," +
59 61 "expires," +
... ... @@ -80,6 +82,7 @@ public interface DeviceMapper {
80 82 "#{streamMode}," +
81 83 "#{ip}," +
82 84 "#{sdpIp}," +
  85 + "#{localIp}," +
83 86 "#{port}," +
84 87 "#{hostAddress}," +
85 88 "#{expires}," +
... ... @@ -129,6 +132,7 @@ public interface DeviceMapper {
129 132 "streamMode," +
130 133 "ip," +
131 134 "sdpIp," +
  135 + "localIp," +
132 136 "port," +
133 137 "hostAddress," +
134 138 "expires," +
... ... @@ -165,6 +169,7 @@ public interface DeviceMapper {
165 169 "streamMode," +
166 170 "ip," +
167 171 "sdpIp," +
  172 + "localIp," +
168 173 "port," +
169 174 "hostAddress," +
170 175 "expires," +
... ... @@ -194,6 +199,7 @@ public interface DeviceMapper {
194 199 "streamMode," +
195 200 "ip," +
196 201 "sdpIp," +
  202 + "localIp," +
197 203 "port," +
198 204 "hostAddress," +
199 205 "expires," +
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
... ... @@ -164,25 +164,25 @@ public class ServerController {
164 164 @GetMapping(value = "/restart")
165 165 @ResponseBody
166 166 public void restart() {
167   - taskExecutor.execute(()-> {
168   - try {
169   - Thread.sleep(3000);
170   - SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
171   - SipStackImpl stack = (SipStackImpl) up.getSipStack();
172   - stack.stop();
173   - Iterator listener = stack.getListeningPoints();
174   - while (listener.hasNext()) {
175   - stack.deleteListeningPoint((ListeningPoint) listener.next());
176   - }
177   - Iterator providers = stack.getSipProviders();
178   - while (providers.hasNext()) {
179   - stack.deleteSipProvider((SipProvider) providers.next());
180   - }
181   - VManageBootstrap.restart();
182   - } catch (InterruptedException | ObjectInUseException e) {
183   - throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage());
184   - }
185   - });
  167 +// taskExecutor.execute(()-> {
  168 +// try {
  169 +// Thread.sleep(3000);
  170 +// SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
  171 +// SipStackImpl stack = (SipStackImpl) up.getSipStack();
  172 +// stack.stop();
  173 +// Iterator listener = stack.getListeningPoints();
  174 +// while (listener.hasNext()) {
  175 +// stack.deleteListeningPoint((ListeningPoint) listener.next());
  176 +// }
  177 +// Iterator providers = stack.getSipProviders();
  178 +// while (providers.hasNext()) {
  179 +// stack.deleteSipProvider((SipProvider) providers.next());
  180 +// }
  181 +// VManageBootstrap.restart();
  182 +// } catch (InterruptedException | ObjectInUseException e) {
  183 +// throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage());
  184 +// }
  185 +// });
186 186 };
187 187  
188 188 @Operation(summary = "获取系统信息信息")
... ...