Commit b34198f30c6f852eb8fca0e9a37cd0fe2538add7

Authored by ShvaykaD
Committed by GitHub
1 parent e3292e89

refactored CoAP Server component (#4497)

* refactored ce code base needed for coap-integration in pe

* added anotation TbCoapServerComponent on CoapTransportService

* license updated
@@ -621,9 +621,9 @@ transport: @@ -621,9 +621,9 @@ transport:
621 key_password: "${COAP_DTLS_KEY_PASSWORD:server_key_password}" 621 key_password: "${COAP_DTLS_KEY_PASSWORD:server_key_password}"
622 # Key alias 622 # Key alias
623 key_alias: "${COAP_DTLS_KEY_ALIAS:serveralias}" 623 key_alias: "${COAP_DTLS_KEY_ALIAS:serveralias}"
624 - # Skip certificate validity check for client certificates.  
625 - skip_validity_check_for_client_cert: "${COAP_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"  
626 x509: 624 x509:
  625 + # Skip certificate validity check for client certificates.
  626 + skip_validity_check_for_client_cert: "${TB_COAP_X509_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"
627 dtls_session_inactivity_timeout: "${TB_COAP_X509_DTLS_SESSION_INACTIVITY_TIMEOUT:86400000}" 627 dtls_session_inactivity_timeout: "${TB_COAP_X509_DTLS_SESSION_INACTIVITY_TIMEOUT:86400000}"
628 dtls_session_report_timeout: "${TB_COAP_X509_DTLS_SESSION_REPORT_TIMEOUT:1800000}" 628 dtls_session_report_timeout: "${TB_COAP_X509_DTLS_SESSION_REPORT_TIMEOUT:1800000}"
629 # Local LwM2M transport parameters 629 # Local LwM2M transport parameters
@@ -19,11 +19,10 @@ import lombok.Getter; @@ -19,11 +19,10 @@ import lombok.Getter;
19 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
20 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.beans.factory.annotation.Value; 21 import org.springframework.beans.factory.annotation.Value;
22 -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;  
23 import org.springframework.stereotype.Component; 22 import org.springframework.stereotype.Component;
24 23
25 @Slf4j 24 @Slf4j
26 -@ConditionalOnExpression("'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.coap.enabled}'=='true')") 25 +@TbCoapServerComponent
27 @Component 26 @Component
28 public class CoapServerContext { 27 public class CoapServerContext {
29 28
@@ -23,7 +23,6 @@ import org.eclipse.californium.core.server.resources.Resource; @@ -23,7 +23,6 @@ import org.eclipse.californium.core.server.resources.Resource;
23 import org.eclipse.californium.scandium.DTLSConnector; 23 import org.eclipse.californium.scandium.DTLSConnector;
24 import org.eclipse.californium.scandium.config.DtlsConnectorConfig; 24 import org.eclipse.californium.scandium.config.DtlsConnectorConfig;
25 import org.springframework.beans.factory.annotation.Autowired; 25 import org.springframework.beans.factory.annotation.Autowired;
26 -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;  
27 import org.springframework.stereotype.Component; 26 import org.springframework.stereotype.Component;
28 27
29 import javax.annotation.PostConstruct; 28 import javax.annotation.PostConstruct;
@@ -39,7 +38,7 @@ import java.util.concurrent.TimeUnit; @@ -39,7 +38,7 @@ import java.util.concurrent.TimeUnit;
39 38
40 @Slf4j 39 @Slf4j
41 @Component 40 @Component
42 -@ConditionalOnExpression("'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.coap.enabled}'=='true')") 41 +@TbCoapServerComponent
43 public class DefaultCoapServerService implements CoapServerService { 42 public class DefaultCoapServerService implements CoapServerService {
44 43
45 @Autowired 44 @Autowired
@@ -39,7 +39,6 @@ import java.util.Collections; @@ -39,7 +39,6 @@ import java.util.Collections;
39 import java.util.Optional; 39 import java.util.Optional;
40 40
41 @Slf4j 41 @Slf4j
42 -@ConditionalOnExpression("'${transport.coap.enabled}'=='true'")  
43 @ConditionalOnProperty(prefix = "transport.coap.dtls", value = "enabled", havingValue = "true", matchIfMissing = false) 42 @ConditionalOnProperty(prefix = "transport.coap.dtls", value = "enabled", havingValue = "true", matchIfMissing = false)
44 @Component 43 @Component
45 public class TbCoapDtlsSettings { 44 public class TbCoapDtlsSettings {
@@ -50,7 +49,7 @@ public class TbCoapDtlsSettings { @@ -50,7 +49,7 @@ public class TbCoapDtlsSettings {
50 @Value("${transport.coap.dtls.bind_port}") 49 @Value("${transport.coap.dtls.bind_port}")
51 private Integer port; 50 private Integer port;
52 51
53 - @Value("${transport.coap.dtls.mode}") 52 + @Value("${transport.coap.dtls.mode:NO_AUTH}")
54 private String mode; 53 private String mode;
55 54
56 @Value("${transport.coap.dtls.key_store}") 55 @Value("${transport.coap.dtls.key_store}")
@@ -65,13 +64,13 @@ public class TbCoapDtlsSettings { @@ -65,13 +64,13 @@ public class TbCoapDtlsSettings {
65 @Value("${transport.coap.dtls.key_alias}") 64 @Value("${transport.coap.dtls.key_alias}")
66 private String keyAlias; 65 private String keyAlias;
67 66
68 - @Value("${transport.coap.dtls.skip_validity_check_for_client_cert}") 67 + @Value("${transport.coap.dtls.x509.skip_validity_check_for_client_cert:false}")
69 private boolean skipValidityCheckForClientCert; 68 private boolean skipValidityCheckForClientCert;
70 69
71 - @Value("${transport.coap.dtls.x509.dtls_session_inactivity_timeout}") 70 + @Value("${transport.coap.dtls.x509.dtls_session_inactivity_timeout:86400000}")
72 private long dtlsSessionInactivityTimeout; 71 private long dtlsSessionInactivityTimeout;
73 72
74 - @Value("${transport.coap.dtls.x509.dtls_session_report_timeout}") 73 + @Value("${transport.coap.dtls.x509.dtls_session_report_timeout:1800000}")
75 private long dtlsSessionReportTimeout; 74 private long dtlsSessionReportTimeout;
76 75
77 @Autowired 76 @Autowired
  1 +/**
  2 + * Copyright © 2016-2021 The Thingsboard Authors
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + */
  16 +package org.thingsboard.server.coapserver;
  17 +
  18 +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
  19 +
  20 +import java.lang.annotation.Retention;
  21 +import java.lang.annotation.RetentionPolicy;
  22 +
  23 +@Retention(RetentionPolicy.RUNTIME)
  24 +@ConditionalOnExpression("'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.coap.enabled}'=='true')")
  25 +public @interface TbCoapServerComponent {
  26 +}
@@ -23,6 +23,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; @@ -23,6 +23,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
23 import org.springframework.stereotype.Service; 23 import org.springframework.stereotype.Service;
24 import org.thingsboard.server.common.data.TbTransportService; 24 import org.thingsboard.server.common.data.TbTransportService;
25 import org.thingsboard.server.coapserver.CoapServerService; 25 import org.thingsboard.server.coapserver.CoapServerService;
  26 +import org.thingsboard.server.coapserver.TbCoapServerComponent;
26 import org.thingsboard.server.transport.coap.efento.CoapEfentoTransportResource; 27 import org.thingsboard.server.transport.coap.efento.CoapEfentoTransportResource;
27 28
28 import javax.annotation.PostConstruct; 29 import javax.annotation.PostConstruct;
@@ -30,7 +31,7 @@ import javax.annotation.PreDestroy; @@ -30,7 +31,7 @@ import javax.annotation.PreDestroy;
30 import java.net.UnknownHostException; 31 import java.net.UnknownHostException;
31 32
32 @Service("CoapTransportService") 33 @Service("CoapTransportService")
33 -@ConditionalOnExpression("'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.coap.enabled}'=='true')") 34 +@TbCoapServerComponent
34 @Slf4j 35 @Slf4j
35 public class CoapTransportService implements TbTransportService { 36 public class CoapTransportService implements TbTransportService {
36 37
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; @@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
22 import com.fasterxml.jackson.databind.node.ObjectNode; 22 import com.fasterxml.jackson.databind.node.ObjectNode;
23 23
24 import java.io.IOException; 24 import java.io.IOException;
  25 +import java.util.Arrays;
25 26
26 /** 27 /**
27 * Created by Valerii Sosliuk on 5/12/2017. 28 * Created by Valerii Sosliuk on 5/12/2017.
@@ -66,6 +67,15 @@ public class JacksonUtil { @@ -66,6 +67,15 @@ public class JacksonUtil {
66 } 67 }
67 } 68 }
68 69
  70 + public static JsonNode fromBytes(byte[] bytes) {
  71 + try {
  72 + return OBJECT_MAPPER.readTree(bytes);
  73 + } catch (IOException e) {
  74 + throw new IllegalArgumentException("The given byte[] value: "
  75 + + Arrays.toString(bytes) + " cannot be transformed to Json object", e);
  76 + }
  77 + }
  78 +
69 public static String toString(Object value) { 79 public static String toString(Object value) {
70 try { 80 try {
71 return value != null ? OBJECT_MAPPER.writeValueAsString(value) : null; 81 return value != null ? OBJECT_MAPPER.writeValueAsString(value) : null;