Refactoring of packages
This commit is contained in:
		
							parent
							
								
									8c9a6c3e47
								
							
						
					
					
						commit
						67431a044a
					
				@ -69,8 +69,8 @@
 | 
			
		||||
            <!--<artifactId>coap</artifactId>-->
 | 
			
		||||
        <!--</dependency>-->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.transport</groupId>
 | 
			
		||||
            <artifactId>mqtt-common</artifactId>
 | 
			
		||||
            <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
            <artifactId>mqtt</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard</groupId>
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,6 @@ import org.thingsboard.server.service.encoding.DataDecodingEncodingService;
 | 
			
		||||
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
 | 
			
		||||
import org.thingsboard.server.service.executors.ExternalCallExecutorService;
 | 
			
		||||
import org.thingsboard.server.service.mail.MailExecutorService;
 | 
			
		||||
import org.thingsboard.server.service.queue.MsgQueueService;
 | 
			
		||||
import org.thingsboard.server.service.rpc.DeviceRpcService;
 | 
			
		||||
import org.thingsboard.server.service.script.JsExecutorService;
 | 
			
		||||
import org.thingsboard.server.service.script.JsInvokeService;
 | 
			
		||||
 | 
			
		||||
@ -417,7 +417,7 @@ js:
 | 
			
		||||
    max_errors: "${REMOTE_JS_SANDBOX_MAX_ERRORS:3}"
 | 
			
		||||
 | 
			
		||||
transport:
 | 
			
		||||
  type: "${TRANSPORT_TYPE:remote}" # local or remote
 | 
			
		||||
  type: "${TRANSPORT_TYPE:local}" # local or remote
 | 
			
		||||
  remote:
 | 
			
		||||
    transport_api:
 | 
			
		||||
      requests_topic: "${TB_TRANSPORT_API_REQUEST_TOPIC:tb.transport.api.requests}"
 | 
			
		||||
@ -434,11 +434,12 @@ transport:
 | 
			
		||||
      topic: "${TB_TRANSPORT_NOTIFICATIONS_TOPIC:tb.transport.notifications}"
 | 
			
		||||
  # Local HTTP transport parameters
 | 
			
		||||
  http:
 | 
			
		||||
    enabled: "${MQTT_ENABLED:true}"
 | 
			
		||||
    request_timeout: "${HTTP_REQUEST_TIMEOUT:60000}"
 | 
			
		||||
  # Local MQTT transport parameters
 | 
			
		||||
  mqtt:
 | 
			
		||||
    # Enable/disable mqtt transport protocol.
 | 
			
		||||
    enabled: "${MQTT_ENABLED:false}"
 | 
			
		||||
    enabled: "${MQTT_ENABLED:true}"
 | 
			
		||||
    bind_address: "${MQTT_BIND_ADDRESS:0.0.0.0}"
 | 
			
		||||
    bind_port: "${MQTT_BIND_PORT:1883}"
 | 
			
		||||
    adaptor: "${MQTT_ADAPTOR_NAME:JsonMqttAdaptor}"
 | 
			
		||||
@ -465,7 +466,7 @@ transport:
 | 
			
		||||
  # Local CoAP transport parameters
 | 
			
		||||
  coap:
 | 
			
		||||
    # Enable/disable coap transport protocol.
 | 
			
		||||
    enabled: "${COAP_ENABLED:false}"
 | 
			
		||||
    enabled: "${COAP_ENABLED:true}"
 | 
			
		||||
    bind_address: "${COAP_BIND_ADDRESS:0.0.0.0}"
 | 
			
		||||
    bind_port: "${COAP_BIND_PORT:5683}"
 | 
			
		||||
    adaptor:  "${COAP_ADAPTOR_NAME:JsonCoapAdaptor}"
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,10 @@
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>data</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.bouncycastle</groupId>
 | 
			
		||||
            <artifactId>bcprov-jdk15on</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.slf4j</groupId>
 | 
			
		||||
            <artifactId>slf4j-api</artifactId>
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.dao;
 | 
			
		||||
package org.thingsboard.server.common.msg;
 | 
			
		||||
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.bouncycastle.crypto.digests.SHA3Digest;
 | 
			
		||||
@ -23,7 +23,6 @@
 | 
			
		||||
        <version>2.2.0-SNAPSHOT</version>
 | 
			
		||||
        <artifactId>thingsboard</artifactId>
 | 
			
		||||
    </parent>
 | 
			
		||||
    <groupId>org.thingsboard</groupId>
 | 
			
		||||
    <artifactId>common</artifactId>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@
 | 
			
		||||
 | 
			
		||||
-->
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.thingsboard</groupId>
 | 
			
		||||
@ -64,6 +64,10 @@
 | 
			
		||||
            <groupId>com.google.code.gson</groupId>
 | 
			
		||||
            <artifactId>gson</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.commons</groupId>
 | 
			
		||||
            <artifactId>commons-lang3</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.slf4j</groupId>
 | 
			
		||||
            <artifactId>slf4j-api</artifactId>
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,51 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright © 2016-2018 The Thingsboard Authors
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.kafka;
 | 
			
		||||
 | 
			
		||||
import lombok.Getter;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import org.springframework.util.StringUtils;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import java.net.InetAddress;
 | 
			
		||||
import java.net.UnknownHostException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Created by ashvayka on 12.10.18.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@Component
 | 
			
		||||
public class TbNodeIdProvider {
 | 
			
		||||
 | 
			
		||||
    @Getter
 | 
			
		||||
    @Value("${cluster.node_id:#{null}}")
 | 
			
		||||
    private String nodeId;
 | 
			
		||||
 | 
			
		||||
    @PostConstruct
 | 
			
		||||
    public void init() {
 | 
			
		||||
        if (StringUtils.isEmpty(nodeId)) {
 | 
			
		||||
            try {
 | 
			
		||||
                nodeId = InetAddress.getLocalHost().getHostName();
 | 
			
		||||
            } catch (UnknownHostException e) {
 | 
			
		||||
                nodeId = org.apache.commons.lang3.RandomStringUtils.randomAlphabetic(10);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        log.info("Current NodeId: {}", nodeId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -19,12 +19,12 @@
 | 
			
		||||
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.thingsboard</groupId>
 | 
			
		||||
        <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
        <version>2.2.0-SNAPSHOT</version>
 | 
			
		||||
        <artifactId>transport</artifactId>
 | 
			
		||||
    </parent>
 | 
			
		||||
    <groupId>org.thingsboard.transport</groupId>
 | 
			
		||||
    <artifactId>mqtt-common</artifactId>
 | 
			
		||||
    <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
    <artifactId>mqtt</artifactId>
 | 
			
		||||
    <packaging>jar</packaging>
 | 
			
		||||
 | 
			
		||||
    <name>Thingsboard MQTT Transport Common</name>
 | 
			
		||||
@ -32,18 +32,22 @@
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <main.dir>${basedir}/../..</main.dir>
 | 
			
		||||
        <main.dir>${basedir}/../../..</main.dir>
 | 
			
		||||
    </properties>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>transport</artifactId>
 | 
			
		||||
            <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
            <artifactId>transport-api</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>io.netty</groupId>
 | 
			
		||||
            <artifactId>netty-all</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework</groupId>
 | 
			
		||||
            <artifactId>spring-context-support</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework</groupId>
 | 
			
		||||
            <artifactId>spring-context</artifactId>
 | 
			
		||||
@ -68,6 +72,12 @@
 | 
			
		||||
            <groupId>com.google.guava</groupId>
 | 
			
		||||
            <artifactId>guava</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.code.findbugs</groupId>
 | 
			
		||||
            <artifactId>jsr305</artifactId>
 | 
			
		||||
            <version>3.0.1</version>
 | 
			
		||||
            <optional>true</optional>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.boot</groupId>
 | 
			
		||||
            <artifactId>spring-boot-starter-test</artifactId>
 | 
			
		||||
@ -23,12 +23,19 @@ import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import org.springframework.util.StringUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
 | 
			
		||||
import org.thingsboard.server.dao.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.dao.device.DeviceCredentialsService;
 | 
			
		||||
import org.thingsboard.server.common.msg.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportServiceCallback;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos;
 | 
			
		||||
import org.thingsboard.server.transport.mqtt.util.SslUtil;
 | 
			
		||||
 | 
			
		||||
import javax.net.ssl.*;
 | 
			
		||||
import javax.net.ssl.KeyManager;
 | 
			
		||||
import javax.net.ssl.KeyManagerFactory;
 | 
			
		||||
import javax.net.ssl.SSLContext;
 | 
			
		||||
import javax.net.ssl.SSLEngine;
 | 
			
		||||
import javax.net.ssl.TrustManager;
 | 
			
		||||
import javax.net.ssl.TrustManagerFactory;
 | 
			
		||||
import javax.net.ssl.X509TrustManager;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileInputStream;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
@ -37,6 +44,8 @@ import java.net.URL;
 | 
			
		||||
import java.security.KeyStore;
 | 
			
		||||
import java.security.cert.CertificateException;
 | 
			
		||||
import java.security.cert.X509Certificate;
 | 
			
		||||
import java.util.concurrent.CountDownLatch;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Created by valerii.sosliuk on 11/6/16.
 | 
			
		||||
@ -58,7 +67,7 @@ public class MqttSslHandlerProvider {
 | 
			
		||||
    private String keyStoreType;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private DeviceCredentialsService deviceCredentialsService;
 | 
			
		||||
    private TransportService transportService;
 | 
			
		||||
 | 
			
		||||
    public SslHandler getSslHandler() {
 | 
			
		||||
        try {
 | 
			
		||||
@ -111,17 +120,17 @@ public class MqttSslHandlerProvider {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return new ThingsboardMqttX509TrustManager(x509Tm, deviceCredentialsService);
 | 
			
		||||
        return new ThingsboardMqttX509TrustManager(x509Tm, transportService);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static class ThingsboardMqttX509TrustManager implements X509TrustManager {
 | 
			
		||||
 | 
			
		||||
        private final X509TrustManager trustManager;
 | 
			
		||||
        private DeviceCredentialsService deviceCredentialsService;
 | 
			
		||||
        private TransportService transportService;
 | 
			
		||||
 | 
			
		||||
        ThingsboardMqttX509TrustManager(X509TrustManager trustManager, DeviceCredentialsService deviceCredentialsService) {
 | 
			
		||||
        ThingsboardMqttX509TrustManager(X509TrustManager trustManager, TransportService transportService) {
 | 
			
		||||
            this.trustManager = trustManager;
 | 
			
		||||
            this.deviceCredentialsService = deviceCredentialsService;
 | 
			
		||||
            this.transportService = transportService;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
@ -138,20 +147,39 @@ public class MqttSslHandlerProvider {
 | 
			
		||||
        @Override
 | 
			
		||||
        public void checkClientTrusted(X509Certificate[] chain,
 | 
			
		||||
                                       String authType) throws CertificateException {
 | 
			
		||||
            DeviceCredentials deviceCredentials = null;
 | 
			
		||||
            String credentialsBody = null;
 | 
			
		||||
            for (X509Certificate cert : chain) {
 | 
			
		||||
                try {
 | 
			
		||||
                    String strCert = SslUtil.getX509CertificateString(cert);
 | 
			
		||||
                    String sha3Hash = EncryptionUtil.getSha3Hash(strCert);
 | 
			
		||||
                    deviceCredentials = deviceCredentialsService.findDeviceCredentialsByCredentialsId(sha3Hash);
 | 
			
		||||
                    if (deviceCredentials != null && strCert.equals(deviceCredentials.getCredentialsValue())) {
 | 
			
		||||
                    final String[] credentialsBodyHolder = new String[1];
 | 
			
		||||
                    CountDownLatch latch = new CountDownLatch(1);
 | 
			
		||||
                    transportService.process(TransportProtos.ValidateDeviceX509CertRequestMsg.newBuilder().setHash(sha3Hash).build(),
 | 
			
		||||
                            new TransportServiceCallback<TransportProtos.ValidateDeviceCredentialsResponseMsg>() {
 | 
			
		||||
                                @Override
 | 
			
		||||
                                public void onSuccess(TransportProtos.ValidateDeviceCredentialsResponseMsg msg) {
 | 
			
		||||
                                    if (!StringUtils.isEmpty(msg.getCredentialsBody())) {
 | 
			
		||||
                                        credentialsBodyHolder[0] = msg.getCredentialsBody();
 | 
			
		||||
                                    }
 | 
			
		||||
                                    latch.countDown();
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                                @Override
 | 
			
		||||
                                public void onError(Throwable e) {
 | 
			
		||||
                                    log.error(e.getMessage(), e);
 | 
			
		||||
                                    latch.countDown();
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
                    latch.await(10, TimeUnit.SECONDS);
 | 
			
		||||
                    if (strCert.equals(credentialsBodyHolder[0])) {
 | 
			
		||||
                        credentialsBody = credentialsBodyHolder[0];
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                } catch (InterruptedException | IOException e) {
 | 
			
		||||
                    log.error(e.getMessage(), e);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (deviceCredentials == null) {
 | 
			
		||||
            if (credentialsBody == null) {
 | 
			
		||||
                throw new CertificateException("Invalid Device Certificate");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@ -20,21 +20,17 @@ import io.netty.handler.ssl.SslHandler;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.Getter;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.commons.lang3.RandomStringUtils;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import org.springframework.util.StringUtils;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
 | 
			
		||||
import org.thingsboard.server.kafka.TbNodeIdProvider;
 | 
			
		||||
import org.thingsboard.server.transport.mqtt.adaptors.MqttTransportAdaptor;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.PreDestroy;
 | 
			
		||||
import java.net.InetAddress;
 | 
			
		||||
import java.net.UnknownHostException;
 | 
			
		||||
import java.util.concurrent.ExecutorService;
 | 
			
		||||
import java.util.concurrent.Executors;
 | 
			
		||||
 | 
			
		||||
@ -61,11 +57,12 @@ public class MqttTransportContext {
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private MqttTransportAdaptor adaptor;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private TbNodeIdProvider nodeIdProvider;
 | 
			
		||||
 | 
			
		||||
    @Value("${transport.mqtt.netty.max_payload_size}")
 | 
			
		||||
    private Integer maxPayloadSize;
 | 
			
		||||
 | 
			
		||||
    @Value("${cluster.node_id:#{null}}")
 | 
			
		||||
    private String nodeId;
 | 
			
		||||
 | 
			
		||||
    private SslHandler sslHandler;
 | 
			
		||||
 | 
			
		||||
@ -74,14 +71,6 @@ public class MqttTransportContext {
 | 
			
		||||
 | 
			
		||||
    @PostConstruct
 | 
			
		||||
    public void init() {
 | 
			
		||||
        if (StringUtils.isEmpty(nodeId)) {
 | 
			
		||||
            try {
 | 
			
		||||
                nodeId = InetAddress.getLocalHost().getHostName();
 | 
			
		||||
            } catch (UnknownHostException e) {
 | 
			
		||||
                nodeId = RandomStringUtils.randomAlphabetic(10);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        log.info("Current NodeId: {}", nodeId);
 | 
			
		||||
        executor = Executors.newCachedThreadPool();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -92,4 +81,7 @@ public class MqttTransportContext {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getNodeId() {
 | 
			
		||||
        return nodeIdProvider.getNodeId();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -43,7 +43,7 @@ import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportServiceCallback;
 | 
			
		||||
import org.thingsboard.server.common.transport.adaptor.AdaptorException;
 | 
			
		||||
import org.thingsboard.server.common.transport.quota.QuotaService;
 | 
			
		||||
import org.thingsboard.server.dao.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.common.msg.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.DeviceInfoProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.SessionEvent;
 | 
			
		||||
@ -21,13 +21,6 @@ import io.netty.channel.socket.SocketChannel;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttDecoder;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttEncoder;
 | 
			
		||||
import io.netty.handler.ssl.SslHandler;
 | 
			
		||||
import org.thingsboard.server.common.transport.SessionMsgProcessor;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
import org.thingsboard.server.common.transport.auth.DeviceAuthService;
 | 
			
		||||
import org.thingsboard.server.common.transport.quota.QuotaService;
 | 
			
		||||
import org.thingsboard.server.dao.device.DeviceService;
 | 
			
		||||
import org.thingsboard.server.dao.relation.RelationService;
 | 
			
		||||
import org.thingsboard.server.transport.mqtt.adaptors.MqttTransportAdaptor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Andrew Shvayka
 | 
			
		||||
@ -23,19 +23,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
 | 
			
		||||
import io.netty.util.ResourceLeakDetector;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Qualifier;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
			
		||||
import org.springframework.context.ApplicationContext;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.server.common.transport.SessionMsgProcessor;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
import org.thingsboard.server.common.transport.auth.DeviceAuthService;
 | 
			
		||||
import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
 | 
			
		||||
import org.thingsboard.server.dao.device.DeviceService;
 | 
			
		||||
import org.thingsboard.server.dao.relation.RelationService;
 | 
			
		||||
import org.thingsboard.server.transport.mqtt.adaptors.MqttTransportAdaptor;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.PreDestroy;
 | 
			
		||||
@ -18,7 +18,6 @@ package org.thingsboard.server.transport.mqtt.adaptors;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttMessage;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttPublishMessage;
 | 
			
		||||
import org.thingsboard.server.common.transport.adaptor.AdaptorException;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.AttributeUpdateNotificationMsg;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.GetAttributeRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.GetAttributeResponseMsg;
 | 
			
		||||
@ -16,11 +16,8 @@
 | 
			
		||||
package org.thingsboard.server.transport.mqtt.session;
 | 
			
		||||
 | 
			
		||||
import io.netty.channel.ChannelHandlerContext;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttMessage;
 | 
			
		||||
import lombok.Getter;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.thingsboard.server.common.msg.session.ex.SessionException;
 | 
			
		||||
import org.thingsboard.server.common.transport.adaptor.AdaptorException;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.ConcurrentMap;
 | 
			
		||||
@ -17,7 +17,7 @@ package org.thingsboard.server.transport.mqtt.util;
 | 
			
		||||
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.util.Base64Utils;
 | 
			
		||||
import org.thingsboard.server.dao.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.common.msg.EncryptionUtil;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.security.cert.CertificateEncodingException;
 | 
			
		||||
@ -16,7 +16,7 @@
 | 
			
		||||
 | 
			
		||||
-->
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.thingsboard</groupId>
 | 
			
		||||
@ -25,85 +25,20 @@
 | 
			
		||||
    </parent>
 | 
			
		||||
    <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
    <artifactId>transport</artifactId>
 | 
			
		||||
    <packaging>jar</packaging>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
 | 
			
		||||
    <name>Thingsboard Server Common Transport components</name>
 | 
			
		||||
    <name>Thingsboard Server Commons</name>
 | 
			
		||||
    <url>https://thingsboard.io</url>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <main.dir>${basedir}/../..</main.dir>
 | 
			
		||||
    </properties>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>data</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>message</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.code.gson</groupId>
 | 
			
		||||
            <artifactId>gson</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.slf4j</groupId>
 | 
			
		||||
            <artifactId>slf4j-api</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.slf4j</groupId>
 | 
			
		||||
            <artifactId>log4j-over-slf4j</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>ch.qos.logback</groupId>
 | 
			
		||||
            <artifactId>logback-core</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>ch.qos.logback</groupId>
 | 
			
		||||
            <artifactId>logback-classic</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>junit</groupId>
 | 
			
		||||
            <artifactId>junit</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.mockito</groupId>
 | 
			
		||||
            <artifactId>mockito-all</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework</groupId>
 | 
			
		||||
            <artifactId>spring-context</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.boot</groupId>
 | 
			
		||||
            <artifactId>spring-boot-starter-web</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.guava</groupId>
 | 
			
		||||
            <artifactId>guava</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.commons</groupId>
 | 
			
		||||
            <artifactId>commons-lang3</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.protobuf</groupId>
 | 
			
		||||
            <artifactId>protobuf-java</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
        <plugins>
 | 
			
		||||
            <plugin>
 | 
			
		||||
                <groupId>org.xolstice.maven.plugins</groupId>
 | 
			
		||||
                <artifactId>protobuf-maven-plugin</artifactId>
 | 
			
		||||
            </plugin>
 | 
			
		||||
        </plugins>
 | 
			
		||||
    </build>
 | 
			
		||||
    <modules>
 | 
			
		||||
        <module>transport-api</module>
 | 
			
		||||
        <module>mqtt</module>
 | 
			
		||||
        <!--module>http</module-->
 | 
			
		||||
        <!--module>coap</module-->
 | 
			
		||||
    </modules>
 | 
			
		||||
 | 
			
		||||
</project>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										113
									
								
								common/transport/transport-api/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								common/transport/transport-api/pom.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,113 @@
 | 
			
		||||
<!--
 | 
			
		||||
 | 
			
		||||
    Copyright © 2016-2018 The Thingsboard Authors
 | 
			
		||||
 | 
			
		||||
    Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
    you may not use this file except in compliance with the License.
 | 
			
		||||
    You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
        http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
    Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
    distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
    See the License for the specific language governing permissions and
 | 
			
		||||
    limitations under the License.
 | 
			
		||||
 | 
			
		||||
-->
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
			
		||||
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
        <version>2.2.0-SNAPSHOT</version>
 | 
			
		||||
        <artifactId>transport</artifactId>
 | 
			
		||||
    </parent>
 | 
			
		||||
    <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
    <artifactId>transport-api</artifactId>
 | 
			
		||||
    <packaging>jar</packaging>
 | 
			
		||||
 | 
			
		||||
    <name>Thingsboard Server Common Transport components</name>
 | 
			
		||||
    <url>https://thingsboard.io</url>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <main.dir>${basedir}/../../..</main.dir>
 | 
			
		||||
    </properties>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>data</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>message</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>queue</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.code.gson</groupId>
 | 
			
		||||
            <artifactId>gson</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.slf4j</groupId>
 | 
			
		||||
            <artifactId>slf4j-api</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.slf4j</groupId>
 | 
			
		||||
            <artifactId>log4j-over-slf4j</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>ch.qos.logback</groupId>
 | 
			
		||||
            <artifactId>logback-core</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>ch.qos.logback</groupId>
 | 
			
		||||
            <artifactId>logback-classic</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>junit</groupId>
 | 
			
		||||
            <artifactId>junit</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.mockito</groupId>
 | 
			
		||||
            <artifactId>mockito-all</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework</groupId>
 | 
			
		||||
            <artifactId>spring-context</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.boot</groupId>
 | 
			
		||||
            <artifactId>spring-boot-starter-web</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.guava</groupId>
 | 
			
		||||
            <artifactId>guava</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.commons</groupId>
 | 
			
		||||
            <artifactId>commons-lang3</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.protobuf</groupId>
 | 
			
		||||
            <artifactId>protobuf-java</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
        <plugins>
 | 
			
		||||
            <plugin>
 | 
			
		||||
                <groupId>org.xolstice.maven.plugins</groupId>
 | 
			
		||||
                <artifactId>protobuf-maven-plugin</artifactId>
 | 
			
		||||
            </plugin>
 | 
			
		||||
        </plugins>
 | 
			
		||||
    </build>
 | 
			
		||||
 | 
			
		||||
</project>
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.mqtt.service;
 | 
			
		||||
package org.thingsboard.server.common.transport.service;
 | 
			
		||||
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.kafka.clients.consumer.ConsumerRecords;
 | 
			
		||||
@ -21,6 +21,7 @@ import org.apache.kafka.clients.producer.Callback;
 | 
			
		||||
import org.apache.kafka.clients.producer.RecordMetadata;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.server.common.transport.SessionMsgListener;
 | 
			
		||||
import org.thingsboard.server.common.transport.TransportService;
 | 
			
		||||
@ -44,7 +45,7 @@ import org.thingsboard.server.kafka.TBKafkaConsumerTemplate;
 | 
			
		||||
import org.thingsboard.server.kafka.TBKafkaProducerTemplate;
 | 
			
		||||
import org.thingsboard.server.kafka.TbKafkaRequestTemplate;
 | 
			
		||||
import org.thingsboard.server.kafka.TbKafkaSettings;
 | 
			
		||||
import org.thingsboard.server.transport.mqtt.MqttTransportContext;
 | 
			
		||||
import org.thingsboard.server.kafka.TbNodeIdProvider;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.PreDestroy;
 | 
			
		||||
@ -58,9 +59,10 @@ import java.util.concurrent.Executors;
 | 
			
		||||
/**
 | 
			
		||||
 * Created by ashvayka on 05.10.18.
 | 
			
		||||
 */
 | 
			
		||||
@ConditionalOnProperty(prefix = "transport", value = "type", havingValue = "remote", matchIfMissing = true)
 | 
			
		||||
@Service
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class MqttTransportService implements TransportService {
 | 
			
		||||
public class RemoteTransportService implements TransportService {
 | 
			
		||||
 | 
			
		||||
    @Value("${kafka.rule_engine.topic}")
 | 
			
		||||
    private String ruleEngineTopic;
 | 
			
		||||
@ -89,7 +91,7 @@ public class MqttTransportService implements TransportService {
 | 
			
		||||
    private TbKafkaSettings kafkaSettings;
 | 
			
		||||
    //We use this to get the node id. We should replace this with a component that provides the node id.
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private MqttTransportContext transportContext;
 | 
			
		||||
    private TbNodeIdProvider nodeIdProvider;
 | 
			
		||||
 | 
			
		||||
    private ExecutorService transportCallbackExecutor;
 | 
			
		||||
 | 
			
		||||
@ -112,8 +114,8 @@ public class MqttTransportService implements TransportService {
 | 
			
		||||
 | 
			
		||||
        TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TransportApiResponseMsg> responseBuilder = TBKafkaConsumerTemplate.builder();
 | 
			
		||||
        responseBuilder.settings(kafkaSettings);
 | 
			
		||||
        responseBuilder.topic(transportApiResponsesTopic + "." + transportContext.getNodeId());
 | 
			
		||||
        responseBuilder.clientId("transport-api-client-" + transportContext.getNodeId());
 | 
			
		||||
        responseBuilder.topic(transportApiResponsesTopic + "." + nodeIdProvider.getNodeId());
 | 
			
		||||
        responseBuilder.clientId("transport-api-client-" + nodeIdProvider.getNodeId());
 | 
			
		||||
        responseBuilder.groupId("transport-api-client");
 | 
			
		||||
        responseBuilder.autoCommit(true);
 | 
			
		||||
        responseBuilder.autoCommitIntervalMs(autoCommitInterval);
 | 
			
		||||
@ -138,8 +140,8 @@ public class MqttTransportService implements TransportService {
 | 
			
		||||
 | 
			
		||||
        TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<ToTransportMsg> mainConsumerBuilder = TBKafkaConsumerTemplate.builder();
 | 
			
		||||
        mainConsumerBuilder.settings(kafkaSettings);
 | 
			
		||||
        mainConsumerBuilder.topic(notificationsTopic + "." + transportContext.getNodeId());
 | 
			
		||||
        mainConsumerBuilder.clientId("transport-" + transportContext.getNodeId());
 | 
			
		||||
        mainConsumerBuilder.topic(notificationsTopic + "." + nodeIdProvider.getNodeId());
 | 
			
		||||
        mainConsumerBuilder.clientId("transport-" + nodeIdProvider.getNodeId());
 | 
			
		||||
        mainConsumerBuilder.groupId("transport");
 | 
			
		||||
        mainConsumerBuilder.autoCommit(true);
 | 
			
		||||
        mainConsumerBuilder.autoCommitIntervalMs(notificationsAutoCommitInterval);
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.mqtt.service;
 | 
			
		||||
package org.thingsboard.server.common.transport.service;
 | 
			
		||||
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
 | 
			
		||||
import org.thingsboard.server.kafka.TbKafkaEncoder;
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.mqtt.service;
 | 
			
		||||
package org.thingsboard.server.common.transport.service;
 | 
			
		||||
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
 | 
			
		||||
import org.thingsboard.server.kafka.TbKafkaDecoder;
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.mqtt.service;
 | 
			
		||||
package org.thingsboard.server.common.transport.service;
 | 
			
		||||
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg;
 | 
			
		||||
import org.thingsboard.server.kafka.TbKafkaEncoder;
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.mqtt.service;
 | 
			
		||||
package org.thingsboard.server.common.transport.service;
 | 
			
		||||
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg;
 | 
			
		||||
import org.thingsboard.server.kafka.TbKafkaDecoder;
 | 
			
		||||
@ -123,6 +123,7 @@ message ValidateDeviceX509CertRequestMsg {
 | 
			
		||||
 | 
			
		||||
message ValidateDeviceCredentialsResponseMsg {
 | 
			
		||||
  DeviceInfoProto deviceInfo = 1;
 | 
			
		||||
  string credentialsBody = 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message GetOrCreateDeviceFromGatewayRequestMsg {
 | 
			
		||||
@ -26,7 +26,7 @@ import org.thingsboard.server.common.data.Device;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
 | 
			
		||||
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
 | 
			
		||||
import org.thingsboard.server.dao.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.common.msg.EncryptionUtil;
 | 
			
		||||
import org.thingsboard.server.dao.exception.DataValidationException;
 | 
			
		||||
import org.thingsboard.server.dao.service.DataValidator;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								pom.xml
									
									
									
									
									
								
							@ -354,6 +354,16 @@
 | 
			
		||||
                <artifactId>transport</artifactId>
 | 
			
		||||
                <version>${project.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
                <artifactId>transport-api</artifactId>
 | 
			
		||||
                <version>${project.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
                <artifactId>mqtt</artifactId>
 | 
			
		||||
                <version>${project.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.thingsboard.transport</groupId>
 | 
			
		||||
                <artifactId>http</artifactId>
 | 
			
		||||
@ -364,11 +374,6 @@
 | 
			
		||||
                <artifactId>coap</artifactId>
 | 
			
		||||
                <version>${project.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.thingsboard.transport</groupId>
 | 
			
		||||
                <artifactId>mqtt-common</artifactId>
 | 
			
		||||
                <version>${project.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.thingsboard</groupId>
 | 
			
		||||
                <artifactId>dao</artifactId>
 | 
			
		||||
 | 
			
		||||
@ -71,6 +71,10 @@
 | 
			
		||||
            <groupId>com.google.guava</groupId>
 | 
			
		||||
            <artifactId>guava</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.code.gson</groupId>
 | 
			
		||||
            <artifactId>gson</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework</groupId>
 | 
			
		||||
            <artifactId>spring-web</artifactId>
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,6 @@ import org.thingsboard.rule.engine.api.TbContext;
 | 
			
		||||
import org.thingsboard.rule.engine.api.TbNode;
 | 
			
		||||
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
 | 
			
		||||
import org.thingsboard.rule.engine.api.TbNodeException;
 | 
			
		||||
import org.thingsboard.rule.engine.api.TbRelationTypes;
 | 
			
		||||
import org.thingsboard.rule.engine.api.util.DonAsynchron;
 | 
			
		||||
import org.thingsboard.rule.engine.api.util.TbNodeUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.DataConstants;
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,6 @@ import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import org.springframework.web.context.request.async.DeferredResult;
 | 
			
		||||
import org.thingsboard.server.common.msg.core.*;
 | 
			
		||||
import org.thingsboard.server.common.transport.SessionMsgProcessor;
 | 
			
		||||
import org.thingsboard.server.common.transport.auth.DeviceAuthService;
 | 
			
		||||
import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
 | 
			
		||||
 | 
			
		||||
@ -15,22 +15,10 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.transport.http.session;
 | 
			
		||||
 | 
			
		||||
import com.google.gson.JsonObject;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.context.request.async.DeferredResult;
 | 
			
		||||
import org.thingsboard.server.common.msg.core.*;
 | 
			
		||||
import org.thingsboard.server.common.msg.session.*;
 | 
			
		||||
import org.thingsboard.server.common.msg.session.ex.SessionException;
 | 
			
		||||
import org.thingsboard.server.common.transport.SessionMsgProcessor;
 | 
			
		||||
import org.thingsboard.server.common.transport.adaptor.JsonConverter;
 | 
			
		||||
import org.thingsboard.server.common.transport.auth.DeviceAuthService;
 | 
			
		||||
import org.thingsboard.server.common.transport.session.DeviceAwareSessionContext;
 | 
			
		||||
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Andrew Shvayka
 | 
			
		||||
 | 
			
		||||
@ -37,12 +37,8 @@
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
            <artifactId>transport</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.transport</groupId>
 | 
			
		||||
            <artifactId>mqtt-common</artifactId>
 | 
			
		||||
            <groupId>org.thingsboard.common.transport</groupId>
 | 
			
		||||
            <artifactId>mqtt</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.thingsboard.common</groupId>
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,6 @@
 | 
			
		||||
        <version>2.2.0-SNAPSHOT</version>
 | 
			
		||||
        <artifactId>thingsboard</artifactId>
 | 
			
		||||
    </parent>
 | 
			
		||||
    <groupId>org.thingsboard</groupId>
 | 
			
		||||
    <artifactId>transport</artifactId>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
 | 
			
		||||
@ -37,7 +36,6 @@
 | 
			
		||||
    <modules>
 | 
			
		||||
        <module>http</module>
 | 
			
		||||
        <!--<module>coap</module>-->
 | 
			
		||||
        <module>mqtt-common</module>
 | 
			
		||||
        <module>mqtt-transport</module>
 | 
			
		||||
    </modules>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user