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,6 +14,9 @@ alter table device
14 add sdpIp varchar(50) default null; 14 add sdpIp varchar(50) default null;
15 15
16 alter table device 16 alter table device
  17 + add localIp varchar(50) default null;
  18 +
  19 +alter table device
17 add password varchar(255) default null; 20 add password varchar(255) default null;
18 21
19 alter table device 22 alter table device
src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
@@ -10,11 +10,6 @@ public class SipConfig { @@ -10,11 +10,6 @@ public class SipConfig {
10 10
11 private String ip; 11 private String ip;
12 12
13 - /**  
14 - * 默认使用 0.0.0.0  
15 - */  
16 - private String monitorIp = "0.0.0.0";  
17 -  
18 private Integer port; 13 private Integer port;
19 14
20 private String domain; 15 private String domain;
@@ -35,10 +30,6 @@ public class SipConfig { @@ -35,10 +30,6 @@ public class SipConfig {
35 this.ip = ip; 30 this.ip = ip;
36 } 31 }
37 32
38 - public void setMonitorIp(String monitorIp) {  
39 - this.monitorIp = monitorIp;  
40 - }  
41 -  
42 public void setPort(Integer port) { 33 public void setPort(Integer port) {
43 this.port = port; 34 this.port = port;
44 } 35 }
@@ -67,10 +58,6 @@ public class SipConfig { @@ -67,10 +58,6 @@ public class SipConfig {
67 this.registerTimeInterval = registerTimeInterval; 58 this.registerTimeInterval = registerTimeInterval;
68 } 59 }
69 60
70 - public String getMonitorIp() {  
71 - return monitorIp;  
72 - }  
73 -  
74 public String getIp() { 61 public String getIp() {
75 return ip; 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,16 +8,17 @@ import gov.nist.javax.sip.SipStackImpl;
8 import org.slf4j.Logger; 8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 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 import javax.sip.*; 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 private final static Logger logger = LoggerFactory.getLogger(SipLayer.class); 23 private final static Logger logger = LoggerFactory.getLogger(SipLayer.class);
23 24
@@ -27,70 +28,103 @@ public class SipLayer{ @@ -27,70 +28,103 @@ public class SipLayer{
27 @Autowired 28 @Autowired
28 private ISIPProcessorObserver sipProcessorObserver; 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 private SipFactory sipFactory; 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 sipFactory = SipFactory.getInstance(); 50 sipFactory = SipFactory.getInstance();
38 sipFactory.setPathName("gov.nist"); 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 try { 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 tcpSipProvider.setDialogErrorsAutomaticallyHandled(); 74 tcpSipProvider.setDialogErrorsAutomaticallyHandled();
58 tcpSipProvider.addSipListener(sipProcessorObserver); 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 try { 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 udpSipProvider.addSipListener(sipProcessorObserver); 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,6 +178,9 @@ public class Device {
178 @Schema(description = "收流IP") 178 @Schema(description = "收流IP")
179 private String sdpIp; 179 private String sdpIp;
180 180
  181 + @Schema(description = "SIP交互IP(设备访问平台的IP)")
  182 + private String localIp;
  183 +
181 184
182 public String getDeviceId() { 185 public String getDeviceId() {
183 return deviceId; 186 return deviceId;
@@ -402,4 +405,12 @@ public class Device { @@ -402,4 +405,12 @@ public class Device {
402 public void setSdpIp(String sdpIp) { 405 public void setSdpIp(String sdpIp) {
403 this.sdpIp = sdpIp; 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,6 +5,7 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
5 import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; 5 import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
6 import com.genersoft.iot.vmp.gb28181.transmit.event.response.ISIPResponseProcessor; 6 import com.genersoft.iot.vmp.gb28181.transmit.event.response.ISIPResponseProcessor;
7 import com.genersoft.iot.vmp.gb28181.transmit.event.timeout.ITimeoutProcessor; 7 import com.genersoft.iot.vmp.gb28181.transmit.event.timeout.ITimeoutProcessor;
  8 +import gov.nist.javax.sip.message.SIPRequest;
8 import org.slf4j.Logger; 9 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 10 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +16,7 @@ import javax.sip.*; @@ -15,6 +16,7 @@ import javax.sip.*;
15 import javax.sip.header.*; 16 import javax.sip.header.*;
16 import javax.sip.message.Request; 17 import javax.sip.message.Request;
17 import javax.sip.message.Response; 18 import javax.sip.message.Response;
  19 +import java.net.InetAddress;
18 import java.util.Map; 20 import java.util.Map;
19 import java.util.concurrent.ConcurrentHashMap; 21 import java.util.concurrent.ConcurrentHashMap;
20 22
@@ -75,6 +77,7 @@ public class SIPProcessorObserver implements ISIPProcessorObserver { @@ -75,6 +77,7 @@ public class SIPProcessorObserver implements ISIPProcessorObserver {
75 ISIPRequestProcessor sipRequestProcessor = requestProcessorMap.get(method); 77 ISIPRequestProcessor sipRequestProcessor = requestProcessorMap.get(method);
76 if (sipRequestProcessor == null) { 78 if (sipRequestProcessor == null) {
77 logger.warn("不支持方法{}的request", method); 79 logger.warn("不支持方法{}的request", method);
  80 + // TODO 回复错误玛
78 return; 81 return;
79 } 82 }
80 requestProcessorMap.get(method).process(requestEvent); 83 requestProcessorMap.get(method).process(requestEvent);
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
1 package com.genersoft.iot.vmp.gb28181.transmit; 1 package com.genersoft.iot.vmp.gb28181.transmit;
2 2
  3 +import com.genersoft.iot.vmp.gb28181.SipLayer;
3 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; 4 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
4 import com.genersoft.iot.vmp.gb28181.utils.SipUtils; 5 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
5 import com.genersoft.iot.vmp.utils.GitUtil; 6 import com.genersoft.iot.vmp.utils.GitUtil;
6 import gov.nist.javax.sip.SipProviderImpl; 7 import gov.nist.javax.sip.SipProviderImpl;
  8 +import gov.nist.javax.sip.message.SIPRequest;
7 import org.slf4j.Logger; 9 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory; 10 import org.slf4j.LoggerFactory;
9 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,7 @@ import javax.sip.header.ViaHeader; @@ -18,6 +20,7 @@ import javax.sip.header.ViaHeader;
18 import javax.sip.message.Message; 20 import javax.sip.message.Message;
19 import javax.sip.message.Request; 21 import javax.sip.message.Request;
20 import javax.sip.message.Response; 22 import javax.sip.message.Response;
  23 +import java.net.InetAddress;
21 import java.text.ParseException; 24 import java.text.ParseException;
22 25
23 /** 26 /**
@@ -30,15 +33,7 @@ public class SIPSender { @@ -30,15 +33,7 @@ public class SIPSender {
30 private final Logger logger = LoggerFactory.getLogger(SIPSender.class); 33 private final Logger logger = LoggerFactory.getLogger(SIPSender.class);
31 34
32 @Autowired 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 @Autowired 38 @Autowired
44 private GitUtil gitUtil; 39 private GitUtil gitUtil;
@@ -46,25 +41,25 @@ public class SIPSender { @@ -46,25 +41,25 @@ public class SIPSender {
46 @Autowired 41 @Autowired
47 private SipSubscribe sipSubscribe; 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 ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME); 53 ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
59 String transport = "UDP"; 54 String transport = "UDP";
60 if (viaHeader == null) { 55 if (viaHeader == null) {
61 - logger.warn("[消息头缺失]: ViaHeader"); 56 + logger.warn("[消息头缺失]: ViaHeader, 使用默认的UDP方式处理数据");
62 }else { 57 }else {
63 transport = viaHeader.getTransport(); 58 transport = viaHeader.getTransport();
64 } 59 }
65 if (message.getHeader(UserAgentHeader.NAME) == null) { 60 if (message.getHeader(UserAgentHeader.NAME) == null) {
66 try { 61 try {
67 - message.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil)); 62 + message.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
68 } catch (ParseException e) { 63 } catch (ParseException e) {
69 logger.error("添加UserAgentHeader失败", e); 64 logger.error("添加UserAgentHeader失败", e);
70 } 65 }
@@ -88,6 +83,11 @@ public class SIPSender { @@ -88,6 +83,11 @@ public class SIPSender {
88 }); 83 });
89 } 84 }
90 if ("TCP".equals(transport)) { 85 if ("TCP".equals(transport)) {
  86 + SipProviderImpl tcpSipProvider = sipLayer.getTcpSipProvider(ip);
  87 + if (tcpSipProvider == null) {
  88 + logger.error("[发送信息失败] 未找到tcp://{}的监听信息", ip);
  89 + return;
  90 + }
91 if (message instanceof Request) { 91 if (message instanceof Request) {
92 tcpSipProvider.sendRequest((Request)message); 92 tcpSipProvider.sendRequest((Request)message);
93 }else if (message instanceof Response) { 93 }else if (message instanceof Response) {
@@ -95,16 +95,21 @@ public class SIPSender { @@ -95,16 +95,21 @@ public class SIPSender {
95 } 95 }
96 96
97 } else if ("UDP".equals(transport)) { 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 if (message instanceof Request) { 103 if (message instanceof Request) {
99 - udpSipProvider.sendRequest((Request)message); 104 + sipProvider.sendRequest((Request)message);
100 }else if (message instanceof Response) { 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 package com.genersoft.iot.vmp.gb28181.transmit.cmd; 1 package com.genersoft.iot.vmp.gb28181.transmit.cmd;
2 2
3 import com.genersoft.iot.vmp.conf.SipConfig; 3 import com.genersoft.iot.vmp.conf.SipConfig;
  4 +import com.genersoft.iot.vmp.gb28181.SipLayer;
4 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; 5 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
5 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; 6 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
6 import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo; 7 import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;
@@ -36,7 +37,7 @@ public class SIPRequestHeaderPlarformProvider { @@ -36,7 +37,7 @@ public class SIPRequestHeaderPlarformProvider {
36 private SipConfig sipConfig; 37 private SipConfig sipConfig;
37 38
38 @Autowired 39 @Autowired
39 - private SipFactory sipFactory; 40 + private SipLayer sipLayer;
40 41
41 @Autowired 42 @Autowired
42 private GitUtil gitUtil; 43 private GitUtil gitUtil;
@@ -48,38 +49,38 @@ public class SIPRequestHeaderPlarformProvider { @@ -48,38 +49,38 @@ public class SIPRequestHeaderPlarformProvider {
48 Request request = null; 49 Request request = null;
49 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort(); 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 platform.getServerIP() + ":" + platform.getServerPort()); 53 platform.getServerIP() + ":" + platform.getServerPort());
53 //via 54 //via
54 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeader.setRPort(); 57 viaHeader.setRPort();
57 viaHeaders.add(viaHeader); 58 viaHeaders.add(viaHeader);
58 //from 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 //to 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 //Forwards 68 //Forwards
68 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 69 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
69 70
70 //ceq 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 cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); 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 .createSipURI(platform.getDeviceGBId(), sipAddress)); 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 request.addHeader(expires); 81 request.addHeader(expires);
81 82
82 - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil)); 83 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
83 84
84 return request; 85 return request;
85 } 86 }
@@ -89,9 +90,9 @@ public class SIPRequestHeaderPlarformProvider { @@ -89,9 +90,9 @@ public class SIPRequestHeaderPlarformProvider {
89 90
90 91
91 Request registerRequest = createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), fromTag, viaTag, callIdHeader, isRegister); 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 if (www == null) { 94 if (www == null) {
94 - AuthorizationHeader authorizationHeader = sipFactory.createHeaderFactory().createAuthorizationHeader("Digest"); 95 + AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader("Digest");
95 authorizationHeader.setUsername(parentPlatform.getDeviceGBId()); 96 authorizationHeader.setUsername(parentPlatform.getDeviceGBId());
96 authorizationHeader.setURI(requestURI); 97 authorizationHeader.setURI(requestURI);
97 authorizationHeader.setAlgorithm("MD5"); 98 authorizationHeader.setAlgorithm("MD5");
@@ -140,7 +141,7 @@ public class SIPRequestHeaderPlarformProvider { @@ -140,7 +141,7 @@ public class SIPRequestHeaderPlarformProvider {
140 141
141 String RESPONSE = DigestUtils.md5DigestAsHex(reStr.toString().getBytes()); 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 authorizationHeader.setUsername(parentPlatform.getDeviceGBId()); 145 authorizationHeader.setUsername(parentPlatform.getDeviceGBId());
145 authorizationHeader.setRealm(realm); 146 authorizationHeader.setRealm(realm);
146 authorizationHeader.setNonce(nonce); 147 authorizationHeader.setNonce(nonce);
@@ -158,7 +159,7 @@ public class SIPRequestHeaderPlarformProvider { @@ -158,7 +159,7 @@ public class SIPRequestHeaderPlarformProvider {
158 } 159 }
159 160
160 public Request createMessageRequest(ParentPlatform parentPlatform, String content, SendRtpItem sendRtpItem) throws PeerUnavailableException, ParseException, InvalidArgumentException { 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 return createMessageRequest(parentPlatform, content, sendRtpItem.getToTag(), SipUtils.getNewViaTag(), sendRtpItem.getFromTag(), callIdHeader); 163 return createMessageRequest(parentPlatform, content, sendRtpItem.getToTag(), SipUtils.getNewViaTag(), sendRtpItem.getFromTag(), callIdHeader);
163 } 164 }
164 165
@@ -171,36 +172,36 @@ public class SIPRequestHeaderPlarformProvider { @@ -171,36 +172,36 @@ public class SIPRequestHeaderPlarformProvider {
171 Request request = null; 172 Request request = null;
172 String serverAddress = parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort(); 173 String serverAddress = parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort();
173 // sipuri 174 // sipuri
174 - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress); 175 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
175 // via 176 // via
176 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 parentPlatform.getTransport(), viaTag); 179 parentPlatform.getTransport(), viaTag);
179 viaHeader.setRPort(); 180 viaHeader.setRPort();
180 viaHeaders.add(viaHeader); 181 viaHeaders.add(viaHeader);
181 // from 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 // to 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 // Forwards 192 // Forwards
192 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 193 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
193 // ceq 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 messageFactory.setDefaultContentEncodingCharset(parentPlatform.getCharacterSet()); 198 messageFactory.setDefaultContentEncodingCharset(parentPlatform.getCharacterSet());
198 request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader, 199 request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,
199 toHeader, viaHeaders, maxForwards); 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 request.setContent(content, contentTypeHeader); 205 request.setContent(content, contentTypeHeader);
205 return request; 206 return request;
206 } 207 }
@@ -208,54 +209,54 @@ public class SIPRequestHeaderPlarformProvider { @@ -208,54 +209,54 @@ public class SIPRequestHeaderPlarformProvider {
208 public SIPRequest createNotifyRequest(ParentPlatform parentPlatform, String content, SubscribeInfo subscribeInfo) throws PeerUnavailableException, ParseException, InvalidArgumentException { 209 public SIPRequest createNotifyRequest(ParentPlatform parentPlatform, String content, SubscribeInfo subscribeInfo) throws PeerUnavailableException, ParseException, InvalidArgumentException {
209 SIPRequest request = null; 210 SIPRequest request = null;
210 // sipuri 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 // via 213 // via
213 ArrayList<ViaHeader> viaHeaders = new ArrayList<>(); 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 parentPlatform.getTransport(), SipUtils.getNewViaTag()); 216 parentPlatform.getTransport(), SipUtils.getNewViaTag());
216 viaHeader.setRPort(); 217 viaHeader.setRPort();
217 viaHeaders.add(viaHeader); 218 viaHeaders.add(viaHeader);
218 // from 219 // from
219 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), 220 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(),
220 parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort()); 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 // to 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 // Forwards 229 // Forwards
229 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 230 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
230 // ceq 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 messageFactory.setDefaultContentEncodingCharset("gb2312"); 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 request = (SIPRequest) messageFactory.createRequest(requestURI, Request.NOTIFY, callIdHeader, cSeqHeader, fromHeader, 239 request = (SIPRequest) messageFactory.createRequest(requestURI, Request.NOTIFY, callIdHeader, cSeqHeader, fromHeader,
239 toHeader, viaHeaders, maxForwards); 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 if (subscribeInfo.getEventId() != null) { 245 if (subscribeInfo.getEventId() != null) {
245 event.setEventId(subscribeInfo.getEventId()); 246 event.setEventId(subscribeInfo.getEventId());
246 } 247 }
247 248
248 request.addHeader(event); 249 request.addHeader(event);
249 250
250 - SubscriptionStateHeader active = sipFactory.createHeaderFactory().createSubscriptionStateHeader("active"); 251 + SubscriptionStateHeader active = sipLayer.getSipFactory().createHeaderFactory().createSubscriptionStateHeader("active");
251 request.setHeader(active); 252 request.setHeader(active);
252 253
253 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort(); 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 .createSipURI(parentPlatform.getDeviceGBId(), sipAddress)); 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 request.setContent(content, contentTypeHeader); 260 request.setContent(content, contentTypeHeader);
260 return request; 261 return request;
261 } 262 }
@@ -268,42 +269,42 @@ public class SIPRequestHeaderPlarformProvider { @@ -268,42 +269,42 @@ public class SIPRequestHeaderPlarformProvider {
268 269
269 SIPRequest request = null; 270 SIPRequest request = null;
270 // sipuri 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 // via 273 // via
273 ArrayList<ViaHeader> viaHeaders = new ArrayList<>(); 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 platform.getTransport(), SipUtils.getNewViaTag()); 276 platform.getTransport(), SipUtils.getNewViaTag());
276 viaHeader.setRPort(); 277 viaHeader.setRPort();
277 viaHeaders.add(viaHeader); 278 viaHeaders.add(viaHeader);
278 // from 279 // from
279 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(), 280 + SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(platform.getDeviceGBId(),
280 platform.getDeviceIp() + ":" + platform.getDevicePort()); 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 // to 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 // Forwards 289 // Forwards
289 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 290 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
290 // ceq 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 messageFactory.setDefaultContentEncodingCharset("gb2312"); 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 request = (SIPRequest) messageFactory.createRequest(requestURI, Request.BYE, callIdHeader, cSeqHeader, fromHeader, 299 request = (SIPRequest) messageFactory.createRequest(requestURI, Request.BYE, callIdHeader, cSeqHeader, fromHeader,
299 toHeader, viaHeaders, maxForwards); 300 toHeader, viaHeaders, maxForwards);
300 301
301 - request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil)); 302 + request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
302 303
303 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort(); 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 .createSipURI(platform.getDeviceGBId(), sipAddress)); 306 .createSipURI(platform.getDeviceGBId(), sipAddress));
306 - request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress)); 307 + request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
307 308
308 return request; 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,21 +9,15 @@ import javax.sip.address.SipURI;
9 import javax.sip.header.*; 9 import javax.sip.header.*;
10 import javax.sip.message.Request; 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 import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; 13 import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
15 -import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;  
16 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; 14 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
17 import com.genersoft.iot.vmp.gb28181.utils.SipUtils; 15 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
18 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 16 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
19 import com.genersoft.iot.vmp.utils.GitUtil; 17 import com.genersoft.iot.vmp.utils.GitUtil;
20 -import gov.nist.javax.sip.SipProviderImpl;  
21 -import gov.nist.javax.sip.SipStackImpl;  
22 import gov.nist.javax.sip.message.SIPRequest; 18 import gov.nist.javax.sip.message.SIPRequest;
23 import gov.nist.javax.sip.message.SIPResponse; 19 import gov.nist.javax.sip.message.SIPResponse;
24 -import gov.nist.javax.sip.stack.SIPDialog;  
25 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.beans.factory.annotation.Autowired;
26 -import org.springframework.beans.factory.annotation.Qualifier;  
27 import org.springframework.stereotype.Component; 21 import org.springframework.stereotype.Component;
28 22
29 import com.genersoft.iot.vmp.conf.SipConfig; 23 import com.genersoft.iot.vmp.conf.SipConfig;
@@ -41,7 +35,7 @@ public class SIPRequestHeaderProvider { @@ -41,7 +35,7 @@ public class SIPRequestHeaderProvider {
41 private SipConfig sipConfig; 35 private SipConfig sipConfig;
42 36
43 @Autowired 37 @Autowired
44 - private SipFactory sipFactory; 38 + private SipLayer sipLayer;
45 39
46 @Autowired 40 @Autowired
47 private GitUtil gitUtil; 41 private GitUtil gitUtil;
@@ -55,32 +49,32 @@ public class SIPRequestHeaderProvider { @@ -55,32 +49,32 @@ public class SIPRequestHeaderProvider {
55 public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException { 49 public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
56 Request request = null; 50 Request request = null;
57 // sipuri 51 // sipuri
58 - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); 52 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
59 // via 53 // via
60 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeader.setRPort(); 56 viaHeader.setRPort();
63 viaHeaders.add(viaHeader); 57 viaHeaders.add(viaHeader);
64 // from 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 // to 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 // Forwards 67 // Forwards
74 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 68 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
75 // ceq 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 toHeader, viaHeaders, maxForwards); 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 request.setContent(content, contentTypeHeader); 78 request.setContent(content, contentTypeHeader);
85 return request; 79 return request;
86 } 80 }
@@ -88,38 +82,38 @@ public class SIPRequestHeaderProvider { @@ -88,38 +82,38 @@ public class SIPRequestHeaderProvider {
88 public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException { 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 Request request = null; 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 //via 86 //via
93 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeader.setRPort(); 89 viaHeader.setRPort();
96 viaHeaders.add(viaHeader); 90 viaHeaders.add(viaHeader);
97 91
98 //from 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 //to 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 //Forwards 101 //Forwards
108 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 102 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
109 103
110 //ceq 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 // Subject 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 request.addHeader(subjectHeader); 115 request.addHeader(subjectHeader);
122 - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP"); 116 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
123 request.setContent(content, contentTypeHeader); 117 request.setContent(content, contentTypeHeader);
124 return request; 118 return request;
125 } 119 }
@@ -127,39 +121,39 @@ public class SIPRequestHeaderProvider { @@ -127,39 +121,39 @@ public class SIPRequestHeaderProvider {
127 public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader, String ssrc) throws ParseException, InvalidArgumentException, PeerUnavailableException { 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 Request request = null; 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 // via 125 // via
132 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeader.setRPort(); 128 viaHeader.setRPort();
135 viaHeaders.add(viaHeader); 129 viaHeaders.add(viaHeader);
136 //from 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 //to 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 //Forwards 139 //Forwards
146 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 140 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
147 141
148 //ceq 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 // Subject 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 request.addHeader(subjectHeader); 154 request.addHeader(subjectHeader);
161 155
162 - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP"); 156 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
163 request.setContent(content, contentTypeHeader); 157 request.setContent(content, contentTypeHeader);
164 return request; 158 return request;
165 } 159 }
@@ -167,34 +161,34 @@ public class SIPRequestHeaderProvider { @@ -167,34 +161,34 @@ public class SIPRequestHeaderProvider {
167 public Request createByteRequest(Device device, String channelId, SipTransactionInfo transactionInfo) throws ParseException, InvalidArgumentException, PeerUnavailableException { 161 public Request createByteRequest(Device device, String channelId, SipTransactionInfo transactionInfo) throws ParseException, InvalidArgumentException, PeerUnavailableException {
168 Request request = null; 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 // via 165 // via
172 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeaders.add(viaHeader); 168 viaHeaders.add(viaHeader);
175 //from 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 //to 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 //Forwards 178 //Forwards
185 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 179 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
186 180
187 //ceq 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 return request; 193 return request;
200 } 194 }
@@ -202,50 +196,50 @@ public class SIPRequestHeaderProvider { @@ -202,50 +196,50 @@ public class SIPRequestHeaderProvider {
202 public Request createSubscribeRequest(Device device, String content, SIPRequest requestOld, Integer expires, String event, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException { 196 public Request createSubscribeRequest(Device device, String content, SIPRequest requestOld, Integer expires, String event, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
203 Request request = null; 197 Request request = null;
204 // sipuri 198 // sipuri
205 - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); 199 + SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
206 // via 200 // via
207 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 device.getTransport(), SipUtils.getNewViaTag()); 203 device.getTransport(), SipUtils.getNewViaTag());
210 viaHeader.setRPort(); 204 viaHeader.setRPort();
211 viaHeaders.add(viaHeader); 205 viaHeaders.add(viaHeader);
212 // from 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 // to 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 // Forwards 215 // Forwards
222 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 216 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
223 217
224 // ceq 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 toHeader, viaHeaders, maxForwards); 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 // Expires 228 // Expires
235 - ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(expires); 229 + ExpiresHeader expireHeader = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(expires);
236 request.addHeader(expireHeader); 230 request.addHeader(expireHeader);
237 231
238 // Event 232 // Event
239 - EventHeader eventHeader = sipFactory.createHeaderFactory().createEventHeader(event); 233 + EventHeader eventHeader = sipLayer.getSipFactory().createHeaderFactory().createEventHeader(event);
240 234
241 int random = (int) Math.floor(Math.random() * 10000); 235 int random = (int) Math.floor(Math.random() * 10000);
242 eventHeader.setEventId(random + ""); 236 eventHeader.setEventId(random + "");
243 request.addHeader(eventHeader); 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 request.setContent(content, contentTypeHeader); 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 return request; 244 return request;
251 } 245 }
@@ -257,37 +251,37 @@ public class SIPRequestHeaderProvider { @@ -257,37 +251,37 @@ public class SIPRequestHeaderProvider {
257 } 251 }
258 SIPRequest request = null; 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 // via 255 // via
262 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeaders.add(viaHeader); 258 viaHeaders.add(viaHeader);
265 //from 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 //to 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 //Forwards 268 //Forwards
275 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 269 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
276 270
277 //ceq 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 if (content != null) { 283 if (content != null) {
290 - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", 284 + ContentTypeHeader contentTypeHeader = sipLayer.getSipFactory().createHeaderFactory().createContentTypeHeader("Application",
291 "MANSRTSP"); 285 "MANSRTSP");
292 request.setContent(content, contentTypeHeader); 286 request.setContent(content, contentTypeHeader);
293 } 287 }
@@ -298,23 +292,23 @@ public class SIPRequestHeaderProvider { @@ -298,23 +292,23 @@ public class SIPRequestHeaderProvider {
298 292
299 // via 293 // via
300 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 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 viaHeaders.add(viaHeader); 296 viaHeaders.add(viaHeader);
303 297
304 //Forwards 298 //Forwards
305 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 299 + MaxForwardsHeader maxForwards = sipLayer.getSipFactory().createHeaderFactory().createMaxForwardsHeader(70);
306 300
307 //ceq 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 return request; 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 +6,7 @@ import com.genersoft.iot.vmp.conf.DynamicTask;
6 import com.genersoft.iot.vmp.conf.SipConfig; 6 import com.genersoft.iot.vmp.conf.SipConfig;
7 import com.genersoft.iot.vmp.conf.UserSetting; 7 import com.genersoft.iot.vmp.conf.UserSetting;
8 import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException; 8 import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
  9 +import com.genersoft.iot.vmp.gb28181.SipLayer;
9 import com.genersoft.iot.vmp.gb28181.bean.*; 10 import com.genersoft.iot.vmp.gb28181.bean.*;
10 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; 11 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
11 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; 12 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
@@ -21,23 +22,12 @@ import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe; @@ -21,23 +22,12 @@ import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
21 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; 22 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
22 import com.genersoft.iot.vmp.service.IMediaServerService; 23 import com.genersoft.iot.vmp.service.IMediaServerService;
23 import com.genersoft.iot.vmp.service.bean.SSRCInfo; 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 import gov.nist.javax.sip.message.SIPRequest; 25 import gov.nist.javax.sip.message.SIPRequest;
31 import gov.nist.javax.sip.message.SIPResponse; 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 import org.slf4j.Logger; 27 import org.slf4j.Logger;
36 import org.slf4j.LoggerFactory; 28 import org.slf4j.LoggerFactory;
37 import org.springframework.beans.factory.annotation.Autowired; 29 import org.springframework.beans.factory.annotation.Autowired;
38 -import org.springframework.beans.factory.annotation.Qualifier;  
39 import org.springframework.context.annotation.DependsOn; 30 import org.springframework.context.annotation.DependsOn;
40 -import org.springframework.context.annotation.Lazy;  
41 import org.springframework.stereotype.Component; 31 import org.springframework.stereotype.Component;
42 import org.springframework.util.ObjectUtils; 32 import org.springframework.util.ObjectUtils;
43 33
@@ -67,7 +57,7 @@ public class SIPCommander implements ISIPCommander { @@ -67,7 +57,7 @@ public class SIPCommander implements ISIPCommander {
67 private SipConfig sipConfig; 57 private SipConfig sipConfig;
68 58
69 @Autowired 59 @Autowired
70 - private SipFactory sipFactory; 60 + private SipLayer sipLayer;
71 61
72 @Autowired 62 @Autowired
73 private SIPSender sipSender; 63 private SIPSender sipSender;
@@ -196,9 +186,9 @@ public class SIPCommander implements ISIPCommander { @@ -196,9 +186,9 @@ public class SIPCommander implements ISIPCommander {
196 ptzXml.append("</Info>\r\n"); 186 ptzXml.append("</Info>\r\n");
197 ptzXml.append("</Control>\r\n"); 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,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,8 +250,8 @@ public class SIPCommander implements ISIPCommander {
260 ptzXml.append("</Control>\r\n"); 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,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 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); 350 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
361 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); 351 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
362 errorEvent.response(e); 352 errorEvent.response(e);
@@ -438,36 +428,39 @@ public class SIPCommander implements ISIPCommander { @@ -438,36 +428,39 @@ public class SIPCommander implements ISIPCommander {
438 content.append("a=rtpmap:97 MPEG4/90000\r\n"); 428 content.append("a=rtpmap:97 MPEG4/90000\r\n");
439 content.append("a=rtpmap:98 H264/90000\r\n"); 429 content.append("a=rtpmap:98 H264/90000\r\n");
440 content.append("a=rtpmap:99 H265/90000\r\n"); 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 content.append("a=setup:passive\r\n"); 433 content.append("a=setup:passive\r\n");
443 content.append("a=connection:new\r\n"); 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 content.append("a=setup:active\r\n"); 437 content.append("a=setup:active\r\n");
446 content.append("a=connection:new\r\n"); 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 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId()); 445 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
453 // 添加订阅 446 // 添加订阅
454 subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> { 447 subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
455 if (hookEvent != null) { 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 hookEvent.call(inviteStreamInfo); 450 hookEvent.call(inviteStreamInfo);
458 } 451 }
459 subscribe.removeSubscribe(hookSubscribe); 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 ResponseEvent responseEvent = (ResponseEvent) event.event; 457 ResponseEvent responseEvent = (ResponseEvent) event.event;
465 SIPResponse response = (SIPResponse) responseEvent.getResponse(); 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 okEvent.response(event); 460 okEvent.response(event);
468 }); 461 });
469 if (inviteStreamCallback != null) { 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,7 +549,7 @@ public class SIPCommander implements ISIPCommander {
556 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId()); 549 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId());
557 // 添加订阅 550 // 添加订阅
558 subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> { 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 subscribe.removeSubscribe(hookSubscribe); 553 subscribe.removeSubscribe(hookSubscribe);
561 hookSubscribe.getContent().put("regist", false); 554 hookSubscribe.getContent().put("regist", false);
562 hookSubscribe.getContent().put("schema", "rtsp"); 555 hookSubscribe.getContent().put("schema", "rtsp");
@@ -565,7 +558,7 @@ public class SIPCommander implements ISIPCommander { @@ -565,7 +558,7 @@ public class SIPCommander implements ISIPCommander {
565 (MediaServerItem mediaServerItemForEnd, JSONObject jsonForEnd) -> { 558 (MediaServerItem mediaServerItemForEnd, JSONObject jsonForEnd) -> {
566 logger.info("[录像]下载结束, 发送BYE"); 559 logger.info("[录像]下载结束, 发送BYE");
567 try { 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 } catch (InvalidArgumentException | ParseException | SipException | 562 } catch (InvalidArgumentException | ParseException | SipException |
570 SsrcTransactionNotFoundException e) { 563 SsrcTransactionNotFoundException e) {
571 logger.error("[录像]下载结束, 发送BYE失败 {}", e.getMessage()); 564 logger.error("[录像]下载结束, 发送BYE失败 {}", e.getMessage());
@@ -573,14 +566,14 @@ public class SIPCommander implements ISIPCommander { @@ -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 if (inviteStreamCallback != null) { 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 ResponseEvent responseEvent = (ResponseEvent) okEvent.event; 574 ResponseEvent responseEvent = (ResponseEvent) okEvent.event;
582 SIPResponse response = (SIPResponse) responseEvent.getResponse(); 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,7 +600,7 @@ public class SIPCommander implements ISIPCommander {
607 streamSession.remove(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream()); 600 streamSession.remove(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream());
608 601
609 Request byteRequest = headerProvider.createByteRequest(device, channelId, ssrcTransaction.getSipTransactionInfo()); 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,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,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,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,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,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,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,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,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,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,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,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,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,9 +1026,9 @@ public class SIPCommander implements ISIPCommander {
1033 1026
1034 1027
1035 Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), 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,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,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,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,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,13 +1187,13 @@ public class SIPCommander implements ISIPCommander {
1194 CallIdHeader callIdHeader; 1187 CallIdHeader callIdHeader;
1195 1188
1196 if (requestOld != null) { 1189 if (requestOld != null) {
1197 - callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId()); 1190 + callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
1198 } else { 1191 } else {
1199 - callIdHeader = sipSender.getNewCallIdHeader(device.getTransport()); 1192 + callIdHeader = sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport());
1200 } 1193 }
1201 SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), requestOld, device.getSubscribeCycleForMobilePosition(), "presence",callIdHeader); //Position;id=" + tm.substring(tm.length() - 4)); 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 return request; 1197 return request;
1205 } 1198 }
1206 1199
@@ -1249,8 +1242,8 @@ public class SIPCommander implements ISIPCommander { @@ -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,15 +1262,15 @@ public class SIPCommander implements ISIPCommander {
1269 CallIdHeader callIdHeader; 1262 CallIdHeader callIdHeader;
1270 1263
1271 if (requestOld != null) { 1264 if (requestOld != null) {
1272 - callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId()); 1265 + callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
1273 } else { 1266 } else {
1274 - callIdHeader = sipSender.getNewCallIdHeader(device.getTransport()); 1267 + callIdHeader = sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport());
1275 } 1268 }
1276 1269
1277 // 有效时间默认为60秒以上 1270 // 有效时间默认为60秒以上
1278 SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), requestOld, device.getSubscribeCycleForCatalog(), "Catalog", 1271 SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), requestOld, device.getSubscribeCycleForCatalog(), "Catalog",
1279 callIdHeader); 1272 callIdHeader);
1280 - sipSender.transmitRequest( request, errorEvent, okEvent); 1273 + sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent);
1281 return request; 1274 return request;
1282 } 1275 }
1283 1276
@@ -1298,9 +1291,9 @@ public class SIPCommander implements ISIPCommander { @@ -1298,9 +1291,9 @@ public class SIPCommander implements ISIPCommander {
1298 dragXml.append(cmdString); 1291 dragXml.append(cmdString);
1299 dragXml.append("</Control>\r\n"); 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 logger.debug("拉框信令: " + request.toString()); 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,7 +1372,7 @@ public class SIPCommander implements ISIPCommander {
1379 return; 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 @Override 1378 @Override
@@ -1409,8 +1402,8 @@ public class SIPCommander implements ISIPCommander { @@ -1409,8 +1402,8 @@ public class SIPCommander implements ISIPCommander {
1409 deviceStatusXml.append("</Notify>\r\n"); 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 package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl; 1 package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
2 2
3 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
  4 +import com.genersoft.iot.vmp.gb28181.SipLayer;
4 import com.genersoft.iot.vmp.gb28181.bean.*; 5 import com.genersoft.iot.vmp.gb28181.bean.*;
5 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; 6 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
6 import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; 7 import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
@@ -56,7 +57,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -56,7 +57,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
56 private ZLMRTPServerFactory zlmrtpServerFactory; 57 private ZLMRTPServerFactory zlmrtpServerFactory;
57 58
58 @Autowired 59 @Autowired
59 - private SipFactory sipFactory; 60 + private SipLayer sipLayer;
60 61
61 @Autowired 62 @Autowired
62 private SIPSender sipSender; 63 private SIPSender sipSender;
@@ -76,7 +77,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -76,7 +77,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
76 SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { 77 SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException {
77 Request request; 78 Request request;
78 if (!registerAgain ) { 79 if (!registerAgain ) {
79 - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); 80 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
80 81
81 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, 82 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform,
82 redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(), 83 redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(),
@@ -98,11 +99,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -98,11 +99,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
98 }); 99 });
99 100
100 }else { 101 }else {
101 - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); 102 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
102 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister); 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 @Override 109 @Override
@@ -117,7 +118,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -117,7 +118,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
117 keepaliveXml.append("<Status>OK</Status>\r\n"); 118 keepaliveXml.append("<Status>OK</Status>\r\n");
118 keepaliveXml.append("</Notify>\r\n"); 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 Request request = headerProviderPlatformProvider.createMessageRequest( 123 Request request = headerProviderPlatformProvider.createMessageRequest(
123 parentPlatform, 124 parentPlatform,
@@ -125,7 +126,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -125,7 +126,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
125 SipUtils.getNewFromTag(), 126 SipUtils.getNewFromTag(),
126 SipUtils.getNewViaTag(), 127 SipUtils.getNewViaTag(),
127 callIdHeader); 128 callIdHeader);
128 - sipSender.transmitRequest( request, errorEvent, okEvent); 129 + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, errorEvent, okEvent);
129 return callIdHeader.getCallId(); 130 return callIdHeader.getCallId();
130 } 131 }
131 132
@@ -148,10 +149,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -148,10 +149,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
148 String catalogXml = getCatalogXml(channels, sn, parentPlatform, size); 149 String catalogXml = getCatalogXml(channels, sn, parentPlatform, size);
149 150
150 // callid 151 // callid
151 - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); 152 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
152 153
153 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); 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,10 +235,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
234 } 235 }
235 String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size()); 236 String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size());
236 // callid 237 // callid
237 - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); 238 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
238 239
239 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader); 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 int indexNext = index + parentPlatform.getCatalogGroup(); 242 int indexNext = index + parentPlatform.getCatalogGroup();
242 try { 243 try {
243 sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext); 244 sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext);
@@ -273,10 +274,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -273,10 +274,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
273 deviceInfoXml.append("<Result>OK</Result>\r\n"); 274 deviceInfoXml.append("<Result>OK</Result>\r\n");
274 deviceInfoXml.append("</Response>\r\n"); 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 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); 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,10 +304,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
303 deviceStatusXml.append("<Status>OK</Status>\r\n"); 304 deviceStatusXml.append("<Status>OK</Status>\r\n");
304 deviceStatusXml.append("</Response>\r\n"); 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 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); 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,10 +366,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
365 deviceStatusXml.append("</info>\r\n"); 366 deviceStatusXml.append("</info>\r\n");
366 deviceStatusXml.append("</Notify>\r\n"); 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 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader); 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,14 +409,14 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
408 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent, 409 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent,
409 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent ) 410 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent )
410 throws SipException, ParseException, InvalidArgumentException { 411 throws SipException, ParseException, InvalidArgumentException {
411 - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory(); 412 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
412 String characterSet = parentPlatform.getCharacterSet(); 413 String characterSet = parentPlatform.getCharacterSet();
413 // 设置编码, 防止中文乱码 414 // 设置编码, 防止中文乱码
414 messageFactory.setDefaultContentEncodingCharset(characterSet); 415 messageFactory.setDefaultContentEncodingCharset(characterSet);
415 416
416 SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo); 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 private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) { 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,21 +581,21 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
580 recordXml.append("</Response>\r\n"); 581 recordXml.append("</Response>\r\n");
581 582
582 // callid 583 // callid
583 - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); 584 + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
584 585
585 Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); 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 @Override 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 return; 594 return;
594 } 595 }
595 596
596 597
597 - String characterSet = platform.getCharacterSet(); 598 + String characterSet = parentPlatform.getCharacterSet();
598 StringBuffer mediaStatusXml = new StringBuffer(200); 599 StringBuffer mediaStatusXml = new StringBuffer(200);
599 mediaStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n"); 600 mediaStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
600 mediaStatusXml.append("<Notify>\r\n"); 601 mediaStatusXml.append("<Notify>\r\n");
@@ -604,10 +605,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -604,10 +605,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
604 mediaStatusXml.append("<NotifyType>121</NotifyType>\r\n"); 605 mediaStatusXml.append("<NotifyType>121</NotifyType>\r\n");
605 mediaStatusXml.append("</Notify>\r\n"); 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 sendRtpItem); 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,26 +624,26 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
623 } 624 }
624 625
625 @Override 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 if (sendRtpItem == null ) { 628 if (sendRtpItem == null ) {
628 logger.info("[向上级发送BYE], sendRtpItem 为NULL"); 629 logger.info("[向上级发送BYE], sendRtpItem 为NULL");
629 return; 630 return;
630 } 631 }
631 - if (platform == null) { 632 + if (parentPlatform == null) {
632 logger.info("[向上级发送BYE], platform 为NULL"); 633 logger.info("[向上级发送BYE], platform 为NULL");
633 return; 634 return;
634 } 635 }
635 - logger.info("[向上级发送BYE], {}/{}", platform.getServerGBId(), sendRtpItem.getChannelId()); 636 + logger.info("[向上级发送BYE], {}/{}", parentPlatform.getServerGBId(), sendRtpItem.getChannelId());
636 String mediaServerId = sendRtpItem.getMediaServerId(); 637 String mediaServerId = sendRtpItem.getMediaServerId();
637 MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId); 638 MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
638 if (mediaServerItem != null) { 639 if (mediaServerItem != null) {
639 mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc()); 640 mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc());
640 zlmrtpServerFactory.closeRTPServer(mediaServerItem, sendRtpItem.getStreamId()); 641 zlmrtpServerFactory.closeRTPServer(mediaServerItem, sendRtpItem.getStreamId());
641 } 642 }
642 - SIPRequest byeRequest = headerProviderPlatformProvider.createByeRequest(platform, sendRtpItem); 643 + SIPRequest byeRequest = headerProviderPlatformProvider.createByeRequest(parentPlatform, sendRtpItem);
643 if (byeRequest == null) { 644 if (byeRequest == null) {
644 logger.warn("[向上级发送bye]:无法创建 byeRequest"); 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,7 +177,7 @@ public abstract class SIPRequestProcessorParent {
177 } 177 }
178 178
179 // 发送response 179 // 发送response
180 - sipSender.transmitRequest(response); 180 + sipSender.transmitRequest(sipRequest.getLocalAddress().getHostAddress(), response);
181 181
182 return response; 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,7 +417,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
417 // 未知错误。直接转发设备点播的错误 417 // 未知错误。直接转发设备点播的错误
418 try { 418 try {
419 Response response = getMessageFactory().createResponse(event.statusCode, evt.getRequest()); 419 Response response = getMessageFactory().createResponse(event.statusCode, evt.getRequest());
420 - sipSender.transmitRequest(response); 420 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
421 } catch (ParseException | SipException e) { 421 } catch (ParseException | SipException e) {
422 e.printStackTrace(); 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,6 +15,7 @@ import gov.nist.javax.sip.address.AddressImpl;
15 import gov.nist.javax.sip.address.SipUri; 15 import gov.nist.javax.sip.address.SipUri;
16 import gov.nist.javax.sip.header.Expires; 16 import gov.nist.javax.sip.header.Expires;
17 import gov.nist.javax.sip.header.SIPDateHeader; 17 import gov.nist.javax.sip.header.SIPDateHeader;
  18 +import gov.nist.javax.sip.message.SIPRequest;
18 import org.slf4j.Logger; 19 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory; 20 import org.slf4j.LoggerFactory;
20 import org.springframework.beans.factory.InitializingBean; 21 import org.springframework.beans.factory.InitializingBean;
@@ -71,8 +72,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -71,8 +72,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
71 RequestEventExt evtExt = (RequestEventExt) evt; 72 RequestEventExt evtExt = (RequestEventExt) evt;
72 String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort(); 73 String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort();
73 logger.info("[注册请求] 开始处理: {}", requestAddress); 74 logger.info("[注册请求] 开始处理: {}", requestAddress);
74 - Request request = evt.getRequest();  
75 - ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME); 75 + SIPRequest request = (SIPRequest)evt.getRequest();
76 Response response = null; 76 Response response = null;
77 boolean passwordCorrect = false; 77 boolean passwordCorrect = false;
78 // 注册标志 78 // 注册标志
@@ -88,7 +88,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -88,7 +88,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
88 logger.info("[注册请求] 未携带授权头 回复401: {}", requestAddress); 88 logger.info("[注册请求] 未携带授权头 回复401: {}", requestAddress);
89 response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request); 89 response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
90 new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain()); 90 new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
91 - sipSender.transmitRequest(response); 91 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
92 return; 92 return;
93 } 93 }
94 94
@@ -101,7 +101,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -101,7 +101,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
101 response = getMessageFactory().createResponse(Response.FORBIDDEN, request); 101 response = getMessageFactory().createResponse(Response.FORBIDDEN, request);
102 response.setReasonPhrase("wrong password"); 102 response.setReasonPhrase("wrong password");
103 logger.info("[注册请求] 密码/SIP服务器ID错误, 回复403: {}", requestAddress); 103 logger.info("[注册请求] 密码/SIP服务器ID错误, 回复403: {}", requestAddress);
104 - sipSender.transmitRequest(response); 104 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
105 return; 105 return;
106 } 106 }
107 107
@@ -114,9 +114,9 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -114,9 +114,9 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
114 dateHeader.setDate(wvpSipDate); 114 dateHeader.setDate(wvpSipDate);
115 response.addHeader(dateHeader); 115 response.addHeader(dateHeader);
116 116
117 - if (expiresHeader == null) { 117 + if (request.getExpires() == null) {
118 response = getMessageFactory().createResponse(Response.BAD_REQUEST, request); 118 response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
119 - sipSender.transmitRequest(response); 119 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
120 return; 120 return;
121 } 121 }
122 // 添加Contact头 122 // 添加Contact头
@@ -145,12 +145,13 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -145,12 +145,13 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
145 device.setIp(received); 145 device.setIp(received);
146 device.setPort(rPort); 146 device.setPort(rPort);
147 device.setHostAddress(received.concat(":").concat(String.valueOf(rPort))); 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 registerFlag = false; 151 registerFlag = false;
151 } else { 152 } else {
152 // 注册成功 153 // 注册成功
153 - device.setExpires(expiresHeader.getExpires()); 154 + device.setExpires(request.getExpires().getExpires());
154 registerFlag = true; 155 registerFlag = true;
155 // 判断TCP还是UDP 156 // 判断TCP还是UDP
156 ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); 157 ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
@@ -158,7 +159,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -158,7 +159,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
158 device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP"); 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 // 保存到redis 164 // 保存到redis
164 if (registerFlag) { 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,7 +93,7 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
93 response.setExpires(expireHeader); 93 response.setExpires(expireHeader);
94 } 94 }
95 logger.info("response : " + response); 95 logger.info("response : " + response);
96 - sipSender.transmitRequest(response); 96 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
97 } 97 }
98 } catch (ParseException | SipException | InvalidArgumentException | DocumentException e) { 98 } catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
99 e.printStackTrace(); 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,23 +84,24 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
84 logger.error("[命令发送失败] 国标级联 注销: {}", e.getMessage()); 84 logger.error("[命令发送失败] 国标级联 注销: {}", e.getMessage());
85 } 85 }
86 taskExecutor.execute(()->{ 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 } else { 106 } else {
106 // 远程启动指定设备 107 // 远程启动指定设备
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
1 package com.genersoft.iot.vmp.gb28181.transmit.event.response.impl; 1 package com.genersoft.iot.vmp.gb28181.transmit.event.response.impl;
2 2
3 import com.genersoft.iot.vmp.conf.SipConfig; 3 import com.genersoft.iot.vmp.conf.SipConfig;
  4 +import com.genersoft.iot.vmp.gb28181.SipLayer;
4 import com.genersoft.iot.vmp.gb28181.bean.Device; 5 import com.genersoft.iot.vmp.gb28181.bean.Device;
5 import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; 6 import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
6 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; 7 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
@@ -54,7 +55,7 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract { @@ -54,7 +55,7 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract {
54 55
55 56
56 @Autowired 57 @Autowired
57 - private SipFactory sipFactory; 58 + private SipLayer sipLayer;
58 59
59 @Autowired 60 @Autowired
60 private SIPSender sipSender; 61 private SIPSender sipSender;
@@ -103,11 +104,11 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract { @@ -103,11 +104,11 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract {
103 } else { 104 } else {
104 sdp = SdpFactory.getInstance().createSessionDescription(contentString); 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 Request reqAck = headerProvider.createAckRequest(requestUri, response); 108 Request reqAck = headerProvider.createAckRequest(requestUri, response);
108 109
109 logger.info("[回复ack] {}-> {}:{} ", sdp.getOrigin().getUsername(), event.getRemoteIpAddress(), event.getRemotePort()); 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 } catch (InvalidArgumentException | ParseException | SipException | SdpParseException e) { 113 } catch (InvalidArgumentException | ParseException | SipException | SdpParseException e) {
113 logger.info("[点播回复ACK],异常:", e ); 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,7 +21,7 @@ import org.springframework.stereotype.Component;
21 import java.util.*; 21 import java.util.*;
22 22
23 @Component 23 @Component
24 -@Order(value=1) 24 +@Order(value=2)
25 public class ZLMRunner implements CommandLineRunner { 25 public class ZLMRunner implements CommandLineRunner {
26 26
27 private final static Logger logger = LoggerFactory.getLogger(ZLMRunner.class); 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,6 +25,7 @@ public interface DeviceMapper {
25 "streamMode," + 25 "streamMode," +
26 "ip," + 26 "ip," +
27 "sdpIp," + 27 "sdpIp," +
  28 + "localIp," +
28 "port," + 29 "port," +
29 "hostAddress," + 30 "hostAddress," +
30 "expires," + 31 "expires," +
@@ -54,6 +55,7 @@ public interface DeviceMapper { @@ -54,6 +55,7 @@ public interface DeviceMapper {
54 "streamMode," + 55 "streamMode," +
55 "ip," + 56 "ip," +
56 "sdpIp," + 57 "sdpIp," +
  58 + "localIp," +
57 "port," + 59 "port," +
58 "hostAddress," + 60 "hostAddress," +
59 "expires," + 61 "expires," +
@@ -80,6 +82,7 @@ public interface DeviceMapper { @@ -80,6 +82,7 @@ public interface DeviceMapper {
80 "#{streamMode}," + 82 "#{streamMode}," +
81 "#{ip}," + 83 "#{ip}," +
82 "#{sdpIp}," + 84 "#{sdpIp}," +
  85 + "#{localIp}," +
83 "#{port}," + 86 "#{port}," +
84 "#{hostAddress}," + 87 "#{hostAddress}," +
85 "#{expires}," + 88 "#{expires}," +
@@ -129,6 +132,7 @@ public interface DeviceMapper { @@ -129,6 +132,7 @@ public interface DeviceMapper {
129 "streamMode," + 132 "streamMode," +
130 "ip," + 133 "ip," +
131 "sdpIp," + 134 "sdpIp," +
  135 + "localIp," +
132 "port," + 136 "port," +
133 "hostAddress," + 137 "hostAddress," +
134 "expires," + 138 "expires," +
@@ -165,6 +169,7 @@ public interface DeviceMapper { @@ -165,6 +169,7 @@ public interface DeviceMapper {
165 "streamMode," + 169 "streamMode," +
166 "ip," + 170 "ip," +
167 "sdpIp," + 171 "sdpIp," +
  172 + "localIp," +
168 "port," + 173 "port," +
169 "hostAddress," + 174 "hostAddress," +
170 "expires," + 175 "expires," +
@@ -194,6 +199,7 @@ public interface DeviceMapper { @@ -194,6 +199,7 @@ public interface DeviceMapper {
194 "streamMode," + 199 "streamMode," +
195 "ip," + 200 "ip," +
196 "sdpIp," + 201 "sdpIp," +
  202 + "localIp," +
197 "port," + 203 "port," +
198 "hostAddress," + 204 "hostAddress," +
199 "expires," + 205 "expires," +
src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
@@ -164,25 +164,25 @@ public class ServerController { @@ -164,25 +164,25 @@ public class ServerController {
164 @GetMapping(value = "/restart") 164 @GetMapping(value = "/restart")
165 @ResponseBody 165 @ResponseBody
166 public void restart() { 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 @Operation(summary = "获取系统信息信息") 188 @Operation(summary = "获取系统信息信息")