Commit 1ab73f69ebdb30cdf8aeb5437c307df34bc0f6a6
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 = "获取系统信息信息") |