Commit af5171fd1974a2f732fedf52ebee13276d08751c

Authored by xp.Huang
2 parents b0e349c6 61dd22b6

Merge branch 'master_dev_gtb0323' into 'master_dev'

Revert "fix(DEFECT-1963): temp"

See merge request yunteng/thingskit!375
Showing 20 changed files with 56 additions and 117 deletions
... ... @@ -23,11 +23,13 @@ import org.thingsboard.server.common.data.yunteng.dto.sip.StreamContentDTO;
23 23 import org.thingsboard.server.common.data.yunteng.enums.PTZCommandEnum;
24 24 import org.thingsboard.server.common.data.yunteng.utils.tools.ResponseResult;
25 25 import org.thingsboard.server.controller.BaseController;
  26 +import org.thingsboard.server.queue.util.TbCoreComponent;
26 27 import org.thingsboard.server.service.yunteng.media.TkVideoControlService;
27 28
28 29 @RestController
29 30 @RequestMapping("api/yt/video/control")
30 31 @Api(tags = {"视频控制管理"})
  32 +@TbCoreComponent
31 33 @RequiredArgsConstructor
32 34 @Slf4j
33 35 public class TkVideoControlController extends BaseController {
... ...
... ... @@ -16,10 +16,12 @@ import org.thingsboard.server.common.data.yunteng.dto.sip.hook.param.*;
16 16 import org.thingsboard.server.controller.BaseController;
17 17 import org.thingsboard.server.dao.yunteng.service.media.TkMediaServerService;
18 18 import org.thingsboard.server.dao.yunteng.service.media.TkVideoChannelService;
  19 +import org.thingsboard.server.queue.util.TbCoreComponent;
19 20 import org.thingsboard.server.service.yunteng.media.TkVideoControlService;
20 21
21 22 /** ZLMediaServer的hook事件监听 */
22 23 @RestController
  24 +@TbCoreComponent
23 25 @RequestMapping("api/index/hook")
24 26 @Api(tags = {"ZLMediaServer的hook事件监听"})
25 27 @RequiredArgsConstructor
... ...
... ... @@ -39,10 +39,12 @@ import org.thingsboard.server.common.msg.rpc.ToDeviceRpcRequest;
39 39 import org.thingsboard.server.dao.util.yunteng.ZLMediaKitTaskUtils;
40 40 import org.thingsboard.server.dao.yunteng.service.TkDeviceService;
41 41 import org.thingsboard.server.dao.yunteng.service.media.*;
  42 +import org.thingsboard.server.queue.util.TbCoreComponent;
42 43 import org.thingsboard.server.service.rpc.TbCoreDeviceRpcService;
43 44 import org.thingsboard.server.service.security.model.SecurityUser;
44 45
45 46 @Service
  47 +@TbCoreComponent
46 48 @RequiredArgsConstructor
47 49 @Slf4j
48 50 public class TkVideoControlServiceImpl implements TkVideoControlService {
... ...
1   -package org.thingsboard.server.transport.config;
2   -
3   -import lombok.Data;
4   -import org.springframework.beans.factory.annotation.Value;
5   -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
6   -import org.springframework.stereotype.Component;
7   -
8   -@Component
9   -@ConditionalOnExpression(
10   - "'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.gbt28181.enabled}'=='true')")
11   -@Data
12   -public class ThingsKitVersionConfig {
13   - @Value("${thingskit.release.version}")
14   - private String releaseVersion;
15   -
16   - @Value("${thingskit.release.date}")
17   - private String releaseDate;
18   -}
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/cmd/AbstractSIPRequestProcess.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/cmd/AbstractSIPRequestProcess.java
1   -package org.thingsboard.server.transport.cmd;
  1 +package org.thingsboard.server.transport.gbt28181.cmd;
2 2
3 3 import java.text.ParseException;
4 4 import java.util.ArrayList;
... ... @@ -10,13 +10,11 @@ import javax.sip.address.AddressFactory;
10 10 import javax.sip.address.SipURI;
11 11 import javax.sip.header.*;
12 12 import org.springframework.beans.factory.annotation.Autowired;
13   -import org.thingsboard.server.transport.config.SipConfig;
14   -import org.thingsboard.server.transport.config.ThingsKitVersionConfig;
  13 +import org.thingsboard.server.transport.gbt28181.config.SipConfig;
15 14 import org.thingsboard.server.transport.gbt28181.sip.SipTransportService;
16 15
17 16 public abstract class AbstractSIPRequestProcess {
18 17 @Autowired private SipConfig sipConfig;
19   - @Autowired protected ThingsKitVersionConfig thingsKitVersionConfig;
20 18
21 19 protected static SipFactory sipFactory = SipFactory.getInstance();
22 20
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/cmd/SIPRequestHeaderProcess.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/cmd/SIPRequestHeaderProcess.java
1   -package org.thingsboard.server.transport.cmd;
  1 +package org.thingsboard.server.transport.gbt28181.cmd;
2 2
3 3 import gov.nist.javax.sip.header.SIPDateHeader;
4 4 import gov.nist.javax.sip.message.SIPRequest;
... ... @@ -19,7 +19,7 @@ import javax.sip.message.Response;
19 19 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
20 20 import org.springframework.stereotype.Component;
21 21 import org.thingsboard.server.common.data.yunteng.dto.sip.SipMessageHeaderDTO;
22   -import org.thingsboard.server.transport.session.GbtDeviceSessionCtx;
  22 +import org.thingsboard.server.transport.gbt28181.session.GbtDeviceSessionCtx;
23 23 import org.thingsboard.server.transport.util.TKSipUtils;
24 24
25 25 @Component
... ... @@ -168,7 +168,7 @@ public class SIPRequestHeaderProcess extends AbstractSIPRequestProcess {
168 168 viaHeaders,
169 169 maxForwards);
170 170
171   - request.addHeader(TKSipUtils.createUserAgentHeader(thingsKitVersionConfig));
  171 + request.addHeader(TKSipUtils.createUserAgentHeader());
172 172
173 173 ContactHeader contactHeader = buildMessageHeaderContact(localIp);
174 174 request.addHeader(contactHeader);
... ... @@ -213,7 +213,7 @@ public class SIPRequestHeaderProcess extends AbstractSIPRequestProcess {
213 213 toHeader,
214 214 viaHeaders,
215 215 maxForwards);
216   - request.addHeader(TKSipUtils.createUserAgentHeader(thingsKitVersionConfig));
  216 + request.addHeader(TKSipUtils.createUserAgentHeader());
217 217 return request;
218 218 }
219 219 }
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/cmd/SIPSender.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/cmd/SIPSender.java
1   -package org.thingsboard.server.transport.cmd;
  1 +package org.thingsboard.server.transport.gbt28181.cmd;
2 2
3 3 import gov.nist.javax.sip.SipProviderImpl;
4 4 import java.text.ParseException;
... ... @@ -14,9 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
14 14 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
15 15 import org.springframework.stereotype.Component;
16 16 import org.springframework.util.ObjectUtils;
17   -import org.thingsboard.server.transport.config.ThingsKitVersionConfig;
18   -import org.thingsboard.server.transport.gbt28181.sip.SipTransportService;
19 17 import org.thingsboard.server.transport.gbt28181.SipSubscribe;
  18 +import org.thingsboard.server.transport.gbt28181.sip.SipTransportService;
20 19 import org.thingsboard.server.transport.util.TKSipUtils;
21 20
22 21 /** 发送SIP信息 */
... ... @@ -27,7 +26,6 @@ import org.thingsboard.server.transport.util.TKSipUtils;
27 26 public class SIPSender {
28 27
29 28 @Autowired private SipSubscribe sipSubscribe;
30   - @Autowired private ThingsKitVersionConfig thingsKitVersionConfig;
31 29
32 30 private static final String TCP = "TCP";
33 31 private static final String UDP = "UDP";
... ... @@ -54,7 +52,7 @@ public class SIPSender {
54 52 }
55 53 if (message.getHeader(UserAgentHeader.NAME) == null) {
56 54 try {
57   - message.addHeader(TKSipUtils.createUserAgentHeader(thingsKitVersionConfig));
  55 + message.addHeader(TKSipUtils.createUserAgentHeader());
58 56 } catch (ParseException e) {
59 57 log.error("添加UserAgentHeader失败", e);
60 58 }
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/cmd/TKSipCommanderService.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/cmd/TKSipCommanderService.java
1   -package org.thingsboard.server.transport.cmd;
  1 +package org.thingsboard.server.transport.gbt28181.cmd;
2 2
3 3 import java.text.ParseException;
4 4 import javax.sip.InvalidArgumentException;
5   -import javax.sip.PeerUnavailableException;
6 5 import javax.sip.SipException;
7 6 import org.thingsboard.server.common.data.yunteng.dto.sip.*;
8 7 import org.thingsboard.server.transport.gbt28181.SipSubscribe;
9   -import org.thingsboard.server.transport.session.GbtDeviceSessionCtx;
  8 +import org.thingsboard.server.transport.gbt28181.session.GbtDeviceSessionCtx;
10 9
11 10 public interface TKSipCommanderService {
12 11 /**
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/cmd/TKSipCommanderServiceImpl.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/cmd/TKSipCommanderServiceImpl.java
1   -package org.thingsboard.server.transport.cmd;
  1 +package org.thingsboard.server.transport.gbt28181.cmd;
2 2
3 3 import java.text.ParseException;
4 4 import javax.sip.InvalidArgumentException;
... ... @@ -15,7 +15,7 @@ import org.thingsboard.server.common.data.yunteng.dto.sip.*;
15 15 import org.thingsboard.server.common.data.yunteng.enums.VideoCmdEnum;
16 16 import org.thingsboard.server.transport.gbt28181.sip.SipTransportService;
17 17 import org.thingsboard.server.transport.gbt28181.SipSubscribe;
18   -import org.thingsboard.server.transport.session.GbtDeviceSessionCtx;
  18 +import org.thingsboard.server.transport.gbt28181.session.GbtDeviceSessionCtx;
19 19 import org.thingsboard.server.transport.util.TKSipUtils;
20 20
21 21 @Service
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/config/MediaConfig.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/config/MediaConfig.java
1   -package org.thingsboard.server.transport.config;
  1 +package org.thingsboard.server.transport.gbt28181.config;
2 2
3 3 import java.io.Serializable;
4 4 import lombok.Data;
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/config/SipConfig.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/config/SipConfig.java
1   -package org.thingsboard.server.transport.config;
  1 +package org.thingsboard.server.transport.gbt28181.config;
2 2
3 3 import lombok.Data;
4 4 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/session/GbtDeviceSessionCtx.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/session/GbtDeviceSessionCtx.java
1   -package org.thingsboard.server.transport.session;
  1 +package org.thingsboard.server.transport.gbt28181.session;
2 2
3 3 import io.netty.util.ReferenceCountUtil;
4 4
... ...
... ... @@ -21,27 +21,12 @@ import org.thingsboard.server.common.transport.TransportContext;
21 21 public class GbtTransportContext extends TransportContext {
22 22
23 23
24   - @Getter
25   - @Value("${transport.tcp.netty.max_payload_size}")
26   - private Integer maxPayloadSize;
27 24
28   - @Getter
29   - @Value("${transport.tcp.ssl.skip_validity_check_for_client_cert:false}")
30   - private boolean skipValidityCheckForClientCert;
31 25
32   - @Getter @Setter private SslHandler sslHandler;
33 26
34   - @Getter
35   - @Value("${transport.tcp.msg_queue_size_per_device_limit:100}")
36   - private int messageQueueSizePerDeviceLimit;
37 27
38   - @Getter
39   - @Value("${transport.tcp.timeout:10000}")
40   - private long timeout;
41 28
42   - @Getter
43   - @Value("${transport.tcp.proxy_enabled:false}")
44   - private boolean proxyEnabled;
  29 +
45 30
46 31 private final AtomicInteger connectionsCounter = new AtomicInteger();
47 32 protected ScheduledExecutorService schedulerExecutor;
... ...
common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/gbt28181/session/ParentPlatform.java renamed from common/transport/gbt28181/src/main/java/org/thingsboard/server/transport/session/ParentPlatform.java
1   -package org.thingsboard.server.transport.session;
  1 +package org.thingsboard.server.transport.gbt28181.session;
2 2
3 3
4 4 import io.swagger.annotations.ApiModel;
... ...
... ... @@ -19,29 +19,31 @@ import java.util.*;
19 19 import java.util.concurrent.ConcurrentHashMap;
20 20 import javax.annotation.PostConstruct;
21 21 import javax.sip.*;
  22 +
  23 +import lombok.RequiredArgsConstructor;
22 24 import lombok.extern.slf4j.Slf4j;
23   -import org.springframework.beans.factory.annotation.Autowired;
24 25 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
25 26 import org.springframework.stereotype.Service;
26 27 import org.springframework.util.ObjectUtils;
27 28 import org.thingsboard.server.common.data.DataConstants;
28 29 import org.thingsboard.server.common.data.TbTransportService;
29 30 import org.thingsboard.server.transport.gbt28181.sip.processor.SIPProvider;
30   -import org.thingsboard.server.transport.config.SipConfig;
  31 +import org.thingsboard.server.transport.gbt28181.config.SipConfig;
31 32
32 33 /**
33 34 * @author Andrew Shvayka
34 35 */
35   -@Service()
  36 +@Service("SipTransportService")
  37 +@RequiredArgsConstructor
36 38 @ConditionalOnExpression(
37 39 "'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.gbt28181.enabled}'=='true')")
38 40 @Slf4j
39 41 public class SipTransportService implements TbTransportService {
40 42 private static final Map<String, SipProviderImpl> tcpSipProviderMap = new ConcurrentHashMap<>();
41 43 private static final Map<String, SipProviderImpl> udpSipProviderMap = new ConcurrentHashMap<>();
42   - @Autowired private SIPProvider sipProvider;
  44 + private final SIPProvider sipProvider;
43 45
44   - @Autowired private SipConfig sipConfig;
  46 + private final SipConfig sipConfig;
45 47
46 48 @PostConstruct
47 49 public void init() {
... ...
... ... @@ -57,25 +57,23 @@ import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsRes
57 57 import org.thingsboard.server.common.transport.util.DataDecodingEncodingService;
58 58 import org.thingsboard.server.gen.transport.TransportProtos;
59 59 import org.thingsboard.server.transport.gbt28181.session.GbtTransportContext;
60   -import org.thingsboard.server.transport.cmd.SIPRequestHeaderProcess;
61   -import org.thingsboard.server.transport.cmd.TKSipCommanderService;
62   -import org.thingsboard.server.transport.config.MediaConfig;
63   -import org.thingsboard.server.transport.config.SipConfig;
  60 +import org.thingsboard.server.transport.gbt28181.cmd.SIPRequestHeaderProcess;
  61 +import org.thingsboard.server.transport.gbt28181.cmd.TKSipCommanderService;
  62 +import org.thingsboard.server.transport.gbt28181.config.MediaConfig;
  63 +import org.thingsboard.server.transport.gbt28181.config.SipConfig;
64 64 import org.thingsboard.server.transport.gbt28181.*;
65 65 import org.thingsboard.server.transport.gbt28181.auth.DigestServerAuthenticationHelper;
66   -import org.thingsboard.server.transport.gbt28181.sip.ISIPRequestProcessor;
67   -import org.thingsboard.server.transport.gbt28181.sip.ISIPResponseProcessor;
68 66 import org.thingsboard.server.transport.gbt28181.auth.RemoteAddressInfo;
69   -import org.thingsboard.server.transport.session.GbtDeviceSessionCtx;
  67 +import org.thingsboard.server.transport.gbt28181.session.GbtDeviceSessionCtx;
70 68 import org.thingsboard.server.transport.util.TKSipUtils;
71 69 import org.thingsboard.server.transport.util.TKXmlUtil;
72 70
73 71 /** SIP信令处理类观察者 */
74 72 @Component
  73 +@RequiredArgsConstructor
75 74 @ConditionalOnExpression(
76 75 "'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.gbt28181.enabled}'=='true')")
77 76 @Slf4j
78   -@RequiredArgsConstructor
79 77 public class SIPProcessorObserver extends SIPRequestProcessorParent
80 78 implements SIPProvider, SessionMsgListener {
81 79
... ... @@ -100,33 +98,14 @@ public class SIPProcessorObserver extends SIPRequestProcessorParent
100 98
101 99 private final ConcurrentHashMap<String, List<VideoChanelDTO>> deviceNewChanel =
102 100 new ConcurrentHashMap<>();
103   - private static final Map<String, ISIPRequestProcessor> requestProcessorMap =
104   - new ConcurrentHashMap<>();
105   - private static final Map<String, ISIPResponseProcessor> responseProcessorMap =
106   - new ConcurrentHashMap<>();
  101 +
107 102 private static ITimeoutProcessor timeoutProcessor;
108 103
109 104 private final SipSubscribe sipSubscribe;
110 105
111   - /**
112   - * 添加 request订阅
113   - *
114   - * @param method 方法名
115   - * @param processor 处理程序
116   - */
117   - public void addRequestProcessor(String method, ISIPRequestProcessor processor) {
118   - requestProcessorMap.put(method, processor);
119   - }
120 106
121   - /**
122   - * 添加 response订阅
123   - *
124   - * @param method 方法名
125   - * @param processor 处理程序
126   - */
127   - public void addResponseProcessor(String method, ISIPResponseProcessor processor) {
128   - responseProcessorMap.put(method, processor);
129   - }
  107 +
  108 +
130 109
131 110 /**
132 111 * 添加 超时事件订阅
... ... @@ -272,17 +251,17 @@ public class SIPProcessorObserver extends SIPRequestProcessorParent
272 251 if (sessionCtx == null) {
273 252 return;
274 253 }
275   - final int queueSize = sessionCtx.getMsgQueueSize();
276   - if (queueSize >= context.getMessageQueueSizePerDeviceLimit()) {
277   - log.info(
278   - "Closing current session because msq queue size for device {} exceed limit {} with msgQueueSize counter {} and actual queue size {}",
279   - sessionCtx.getDeviceId(),
280   - context.getMessageQueueSizePerDeviceLimit(),
281   - queueSize,
282   - sessionCtx.getMsgQueueSize());
283   -
284   - return;
285   - }
  254 +// final int queueSize = sessionCtx.getMsgQueueSize();
  255 +// if (queueSize >= context.getMessageQueueSizePerDeviceLimit()) {
  256 +// log.info(
  257 +// "Closing current session because msq queue size for device {} exceed limit {} with msgQueueSize counter {} and actual queue size {}",
  258 +// sessionCtx.getDeviceId(),
  259 +// context.getMessageQueueSizePerDeviceLimit(),
  260 +// queueSize,
  261 +// sessionCtx.getMsgQueueSize());
  262 +//
  263 +// return;
  264 +// }
286 265 sessionCtx.addToQueue(evt);
287 266 processMsgQueue(
288 267 sessionCtx); // Under the normal conditions the msg queue will contain 0 messages. Many
... ...
... ... @@ -20,7 +20,7 @@ import org.dom4j.DocumentException;
20 20 import org.dom4j.Element;
21 21 import org.dom4j.io.SAXReader;
22 22 import org.springframework.beans.factory.annotation.Autowired;
23   -import org.thingsboard.server.transport.cmd.SIPSender;
  23 +import org.thingsboard.server.transport.gbt28181.cmd.SIPSender;
24 24 import org.thingsboard.server.transport.util.TKSipUtils;
25 25
26 26 /** 处理接收IPCamera发来的SIP协议请求消息 */
... ...
... ... @@ -21,8 +21,8 @@ import org.thingsboard.server.common.data.yunteng.utils.DataUtils;
21 21 import org.thingsboard.server.common.transport.TransportService;
22 22 import org.thingsboard.server.common.transport.util.DataDecodingEncodingService;
23 23 import org.thingsboard.server.gen.transport.TransportProtos;
24   -import org.thingsboard.server.transport.config.MediaConfig;
25   -import org.thingsboard.server.transport.config.SipConfig;
  24 +import org.thingsboard.server.transport.gbt28181.config.MediaConfig;
  25 +import org.thingsboard.server.transport.gbt28181.config.SipConfig;
26 26
27 27 @Component()
28 28 @Slf4j
... ...
... ... @@ -12,7 +12,6 @@ import org.apache.commons.lang3.RandomStringUtils;
12 12 import org.springframework.util.ObjectUtils;
13 13 import org.thingsboard.server.common.data.yunteng.dto.sip.PTZCmdDTO;
14 14 import org.thingsboard.server.common.data.yunteng.dto.sip.VideoChanelDTO;
15   -import org.thingsboard.server.transport.config.ThingsKitVersionConfig;
16 15 import org.thingsboard.server.transport.gbt28181.auth.RemoteAddressInfo;
17 16
18 17 public class TKSipUtils {
... ... @@ -63,19 +62,10 @@ public class TKSipUtils {
63 62 return builder.toString();
64 63 }
65 64
66   - public static UserAgentHeader createUserAgentHeader(ThingsKitVersionConfig config)
  65 + public static UserAgentHeader createUserAgentHeader()
67 66 throws PeerUnavailableException, ParseException {
68 67 List<String> agentParam = new ArrayList<>();
69 68 agentParam.add("ThingsKit ");
70   - if (config != null) {
71   - if (!ObjectUtils.isEmpty(config.getReleaseVersion())) {
72   - agentParam.add("v");
73   - agentParam.add(config.getReleaseVersion() + ".");
74   - }
75   - if (!ObjectUtils.isEmpty(config.getReleaseDate())) {
76   - agentParam.add(config.getReleaseDate());
77   - }
78   - }
79 69 return SipFactory.getInstance().createHeaderFactory().createUserAgentHeader(agentParam);
80 70 }
81 71
... ...
... ... @@ -21,7 +21,7 @@ import org.thingsboard.server.common.data.yunteng.dto.sip.VideoChanelDTO;
21 21 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum;
22 22 import org.thingsboard.server.common.data.yunteng.utils.DataUtils;
23 23 import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
24   -import org.thingsboard.server.transport.session.GbtDeviceSessionCtx;
  24 +import org.thingsboard.server.transport.gbt28181.session.GbtDeviceSessionCtx;
25 25
26 26 /** 基于dom4j的工具包 */
27 27 @Slf4j
... ...