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