diff --git a/application/pom.xml b/application/pom.xml
index 57881fb7d2..15d1d314dc 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -34,10 +34,15 @@
UTF-8
${basedir}/..
+ java
+ false
+ process-resources
+ package
thingsboard
- /var/log/${pkg.name}
- /usr/share/${pkg.name}
${project.build.directory}/windows
+ true
+ ThingsBoard
+ org.thingsboard.server.ThingsboardServerApplication
@@ -307,6 +312,10 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
org.apache.maven.plugins
maven-surefire-plugin
@@ -323,313 +332,30 @@
org.apache.maven.plugins
maven-resources-plugin
-
-
- copy-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
-
-
-
- copy-service-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/conf
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-win-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
- src/main/conf
-
- thingsboard.conf
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-control
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/control
-
-
- src/main/scripts/control
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-install
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/bin/install
-
-
- src/main/scripts/install
-
- **/*.sh
- **/*.xml
-
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-windows-control
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}
-
-
- src/main/scripts/windows
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-windows-install
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/install
-
-
- src/main/scripts/install
-
- logback.xml
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-data
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/data
-
-
- src/main/data
-
-
- ../dao/src/main/resources
-
- **/*.cql
- **/*.sql
-
- false
-
-
-
-
-
org.apache.maven.plugins
maven-dependency-plugin
-
-
- copy-winsw-service
- package
-
- copy
-
-
-
-
- com.sun.winsw
- winsw
- bin
- exe
- service.exe
-
-
- ${pkg.win.dist}
-
-
-
org.apache.maven.plugins
maven-jar-plugin
-
-
- **/logback.xml
-
-
-
- ThingsBoard
- ${project.version}
-
-
-
org.springframework.boot
spring-boot-maven-plugin
-
- org.thingsboard.server.ThingsboardServerApplication
- boot
- ZIP
- true
- true
-
- ${pkg.installFolder}/conf
- ${pkg.unixLogFolder}
- ${pkg.name}.out
- ${pkg.name}
-
-
-
-
-
- repackage
-
-
-
org.thingsboard
gradle-maven-plugin
-
-
- build
- buildDeb
- buildRpm
-
-
- -PprojectBuildDir=${project.build.directory}
- -PprojectVersion=${project.version}
- -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
-
- -PpkgName=${pkg.name}
- -PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.unixLogFolder}
-
-
-
-
- package
-
- invoke
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
-
- ${pkg.name}
-
- src/main/assembly/windows.xml
-
-
-
-
- assembly
- package
-
- single
-
-
-
org.apache.maven.plugins
maven-install-plugin
-
- ${project.build.directory}/${pkg.name}.deb
- ${project.artifactId}
- ${project.groupId}
- ${project.version}
- deb
- deb
-
-
-
- install-deb
- package
-
- install-file
-
-
-
org.xolstice.maven.plugins
diff --git a/application/src/main/java/org/thingsboard/server/controller/RpcController.java b/application/src/main/java/org/thingsboard/server/controller/RpcController.java
index b88c3f3695..7cba22b836 100644
--- a/application/src/main/java/org/thingsboard/server/controller/RpcController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/RpcController.java
@@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.util.concurrent.FutureCallback;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -65,7 +66,6 @@ import java.util.UUID;
@Slf4j
public class RpcController extends BaseController {
- public static final int DEFAULT_TIMEOUT = 10000;
protected final ObjectMapper jsonMapper = new ObjectMapper();
@Autowired
@@ -74,6 +74,12 @@ public class RpcController extends BaseController {
@Autowired
private AccessValidator accessValidator;
+ @Value("${server.rest.server_side_rpc.min_timeout:5000}")
+ private long minTimeout;
+
+ @Value("${server.rest.server_side_rpc.default_timeout:10000}")
+ private long defaultTimeout;
+
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
@RequestMapping(value = "/oneway/{deviceId}", method = RequestMethod.POST)
@ResponseBody
@@ -100,7 +106,8 @@ public class RpcController extends BaseController {
SecurityUser currentUser = getCurrentUser();
TenantId tenantId = currentUser.getTenantId();
final DeferredResult response = new DeferredResult<>();
- long timeout = System.currentTimeMillis() + (cmd.getTimeout() != null ? cmd.getTimeout() : DEFAULT_TIMEOUT);
+ long timeout = cmd.getTimeout() != null ? cmd.getTimeout() : defaultTimeout;
+ long expTime = System.currentTimeMillis() + Math.max(minTimeout, timeout);
ToDeviceRpcRequestBody body = new ToDeviceRpcRequestBody(cmd.getMethodName(), cmd.getRequestData());
accessValidator.validate(currentUser, Operation.RPC_CALL, deviceId, new HttpValidationCallback(response, new FutureCallback>() {
@Override
@@ -109,7 +116,7 @@ public class RpcController extends BaseController {
tenantId,
deviceId,
oneWay,
- timeout,
+ expTime,
body
);
deviceRpcService.processRestApiRpcRequest(rpcRequest, fromDeviceRpcResponse -> reply(new LocalRequestMetaData(rpcRequest, currentUser, result), fromDeviceRpcResponse));
diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/Oauth2AuthenticationSuccessHandler.java b/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/Oauth2AuthenticationSuccessHandler.java
index 8702661196..3375d046e2 100644
--- a/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/Oauth2AuthenticationSuccessHandler.java
+++ b/application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/Oauth2AuthenticationSuccessHandler.java
@@ -32,6 +32,8 @@ import org.thingsboard.server.utils.MiscUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
@Component(value = "oauth2AuthenticationSuccessHandler")
@ConditionalOnProperty(prefix = "security.oauth2", value = "enabled", havingValue = "true")
@@ -57,16 +59,22 @@ public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationS
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response,
Authentication authentication) throws IOException {
- OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication;
- OAuth2Client oauth2Client = oauth2Configuration.getClientByRegistrationId(token.getAuthorizedClientRegistrationId());
- OAuth2ClientMapper mapper = oauth2ClientMapperProvider.getOAuth2ClientMapperByType(oauth2Client.getMapperConfig().getType());
- SecurityUser securityUser = mapper.getOrCreateUserByClientPrincipal(token, oauth2Client.getMapperConfig());
+ String baseUrl = MiscUtils.constructBaseUrl(request);
+ try {
+ OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication;
- JwtToken accessToken = tokenFactory.createAccessJwtToken(securityUser);
- JwtToken refreshToken = refreshTokenRepository.requestRefreshToken(securityUser);
+ OAuth2Client oauth2Client = oauth2Configuration.getClientByRegistrationId(token.getAuthorizedClientRegistrationId());
+ OAuth2ClientMapper mapper = oauth2ClientMapperProvider.getOAuth2ClientMapperByType(oauth2Client.getMapperConfig().getType());
+ SecurityUser securityUser = mapper.getOrCreateUserByClientPrincipal(token, oauth2Client.getMapperConfig());
- String baseUrl = MiscUtils.constructBaseUrl(request);
- getRedirectStrategy().sendRedirect(request, response, baseUrl + "/?accessToken=" + accessToken.getToken() + "&refreshToken=" + refreshToken.getToken());
+ JwtToken accessToken = tokenFactory.createAccessJwtToken(securityUser);
+ JwtToken refreshToken = refreshTokenRepository.requestRefreshToken(securityUser);
+
+ getRedirectStrategy().sendRedirect(request, response, baseUrl + "/?accessToken=" + accessToken.getToken() + "&refreshToken=" + refreshToken.getToken());
+ } catch (Exception e) {
+ getRedirectStrategy().sendRedirect(request, response, baseUrl + "/login?loginError=" +
+ URLEncoder.encode(e.getMessage(), StandardCharsets.UTF_8.toString()));
+ }
}
}
\ No newline at end of file
diff --git a/application/src/main/java/org/thingsboard/server/service/transport/DefaultTransportApiService.java b/application/src/main/java/org/thingsboard/server/service/transport/DefaultTransportApiService.java
index 7456ca7662..b08ff7c20f 100644
--- a/application/src/main/java/org/thingsboard/server/service/transport/DefaultTransportApiService.java
+++ b/application/src/main/java/org/thingsboard/server/service/transport/DefaultTransportApiService.java
@@ -17,6 +17,7 @@ package org.thingsboard.server.service.transport;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
@@ -24,13 +25,18 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.Tenant;
+import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
+import org.thingsboard.server.common.msg.TbMsg;
+import org.thingsboard.server.common.msg.TbMsgDataType;
+import org.thingsboard.server.common.msg.TbMsgMetaData;
import org.thingsboard.server.dao.device.DeviceCredentialsService;
import org.thingsboard.server.dao.device.DeviceService;
import org.thingsboard.server.dao.relation.RelationService;
@@ -48,6 +54,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceX509Ce
import org.thingsboard.server.queue.common.TbProtoQueueMsg;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
+import org.thingsboard.server.service.queue.TbClusterService;
import org.thingsboard.server.service.state.DeviceStateService;
import java.util.UUID;
@@ -82,6 +89,9 @@ public class DefaultTransportApiService implements TransportApiService {
@Autowired
private DbCallbackExecutorService dbCallbackExecutorService;
+ @Autowired
+ protected TbClusterService tbClusterService;
+
private ReentrantLock deviceCreationLock = new ReentrantLock();
@Override
@@ -119,14 +129,27 @@ public class DefaultTransportApiService implements TransportApiService {
try {
Device device = deviceService.findDeviceByTenantIdAndName(gateway.getTenantId(), requestMsg.getDeviceName());
if (device == null) {
+ TenantId tenantId = gateway.getTenantId();
device = new Device();
- device.setTenantId(gateway.getTenantId());
+ device.setTenantId(tenantId);
device.setName(requestMsg.getDeviceName());
device.setType(requestMsg.getDeviceType());
device.setCustomerId(gateway.getCustomerId());
device = deviceService.saveDevice(device);
relationService.saveRelationAsync(TenantId.SYS_TENANT_ID, new EntityRelation(gateway.getId(), device.getId(), "Created"));
deviceStateService.onDeviceAdded(device);
+
+ TbMsgMetaData metaData = new TbMsgMetaData();
+ CustomerId customerId = gateway.getCustomerId();
+ if (customerId != null && !customerId.isNullUid()) {
+ metaData.putValue("customerId", customerId.toString());
+ }
+ metaData.putValue("gatewayId", gatewayId.toString());
+
+ DeviceId deviceId = device.getId();
+ ObjectNode entityNode = mapper.valueToTree(device);
+ TbMsg tbMsg = TbMsg.newMsg(DataConstants.ENTITY_CREATED, deviceId, metaData, TbMsgDataType.JSON, mapper.writeValueAsString(entityNode));
+ tbClusterService.pushMsgToRuleEngine(tenantId, deviceId, tbMsg, null);
}
return TransportApiResponseMsg.newBuilder()
.setGetOrCreateDeviceResponseMsg(GetOrCreateDeviceFromGatewayResponseMsg.newBuilder().setDeviceInfo(getDeviceInfoProto(device)).build()).build();
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index fa0b3e3102..608ecdefc9 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -54,6 +54,13 @@ server:
customer:
enabled: "${TB_SERVER_REST_LIMITS_CUSTOMER_ENABLED:false}"
configuration: "${TB_SERVER_REST_LIMITS_CUSTOMER_CONFIGURATION:50:1,1000:60}"
+ server_side_rpc:
+ # Minimum value of the server side RPC timeout. May override value provided in the REST API call.
+ # Since 2.5 migration to queues, the RPC delay depends on the size of the pending messages in the queue,
+ # so default UI parameter of 500ms may not be sufficient for loaded environments.
+ min_timeout: "${MIN_SERVER_SIDE_RPC_TIMEOUT:5000}"
+ # Default value of the server side RPC timeout.
+ default_timeout: "${DEFAULT_SERVER_SIDE_RPC_TIMEOUT:10000}"
# Zookeeper connection parameters. Used for service discovery.
zk:
diff --git a/application/src/main/scripts/control/rpm/postinst b/application/src/main/scripts/control/rpm/postinst
deleted file mode 100644
index d8021e2dd9..0000000000
--- a/application/src/main/scripts/control/rpm/postinst
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-
-if [ $1 -eq 1 ] ; then
- # Initial installation
- systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/application/src/test/java/org/thingsboard/server/rules/RuleEngineNoSqlTestSuite.java b/application/src/test/java/org/thingsboard/server/rules/RuleEngineNoSqlTestSuite.java
deleted file mode 100644
index fbab13147c..0000000000
--- a/application/src/test/java/org/thingsboard/server/rules/RuleEngineNoSqlTestSuite.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Copyright © 2016-2020 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.rules;
-
-import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.extensions.cpsuite.ClasspathSuite;
-import org.junit.runner.RunWith;
-import org.thingsboard.server.dao.CustomCassandraCQLUnit;
-import org.thingsboard.server.dao.CustomSqlUnit;
-import org.thingsboard.server.queue.memory.InMemoryStorage;
-
-import java.util.Arrays;
-
-@RunWith(ClasspathSuite.class)
-@ClasspathSuite.ClassnameFilters({
- "org.thingsboard.server.rules.flow.nosql.*Test",
- "org.thingsboard.server.rules.lifecycle.nosql.*Test"
-})
-public class RuleEngineNoSqlTestSuite {
-
- @ClassRule
- public static CustomCassandraCQLUnit cassandraUnit =
- new CustomCassandraCQLUnit(
- Arrays.asList(
- new ClassPathCQLDataSet("cassandra/schema-ts.cql", false, false),
- new ClassPathCQLDataSet("cassandra/schema-entities.cql", false, false),
- new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
- "cassandra-test.yaml", 30000l);
-
- @BeforeClass
- public static void cleanupInMemStorage(){
- InMemoryStorage.getInstance().cleanup();
- }
-
-}
diff --git a/common/message/src/main/java/org/thingsboard/server/common/msg/TbMsg.java b/common/message/src/main/java/org/thingsboard/server/common/msg/TbMsg.java
index 9da7407552..845138d92c 100644
--- a/common/message/src/main/java/org/thingsboard/server/common/msg/TbMsg.java
+++ b/common/message/src/main/java/org/thingsboard/server/common/msg/TbMsg.java
@@ -40,6 +40,7 @@ import java.util.UUID;
public final class TbMsg implements Serializable {
private final UUID id;
+ private final long ts;
private final String type;
private final EntityId originator;
private final TbMsgMetaData metaData;
@@ -51,38 +52,43 @@ public final class TbMsg implements Serializable {
transient private final TbMsgCallback callback;
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, String data) {
- return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, TbMsgCallback.EMPTY);
+ return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, TbMsgCallback.EMPTY);
}
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, String data, RuleChainId ruleChainId, RuleNodeId ruleNodeId) {
- return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY);
+ return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY);
}
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data) {
- return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), dataType, data, null, null, TbMsgCallback.EMPTY);
+ return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), dataType, data, null, null, TbMsgCallback.EMPTY);
}
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data, RuleChainId ruleChainId, RuleNodeId ruleNodeId) {
- return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), dataType, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY);
+ return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), dataType, data, ruleChainId, ruleNodeId, TbMsgCallback.EMPTY);
}
public static TbMsg newMsg(String type, EntityId originator, TbMsgMetaData metaData, String data, TbMsgCallback callback) {
- return new TbMsg(UUID.randomUUID(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, callback);
+ return new TbMsg(UUID.randomUUID(), System.currentTimeMillis(), type, originator, metaData.copy(), TbMsgDataType.JSON, data, null, null, callback);
}
public static TbMsg transformMsg(TbMsg origMsg, String type, EntityId originator, TbMsgMetaData metaData, String data) {
- return new TbMsg(origMsg.getId(), type, originator, metaData.copy(), origMsg.getDataType(),
+ return new TbMsg(origMsg.getId(), origMsg.getTs(), type, originator, metaData.copy(), origMsg.getDataType(),
data, origMsg.getRuleChainId(), origMsg.getRuleNodeId(), origMsg.getCallback());
}
public static TbMsg newMsg(TbMsg tbMsg, RuleChainId ruleChainId, RuleNodeId ruleNodeId) {
- return new TbMsg(UUID.randomUUID(), tbMsg.getType(), tbMsg.getOriginator(), tbMsg.getMetaData().copy(),
+ return new TbMsg(UUID.randomUUID(), tbMsg.getTs(), tbMsg.getType(), tbMsg.getOriginator(), tbMsg.getMetaData().copy(),
tbMsg.getDataType(), tbMsg.getData(), ruleChainId, ruleNodeId, TbMsgCallback.EMPTY);
}
- private TbMsg(UUID id, String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data,
+ private TbMsg(UUID id, long ts, String type, EntityId originator, TbMsgMetaData metaData, TbMsgDataType dataType, String data,
RuleChainId ruleChainId, RuleNodeId ruleNodeId, TbMsgCallback callback) {
this.id = id;
+ if (ts > 0) {
+ this.ts = ts;
+ } else {
+ this.ts = System.currentTimeMillis();
+ }
this.type = type;
this.originator = originator;
this.metaData = metaData;
@@ -105,6 +111,7 @@ public final class TbMsg implements Serializable {
public static byte[] toByteArray(TbMsg msg) {
MsgProtos.TbMsgProto.Builder builder = MsgProtos.TbMsgProto.newBuilder();
builder.setId(msg.getId().toString());
+ builder.setTs(msg.getTs());
builder.setType(msg.getType());
builder.setEntityType(msg.getOriginator().getEntityType().name());
builder.setEntityIdMSB(msg.getOriginator().getId().getMostSignificantBits());
@@ -124,7 +131,6 @@ public final class TbMsg implements Serializable {
builder.setMetaData(MsgProtos.TbMsgMetaDataProto.newBuilder().putAllData(msg.getMetaData().getData()).build());
}
-
builder.setDataType(msg.getDataType().ordinal());
builder.setData(msg.getData());
return builder.build().toByteArray();
@@ -144,18 +150,18 @@ public final class TbMsg implements Serializable {
ruleNodeId = new RuleNodeId(new UUID(proto.getRuleNodeIdMSB(), proto.getRuleNodeIdLSB()));
}
TbMsgDataType dataType = TbMsgDataType.values()[proto.getDataType()];
- return new TbMsg(UUID.fromString(proto.getId()), proto.getType(), entityId, metaData, dataType, proto.getData(), ruleChainId, ruleNodeId, callback);
+ return new TbMsg(UUID.fromString(proto.getId()), proto.getTs(), proto.getType(), entityId, metaData, dataType, proto.getData(), ruleChainId, ruleNodeId, callback);
} catch (InvalidProtocolBufferException e) {
throw new IllegalStateException("Could not parse protobuf for TbMsg", e);
}
}
public TbMsg copyWithRuleChainId(RuleChainId ruleChainId) {
- return new TbMsg(this.id, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, null, callback);
+ return new TbMsg(this.id, this.ts, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, null, callback);
}
public TbMsg copyWithRuleNodeId(RuleChainId ruleChainId, RuleNodeId ruleNodeId) {
- return new TbMsg(this.id, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, ruleNodeId, callback);
+ return new TbMsg(this.id, this.ts, this.type, this.originator, this.metaData, this.dataType, this.data, ruleChainId, ruleNodeId, callback);
}
public TbMsgCallback getCallback() {
diff --git a/common/message/src/main/proto/tbmsg.proto b/common/message/src/main/proto/tbmsg.proto
index 737d5f6f57..25e006121f 100644
--- a/common/message/src/main/proto/tbmsg.proto
+++ b/common/message/src/main/proto/tbmsg.proto
@@ -44,4 +44,5 @@ message TbMsgProto {
int32 dataType = 13;
string data = 14;
+ int64 ts = 15;
}
\ No newline at end of file
diff --git a/common/transport/transport-api/pom.xml b/common/transport/transport-api/pom.xml
index bc3dd22f8b..a0b73855d3 100644
--- a/common/transport/transport-api/pom.xml
+++ b/common/transport/transport-api/pom.xml
@@ -52,10 +52,6 @@
org.thingsboard.common
util
-
- org.thingsboard.common
- queue
-
com.google.code.gson
gson
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java
index 3790577144..d25d37c175 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java
@@ -112,7 +112,7 @@ public class EventEntity extends BaseSqlEntity implements BaseEntity /dev/null 2>&1 || :
RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}
diff --git a/msa/js-executor/package-lock.json b/msa/js-executor/package-lock.json
index 324b75a2f7..f2afdf1688 100644
--- a/msa/js-executor/package-lock.json
+++ b/msa/js-executor/package-lock.json
@@ -1461,7 +1461,7 @@
},
"enabled": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
+ "resolved": "http://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
"integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
"requires": {
"env-variable": "0.0.x"
@@ -1740,7 +1740,7 @@
},
"fecha": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+ "resolved": "http://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
"integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
},
"file-stream-rotator": {
@@ -1872,14 +1872,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -1894,20 +1892,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -2024,8 +2019,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"ini": {
"version": "1.3.5",
@@ -2037,7 +2031,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -2052,7 +2045,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -2164,8 +2156,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -2298,7 +2289,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -2400,7 +2390,7 @@
},
"get-stream": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
@@ -2557,7 +2547,7 @@
},
"got": {
"version": "6.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz",
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
@@ -2889,7 +2879,7 @@
},
"is-obj": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
@@ -3251,7 +3241,7 @@
},
"minimist": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"mixin-deep": {
@@ -3277,7 +3267,7 @@
},
"mkdirp": {
"version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
@@ -3286,7 +3276,7 @@
"dependencies": {
"minimist": {
"version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
@@ -3550,7 +3540,7 @@
},
"path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
@@ -3989,7 +3979,7 @@
},
"safe-regex": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
@@ -4299,7 +4289,7 @@
},
"strip-eof": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
diff --git a/msa/js-executor/pom.xml b/msa/js-executor/pom.xml
index 1797dd3200..3aedead07e 100644
--- a/msa/js-executor/pom.xml
+++ b/msa/js-executor/pom.xml
@@ -34,10 +34,12 @@
UTF-8
${basedir}/../..
- tb-js-executor
tb-js-executor
- /var/log/${pkg.name}
- /usr/share/${pkg.name}
+ tb-js-executor
+ js
+ false
+ process-resources
+ package
${project.build.directory}/package/linux
${project.build.directory}/package/windows
@@ -87,194 +89,18 @@
org.apache.maven.plugins
maven-dependency-plugin
-
-
- copy-winsw-service
- package
-
- copy
-
-
-
-
- com.sun.winsw
- winsw
- bin
- exe
- service.exe
-
-
- ${pkg.win.dist}
-
-
-
org.apache.maven.plugins
maven-resources-plugin
-
-
- copy-linux-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.linux.dist}/conf
-
-
- config
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-linux-init
- process-resources
-
- copy-resources
-
-
- ${pkg.linux.dist}/init
-
-
- src/main/scripts/init
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-win-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/conf
-
-
- config
-
- tb-js-executor.conf
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-control
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/control
-
-
- src/main/scripts/control
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-windows-control
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}
-
-
- src/main/scripts/windows
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-docker-config
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}
-
-
- docker
- true
-
-
-
-
-
org.thingsboard
gradle-maven-plugin
-
-
- build
- buildDeb
- buildRpm
-
-
- -PprojectBuildDir=${project.build.directory}
- -PprojectVersion=${project.version}
- -PpkgName=${pkg.name}
- -PpkgUser=${pkg.user}
- -PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.unixLogFolder}
-
-
-
-
- package
-
- invoke
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
- 3.0.0
-
- ${pkg.name}
-
- src/main/assembly/windows.xml
-
-
-
-
- assembly
- package
-
- single
-
-
-
com.spotify
diff --git a/msa/js-executor/src/main/assembly/windows.xml b/msa/js-executor/src/main/assembly/windows.xml
deleted file mode 100644
index 2cf7265fa4..0000000000
--- a/msa/js-executor/src/main/assembly/windows.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- windows
-
-
- zip
-
-
-
-
-
- ${pkg.win.dist}
- logs
-
- */**
-
-
-
- ${pkg.win.dist}/conf
- conf
- windows
-
-
-
-
-
- ${pkg.win.dist}/bin/${pkg.name}.exe
- bin
- ${pkg.name}.exe
-
-
- ${pkg.win.dist}/service.exe
-
- ${pkg.name}.exe
-
-
- ${pkg.win.dist}/service.xml
-
- ${pkg.name}.xml
- windows
-
-
- ${pkg.win.dist}/install.bat
-
- windows
-
-
- ${pkg.win.dist}/uninstall.bat
-
- windows
-
-
-
diff --git a/msa/js-executor/src/main/scripts/control/deb/postinst b/msa/js-executor/src/main/scripts/control/deb/postinst
deleted file mode 100644
index 0767d3f2c7..0000000000
--- a/msa/js-executor/src/main/scripts/control/deb/postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-update-rc.d ${pkg.name} defaults
-
diff --git a/msa/js-executor/src/main/scripts/control/deb/postrm b/msa/js-executor/src/main/scripts/control/deb/postrm
deleted file mode 100644
index 61865803c3..0000000000
--- a/msa/js-executor/src/main/scripts/control/deb/postrm
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-update-rc.d -f ${pkg.name} remove
diff --git a/msa/js-executor/src/main/scripts/init/tb-js-executor b/msa/js-executor/src/main/scripts/init/tb-js-executor
deleted file mode 100644
index 6e8fa52cd3..0000000000
--- a/msa/js-executor/src/main/scripts/init/tb-js-executor
+++ /dev/null
@@ -1,233 +0,0 @@
-#!/bin/bash
-#
-
-
-### BEGIN INIT INFO
-# Provides: tb-js-executor
-# Required-Start: $remote_fs $syslog $network
-# Required-Stop: $remote_fs $syslog $network
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: ${project.name}
-# Description: ${project.description}
-# chkconfig: 2345 99 01
-### END INIT INFO
-
-[[ -n "$DEBUG" ]] && set -x
-
-# Initialize variables that cannot be provided by a .conf file
-WORKING_DIR="$(pwd)"
-# shellcheck disable=SC2153
-
-mainfile=${pkg.installFolder}/bin/${pkg.name}
-configfile=${pkg.name}.conf
-
-# Follow symlinks to find the real script and detect init.d script
-cd "$(dirname "$0")" || exit 1
-[[ -z "$initfile" ]] && initfile=$(pwd)/$(basename "$0")
-while [[ -L "$initfile" ]]; do
- [[ "$initfile" =~ init\.d ]] && init_script=$(basename "$initfile")
- initfile=$(readlink "$initfile")
- cd "$(dirname "$initfile")" || exit 1
- initfile=$(pwd)/$(basename "$initfile")
-done
-initfolder="$( (cd "$(dirname "initfile")" && pwd -P) )"
-cd "$WORKING_DIR" || exit 1
-
-# Initialize CONF_FOLDER location
-[[ -z "$CONF_FOLDER" ]] && CONF_FOLDER="${pkg.installFolder}/conf"
-
-# shellcheck source=/dev/null
-[[ -r "${CONF_FOLDER}/${configfile}" ]] && source "${CONF_FOLDER}/${configfile}"
-
-# Initialize PID/LOG locations if they weren't provided by the config file
-[[ -z "$PID_FOLDER" ]] && PID_FOLDER="/var/run"
-[[ -z "$LOG_FOLDER" ]] && LOG_FOLDER="${pkg.unixLogFolder}"
-! [[ "$PID_FOLDER" == /* ]] && PID_FOLDER="$(dirname "$mainfile")"/"$PID_FOLDER"
-! [[ "$LOG_FOLDER" == /* ]] && LOG_FOLDER="$(dirname "$mainfile")"/"$LOG_FOLDER"
-! [[ -x "$PID_FOLDER" ]] && PID_FOLDER="/tmp"
-! [[ -x "$LOG_FOLDER" ]] && LOG_FOLDER="/tmp"
-
-# Set up defaults
-[[ -z "$MODE" ]] && MODE="auto" # modes are "auto", "service" or "run"
-[[ -z "$USE_START_STOP_DAEMON" ]] && USE_START_STOP_DAEMON="true"
-
-# Create an identity for log/pid files
-if [[ -z "$identity" ]]; then
- if [[ -n "$init_script" ]]; then
- identity="${init_script}"
- else
- identity=$(basename "${initfile%.*}")_${initfolder//\//}
- fi
-fi
-
-# Initialize log file name if not provided by the config file
-[[ -z "$LOG_FILENAME" ]] && LOG_FILENAME="${identity}.log"
-
-# ANSI Colors
-echoRed() { echo $'\e[0;31m'"$1"$'\e[0m'; }
-echoGreen() { echo $'\e[0;32m'"$1"$'\e[0m'; }
-echoYellow() { echo $'\e[0;33m'"$1"$'\e[0m'; }
-
-# Utility functions
-checkPermissions() {
- touch "$pid_file" &> /dev/null || { echoRed "Operation not permitted (cannot access pid file)"; return 4; }
- touch "$log_file" &> /dev/null || { echoRed "Operation not permitted (cannot access log file)"; return 4; }
-}
-
-isRunning() {
- ps -p "$1" &> /dev/null
-}
-
-await_file() {
- end=$(date +%s)
- let "end+=10"
- while [[ ! -s "$1" ]]
- do
- now=$(date +%s)
- if [[ $now -ge $end ]]; then
- break
- fi
- sleep 1
- done
-}
-
-# Determine the script mode
-action="run"
-if [[ "$MODE" == "auto" && -n "$init_script" ]] || [[ "$MODE" == "service" ]]; then
- action="$1"
- shift
-fi
-
-# Build the pid and log filenames
-if [[ "$identity" == "$init_script" ]] || [[ "$identity" == "$APP_NAME" ]]; then
- PID_FOLDER="$PID_FOLDER/${identity}"
- pid_subfolder=$PID_FOLDER
-fi
-pid_file="$PID_FOLDER/${identity}.pid"
-log_file="$LOG_FOLDER/$LOG_FILENAME"
-
-# Determine the user to run as if we are root
-# shellcheck disable=SC2012
-[[ $(id -u) == "0" ]] && run_user=$(ls -ld "$mainfile" | awk '{print $3}')
-
-arguments=($RUN_ARGS "$@")
-
-# Action functions
-start() {
- if [[ -f "$pid_file" ]]; then
- pid=$(cat "$pid_file")
- isRunning "$pid" && { echoYellow "Already running [$pid]"; return 0; }
- fi
- do_start "$@"
-}
-
-do_start() {
- working_dir=$(dirname "$mainfile")
- pushd "$working_dir" > /dev/null
- mkdir -p "$PID_FOLDER" &> /dev/null
- if [[ -n "$run_user" ]]; then
- checkPermissions || return $?
- if [[ -z "$pid_subfolder" ]]; then
- chown "$run_user" "$pid_subfolder"
- fi
- chown "$run_user" "$pid_file"
- chown "$run_user" "$log_file"
- if [ $USE_START_STOP_DAEMON = true ] && type start-stop-daemon > /dev/null 2>&1; then
- start-stop-daemon --start --quiet \
- --chuid "$run_user" \
- --name "$identity" \
- --make-pidfile --pidfile "$pid_file" \
- --background --no-close \
- --startas "$mainfile" \
- --chdir "$working_dir" \
- -- "${arguments[@]}" \
- >> "$log_file" 2>&1
- await_file "$pid_file"
- else
- su -s /bin/sh -c "$mainfile $(printf "\"%s\" " "${arguments[@]}") >> \"$log_file\" 2>&1 & echo \$!" "$run_user" > "$pid_file"
- fi
- pid=$(cat "$pid_file")
- else
- checkPermissions || return $?
- "$mainfile" "${arguments[@]}" >> "$log_file" 2>&1 &
- pid=$!
- disown $pid
- echo "$pid" > "$pid_file"
- fi
- [[ -z $pid ]] && { echoRed "Failed to start"; return 1; }
- echoGreen "Started [$pid]"
-}
-
-stop() {
- working_dir=$(dirname "$mainfile")
- pushd "$working_dir" > /dev/null
- [[ -f $pid_file ]] || { echoYellow "Not running (pidfile not found)"; return 0; }
- pid=$(cat "$pid_file")
- isRunning "$pid" || { echoYellow "Not running (process ${pid}). Removing stale pid file."; rm -f "$pid_file"; return 0; }
- do_stop "$pid" "$pid_file"
-}
-
-do_stop() {
- kill -2 "$1" &> /dev/null || { echoRed "Unable to kill process $1"; return 1; }
- for i in $(seq 1 60); do
- isRunning "$1" || { echoGreen "Stopped [$1]"; rm -f "$2"; return 0; }
- [[ $i -eq 30 ]] && kill -9 "$1" &> /dev/null
- sleep 1
- done
- echoRed "Unable to kill process $1";
- return 1;
-}
-
-restart() {
- stop && start
-}
-
-orce_reload() {
- working_dir=$(dirname "$mainfile")
- pushd "$working_dir" > /dev/null
- [[ -f $pid_file ]] || { echoRed "Not running (pidfile not found)"; return 7; }
- pid=$(cat "$pid_file")
- rm -f "$pid_file"
- isRunning "$pid" || { echoRed "Not running (process ${pid} not found)"; return 7; }
- do_stop "$pid" "$pid_file"
- do_start
-}
-
-status() {
- working_dir=$(dirname "$mainfile")
- pushd "$working_dir" > /dev/null
- [[ -f "$pid_file" ]] || { echoRed "Not running"; return 3; }
- pid=$(cat "$pid_file")
- isRunning "$pid" || { echoRed "Not running (process ${pid} not found)"; return 1; }
- echoGreen "Running [$pid]"
- return 0
-}
-
-run() {
- pushd "$(dirname "$mainfile")" > /dev/null
- "$mainfile" "${arguments[@]}"
- result=$?
- popd > /dev/null
- return "$result"
-}
-
-# Call the appropriate action function
-case "$action" in
-start)
- start "$@"; exit $?;;
-stop)
- stop "$@"; exit $?;;
-restart)
- restart "$@"; exit $?;;
-force-reload)
- force_reload "$@"; exit $?;;
-status)
- status "$@"; exit $?;;
-run)
- run "$@"; exit $?;;
-*)
- echo "Usage: $0 {start|stop|restart|force-reload|status|run}"; exit 1;
-esac
-
-exit 0
diff --git a/msa/js-executor/src/main/scripts/windows/service.xml b/msa/js-executor/src/main/scripts/windows/service.xml
deleted file mode 100644
index bb91111586..0000000000
--- a/msa/js-executor/src/main/scripts/windows/service.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- ${pkg.name}
- ${project.name}
- ${project.description}
- %BASE%\bin
- ${pkg.winWrapperLogFolder}
- rotate
-
-
-
- %BASE%\bin\${pkg.name}.exe
-
diff --git a/msa/transport/coap/docker/Dockerfile b/msa/transport/coap/docker/Dockerfile
index 5f297cdc4d..ad92c10d42 100644
--- a/msa/transport/coap/docker/Dockerfile
+++ b/msa/transport/coap/docker/Dockerfile
@@ -23,7 +23,7 @@ RUN chmod a+x /tmp/*.sh \
RUN yes | dpkg -i /tmp/${pkg.name}.deb
-RUN update-rc.d ${pkg.name} disable
+RUN systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
diff --git a/msa/transport/http/docker/Dockerfile b/msa/transport/http/docker/Dockerfile
index 32d3bdaf98..a8257e49a7 100644
--- a/msa/transport/http/docker/Dockerfile
+++ b/msa/transport/http/docker/Dockerfile
@@ -23,7 +23,7 @@ RUN chmod a+x /tmp/*.sh \
RUN yes | dpkg -i /tmp/${pkg.name}.deb
-RUN update-rc.d ${pkg.name} disable
+RUN systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
diff --git a/msa/transport/mqtt/docker/Dockerfile b/msa/transport/mqtt/docker/Dockerfile
index cc3b90e570..c2ce4f5629 100644
--- a/msa/transport/mqtt/docker/Dockerfile
+++ b/msa/transport/mqtt/docker/Dockerfile
@@ -23,7 +23,7 @@ RUN chmod a+x /tmp/*.sh \
RUN yes | dpkg -i /tmp/${pkg.name}.deb
-RUN update-rc.d ${pkg.name} disable
+RUN systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
diff --git a/msa/web-ui/docker/Dockerfile b/msa/web-ui/docker/Dockerfile
index 7f6178111b..f31504d3dc 100644
--- a/msa/web-ui/docker/Dockerfile
+++ b/msa/web-ui/docker/Dockerfile
@@ -23,7 +23,7 @@ RUN chmod a+x /tmp/*.sh \
RUN yes | dpkg -i /tmp/${pkg.name}.deb
-RUN update-rc.d ${pkg.name} disable
+RUN systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
RUN chmod 555 ${pkg.installFolder}/bin/${pkg.name}
diff --git a/msa/web-ui/pom.xml b/msa/web-ui/pom.xml
index 47d1f5914e..2b38860500 100644
--- a/msa/web-ui/pom.xml
+++ b/msa/web-ui/pom.xml
@@ -35,9 +35,13 @@
UTF-8
${basedir}/../..
tb-web-ui
+ js
tb-web-ui
- /var/log/${pkg.name}
- /usr/share/${pkg.name}
+ tb-web-ui
+ js
+ false
+ process-resources
+ package
${project.build.directory}/package/linux
${project.build.directory}/package/windows
@@ -136,170 +140,185 @@
org.apache.maven.plugins
maven-resources-plugin
-
-
- copy-linux-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.linux.dist}/conf
-
-
- config
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-linux-init
- process-resources
-
- copy-resources
-
-
- ${pkg.linux.dist}/init
-
-
- src/main/scripts/init
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-win-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/conf
-
-
- config
-
- tb-web-ui.conf
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-control
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/control
-
-
- src/main/scripts/control
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-windows-control
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}
-
-
- src/main/scripts/windows
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-docker-config
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}
-
-
- docker
- true
-
-
-
-
-
org.thingsboard
gradle-maven-plugin
-
-
- build
- buildDeb
- buildRpm
-
-
- -PprojectBuildDir=${project.build.directory}
- -PprojectVersion=${project.version}
- -PpkgName=${pkg.name}
- -PpkgUser=${pkg.user}
- -PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.unixLogFolder}
-
-
-
-
- package
-
- invoke
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
- 3.0.0
-
- ${pkg.name}
-
- src/main/assembly/windows.xml
-
-
-
-
- assembly
- package
-
- single
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
com.spotify
dockerfile-maven-plugin
diff --git a/msa/web-ui/src/main/filters/unix.properties b/msa/web-ui/src/main/filters/unix.properties
deleted file mode 100644
index 8967278673..0000000000
--- a/msa/web-ui/src/main/filters/unix.properties
+++ /dev/null
@@ -1 +0,0 @@
-pkg.logFolder=${pkg.unixLogFolder}
\ No newline at end of file
diff --git a/msa/web-ui/src/main/filters/windows.properties b/msa/web-ui/src/main/filters/windows.properties
deleted file mode 100644
index a6e48d91ba..0000000000
--- a/msa/web-ui/src/main/filters/windows.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-pkg.logFolder=${BASE}\\logs
-pkg.winWrapperLogFolder=%BASE%\\logs
diff --git a/msa/web-ui/src/main/scripts/control/deb/postinst b/msa/web-ui/src/main/scripts/control/deb/postinst
deleted file mode 100644
index 0767d3f2c7..0000000000
--- a/msa/web-ui/src/main/scripts/control/deb/postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-update-rc.d ${pkg.name} defaults
-
diff --git a/msa/web-ui/src/main/scripts/control/deb/postrm b/msa/web-ui/src/main/scripts/control/deb/postrm
deleted file mode 100644
index 61865803c3..0000000000
--- a/msa/web-ui/src/main/scripts/control/deb/postrm
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-update-rc.d -f ${pkg.name} remove
diff --git a/msa/web-ui/src/main/scripts/control/deb/preinst b/msa/web-ui/src/main/scripts/control/deb/preinst
deleted file mode 100644
index d2ebea46d7..0000000000
--- a/msa/web-ui/src/main/scripts/control/deb/preinst
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-if ! getent group ${pkg.user} >/dev/null; then
- addgroup --system ${pkg.user}
-fi
-
-if ! getent passwd ${pkg.user} >/dev/null; then
- adduser --quiet \
- --system \
- --ingroup ${pkg.user} \
- --quiet \
- --disabled-login \
- --disabled-password \
- --home ${pkg.installFolder} \
- --no-create-home \
- -gecos "Thingsboard application" \
- ${pkg.user}
-fi
diff --git a/msa/web-ui/src/main/scripts/control/deb/prerm b/msa/web-ui/src/main/scripts/control/deb/prerm
deleted file mode 100644
index 898d3efd5c..0000000000
--- a/msa/web-ui/src/main/scripts/control/deb/prerm
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then
- service ${pkg.name} stop
-fi
diff --git a/msa/web-ui/src/main/scripts/control/rpm/postinst b/msa/web-ui/src/main/scripts/control/rpm/postinst
deleted file mode 100644
index d8021e2dd9..0000000000
--- a/msa/web-ui/src/main/scripts/control/rpm/postinst
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-
-if [ $1 -eq 1 ] ; then
- # Initial installation
- systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/msa/web-ui/src/main/scripts/control/rpm/postrm b/msa/web-ui/src/main/scripts/control/rpm/postrm
deleted file mode 100644
index 8e1f8a2048..0000000000
--- a/msa/web-ui/src/main/scripts/control/rpm/postrm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -ge 1 ] ; then
- # Package upgrade, not uninstall
- systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/msa/web-ui/src/main/scripts/control/rpm/preinst b/msa/web-ui/src/main/scripts/control/rpm/preinst
deleted file mode 100644
index db6306e4ac..0000000000
--- a/msa/web-ui/src/main/scripts/control/rpm/preinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-getent group ${pkg.user} >/dev/null || groupadd -r ${pkg.user}
-getent passwd ${pkg.user} >/dev/null || \
-useradd -d ${pkg.installFolder} -g ${pkg.user} -M -r ${pkg.user} -s /sbin/nologin \
--c "Thingsboard application"
diff --git a/msa/web-ui/src/main/scripts/control/rpm/prerm b/msa/web-ui/src/main/scripts/control/rpm/prerm
deleted file mode 100644
index accb487b8e..0000000000
--- a/msa/web-ui/src/main/scripts/control/rpm/prerm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -eq 0 ] ; then
- # Package removal, not upgrade
- systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
-fi
diff --git a/msa/web-ui/src/main/scripts/control/tb-web-ui.service b/msa/web-ui/src/main/scripts/control/tb-web-ui.service
deleted file mode 100644
index f542dd0f92..0000000000
--- a/msa/web-ui/src/main/scripts/control/tb-web-ui.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=${pkg.name}
-After=syslog.target
-
-[Service]
-User=${pkg.user}
-ExecStart=${pkg.installFolder}/init/${pkg.name}
-SuccessExitStatus=143
-
-[Install]
-WantedBy=multi-user.target
diff --git a/msa/web-ui/src/main/scripts/windows/install.bat b/msa/web-ui/src/main/scripts/windows/install.bat
deleted file mode 100644
index 9f257eba79..0000000000
--- a/msa/web-ui/src/main/scripts/windows/install.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@REM
-@REM Copyright © 2016-2018 The Thingsboard Authors
-@REM
-@REM Licensed under the Apache License, Version 2.0 (the "License");
-@REM you may not use this file except in compliance with the License.
-@REM You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-@REM
-
-@ECHO OFF
-
-setlocal ENABLEEXTENSIONS
-
-@ECHO Installing ${pkg.name} ...
-
-SET BASE=%~dp0
-
-"%BASE%"${pkg.name}.exe install
-
-@ECHO ${pkg.name} installed successfully!
-
-GOTO END
-
-:END
diff --git a/msa/web-ui/src/main/scripts/windows/uninstall.bat b/msa/web-ui/src/main/scripts/windows/uninstall.bat
deleted file mode 100644
index 6d6f5be1b4..0000000000
--- a/msa/web-ui/src/main/scripts/windows/uninstall.bat
+++ /dev/null
@@ -1,25 +0,0 @@
-@REM
-@REM Copyright © 2016-2018 The Thingsboard Authors
-@REM
-@REM Licensed under the Apache License, Version 2.0 (the "License");
-@REM you may not use this file except in compliance with the License.
-@REM You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-@REM
-
-@ECHO OFF
-
-@ECHO Stopping ${pkg.name} ...
-net stop ${pkg.name}
-
-@ECHO Uninstalling ${pkg.name} ...
-"%~dp0"${pkg.name}.exe uninstall
-
-@ECHO DONE.
\ No newline at end of file
diff --git a/netty-mqtt/pom.xml b/netty-mqtt/pom.xml
index f36e8648c8..5b77fce18e 100644
--- a/netty-mqtt/pom.xml
+++ b/netty-mqtt/pom.xml
@@ -22,7 +22,6 @@
2.5.1-SNAPSHOT
thingsboard
- org.thingsboard
netty-mqtt
2.5.1-SNAPSHOT
jar
diff --git a/application/src/main/assembly/windows.xml b/packaging/java/assembly/windows.xml
similarity index 100%
rename from application/src/main/assembly/windows.xml
rename to packaging/java/assembly/windows.xml
diff --git a/application/build.gradle b/packaging/java/build.gradle
similarity index 70%
rename from application/build.gradle
rename to packaging/java/build.gradle
index 1ea603039a..3f436a7410 100644
--- a/application/build.gradle
+++ b/packaging/java/build.gradle
@@ -17,7 +17,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
buildscript {
ext {
- osPackageVersion = "3.8.0"
+ osPackageVersion = "8.3.0"
}
repositories {
jcenter()
@@ -43,8 +43,8 @@ ospackage {
into pkgInstallFolder
- user pkgName
- permissionGroup pkgName
+ user pkgUser
+ permissionGroup pkgUser
// Copy the actual .jar file
from(mainJar) {
@@ -56,23 +56,25 @@ ospackage {
into "bin"
}
- // Copy the install files
- from("target/bin/install/install.sh") {
- fileMode 0775
- into "bin/install"
- }
+ if("${pkgCopyInstallScripts}".equalsIgnoreCase("true")) {
+ // Copy the install files
+ from("${buildDir}/bin/install/install.sh") {
+ fileMode 0775
+ into "bin/install"
+ }
- from("target/bin/install/upgrade.sh") {
- fileMode 0775
- into "bin/install"
- }
+ from("${buildDir}/bin/install/upgrade.sh") {
+ fileMode 0775
+ into "bin/install"
+ }
- from("target/bin/install/logback.xml") {
- into "bin/install"
+ from("${buildDir}/bin/install/logback.xml") {
+ into "bin/install"
+ }
}
// Copy the config files
- from("target/conf") {
+ from("${buildDir}/conf") {
exclude "${pkgName}.conf"
fileType CONFIG | NOREPLACE
fileMode 0754
@@ -80,14 +82,14 @@ ospackage {
}
// Copy the data files
- from("target/data") {
+ from("${buildDir}/data") {
fileType CONFIG | NOREPLACE
fileMode 0754
into "data"
}
// Copy the extensions files
- from("target/extensions") {
+ from("${buildDir}/extensions") {
into "extensions"
}
}
@@ -97,12 +99,12 @@ buildRpm {
arch = NOARCH
- version = projectVersion.replace('-', '')
- archiveName = "${pkgName}.rpm"
+ archiveVersion = projectVersion.replace('-', '')
+ archiveFileName = "${pkgName}.rpm"
requires("java-1.8.0")
- from("target/conf") {
+ from("${buildDir}/conf") {
include "${pkgName}.conf"
filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
fileType CONFIG | NOREPLACE
@@ -115,17 +117,19 @@ buildRpm {
preUninstall file("${buildDir}/control/rpm/prerm")
postUninstall file("${buildDir}/control/rpm/postrm")
- user pkgName
- permissionGroup pkgName
+ user pkgUser
+ permissionGroup pkgUser
// Copy the system unit files
- from("${buildDir}/control/${pkgName}.service") {
+ from("${buildDir}/control/template.service") {
addParentDirs = false
fileMode 0644
into "/usr/lib/systemd/system"
+ rename { String filename ->
+ "${pkgName}.service"
+ }
}
- directory(pkgLogFolder, 0755)
link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
}
@@ -135,11 +139,11 @@ buildDeb {
arch = "all"
- archiveName = "${pkgName}.deb"
+ archiveFileName = "${pkgName}.deb"
requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
- from("target/conf") {
+ from("${buildDir}/conf") {
include "${pkgName}.conf"
filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
fileType CONFIG | NOREPLACE
@@ -157,18 +161,39 @@ buildDeb {
preUninstall file("${buildDir}/control/deb/prerm")
postUninstall file("${buildDir}/control/deb/postrm")
- user pkgName
- permissionGroup pkgName
+ user pkgUser
+ permissionGroup pkgUser
// Copy the system unit files
- from("${buildDir}/control/${pkgName}.service") {
+ from("${buildDir}/control/template.service") {
addParentDirs = false
fileMode 0644
into "/lib/systemd/system"
+ rename { String filename ->
+ "${pkgName}.service"
+ }
}
- directory(pkgLogFolder, 0755)
- link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar")
link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
}
+
+task renameDeb(type: Copy) {
+ from("${buildDir}/") {
+ include '*.deb'
+ destinationDir file("${buildDir}/")
+ rename { String filename ->
+ "${pkgName}.deb"
+ }
+ }
+}
+
+task renameRpm(type: Copy) {
+ from("${buildDir}/") {
+ include '*.rpm'
+ destinationDir file("${buildDir}/")
+ rename { String filename ->
+ "${pkgName}.rpm"
+ }
+ }
+}
diff --git a/application/src/main/filters/unix.properties b/packaging/java/filters/unix.properties
similarity index 100%
rename from application/src/main/filters/unix.properties
rename to packaging/java/filters/unix.properties
diff --git a/application/src/main/filters/windows.properties b/packaging/java/filters/windows.properties
similarity index 100%
rename from application/src/main/filters/windows.properties
rename to packaging/java/filters/windows.properties
diff --git a/application/src/main/scripts/control/deb/postinst b/packaging/java/scripts/control/deb/postinst
similarity index 84%
rename from application/src/main/scripts/control/deb/postinst
rename to packaging/java/scripts/control/deb/postinst
index b59dff9252..d69589beea 100644
--- a/application/src/main/scripts/control/deb/postinst
+++ b/packaging/java/scripts/control/deb/postinst
@@ -2,6 +2,7 @@
set -e
+mkdir -m 0755 -p ${pkg.logFolder}
chown -R ${pkg.user}: ${pkg.logFolder}
chown -R ${pkg.user}: ${pkg.installFolder}
systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
diff --git a/application/src/main/scripts/control/deb/postrm b/packaging/java/scripts/control/deb/postrm
similarity index 100%
rename from application/src/main/scripts/control/deb/postrm
rename to packaging/java/scripts/control/deb/postrm
diff --git a/application/src/main/scripts/control/deb/preinst b/packaging/java/scripts/control/deb/preinst
similarity index 100%
rename from application/src/main/scripts/control/deb/preinst
rename to packaging/java/scripts/control/deb/preinst
diff --git a/application/src/main/scripts/control/deb/prerm b/packaging/java/scripts/control/deb/prerm
similarity index 100%
rename from application/src/main/scripts/control/deb/prerm
rename to packaging/java/scripts/control/deb/prerm
diff --git a/transport/coap/src/main/scripts/control/rpm/postinst b/packaging/java/scripts/control/rpm/postinst
similarity index 87%
rename from transport/coap/src/main/scripts/control/rpm/postinst
rename to packaging/java/scripts/control/rpm/postinst
index d8021e2dd9..3608d09ef9 100644
--- a/transport/coap/src/main/scripts/control/rpm/postinst
+++ b/packaging/java/scripts/control/rpm/postinst
@@ -1,5 +1,6 @@
#!/bin/sh
+mkdir -m 0755 -p ${pkg.logFolder}
chown -R ${pkg.user}: ${pkg.logFolder}
chown -R ${pkg.user}: ${pkg.installFolder}
diff --git a/application/src/main/scripts/control/rpm/postrm b/packaging/java/scripts/control/rpm/postrm
similarity index 100%
rename from application/src/main/scripts/control/rpm/postrm
rename to packaging/java/scripts/control/rpm/postrm
diff --git a/application/src/main/scripts/control/rpm/preinst b/packaging/java/scripts/control/rpm/preinst
similarity index 100%
rename from application/src/main/scripts/control/rpm/preinst
rename to packaging/java/scripts/control/rpm/preinst
diff --git a/application/src/main/scripts/control/rpm/prerm b/packaging/java/scripts/control/rpm/prerm
similarity index 100%
rename from application/src/main/scripts/control/rpm/prerm
rename to packaging/java/scripts/control/rpm/prerm
diff --git a/application/src/main/scripts/control/thingsboard.service b/packaging/java/scripts/control/template.service
similarity index 100%
rename from application/src/main/scripts/control/thingsboard.service
rename to packaging/java/scripts/control/template.service
diff --git a/application/src/main/scripts/install/install.sh b/packaging/java/scripts/install/install.sh
similarity index 100%
rename from application/src/main/scripts/install/install.sh
rename to packaging/java/scripts/install/install.sh
diff --git a/application/src/main/scripts/install/install_dev_db.sh b/packaging/java/scripts/install/install_dev_db.sh
similarity index 100%
rename from application/src/main/scripts/install/install_dev_db.sh
rename to packaging/java/scripts/install/install_dev_db.sh
diff --git a/application/src/main/scripts/install/logback.xml b/packaging/java/scripts/install/logback.xml
similarity index 100%
rename from application/src/main/scripts/install/logback.xml
rename to packaging/java/scripts/install/logback.xml
diff --git a/application/src/main/scripts/install/upgrade.sh b/packaging/java/scripts/install/upgrade.sh
similarity index 100%
rename from application/src/main/scripts/install/upgrade.sh
rename to packaging/java/scripts/install/upgrade.sh
diff --git a/application/src/main/scripts/install/upgrade_dev_db.sh b/packaging/java/scripts/install/upgrade_dev_db.sh
similarity index 100%
rename from application/src/main/scripts/install/upgrade_dev_db.sh
rename to packaging/java/scripts/install/upgrade_dev_db.sh
diff --git a/application/src/main/scripts/windows/install.bat b/packaging/java/scripts/windows/install.bat
similarity index 100%
rename from application/src/main/scripts/windows/install.bat
rename to packaging/java/scripts/windows/install.bat
diff --git a/application/src/main/scripts/windows/install_dev_db.bat b/packaging/java/scripts/windows/install_dev_db.bat
similarity index 100%
rename from application/src/main/scripts/windows/install_dev_db.bat
rename to packaging/java/scripts/windows/install_dev_db.bat
diff --git a/application/src/main/scripts/windows/service.xml b/packaging/java/scripts/windows/service.xml
similarity index 100%
rename from application/src/main/scripts/windows/service.xml
rename to packaging/java/scripts/windows/service.xml
diff --git a/application/src/main/scripts/windows/uninstall.bat b/packaging/java/scripts/windows/uninstall.bat
similarity index 100%
rename from application/src/main/scripts/windows/uninstall.bat
rename to packaging/java/scripts/windows/uninstall.bat
diff --git a/application/src/main/scripts/windows/upgrade.bat b/packaging/java/scripts/windows/upgrade.bat
similarity index 100%
rename from application/src/main/scripts/windows/upgrade.bat
rename to packaging/java/scripts/windows/upgrade.bat
diff --git a/msa/web-ui/src/main/assembly/windows.xml b/packaging/js/assembly/windows.xml
similarity index 100%
rename from msa/web-ui/src/main/assembly/windows.xml
rename to packaging/js/assembly/windows.xml
diff --git a/msa/web-ui/build.gradle b/packaging/js/build.gradle
similarity index 68%
rename from msa/web-ui/build.gradle
rename to packaging/js/build.gradle
index c436e8305f..9d4e4f49f0 100644
--- a/msa/web-ui/build.gradle
+++ b/packaging/js/build.gradle
@@ -17,7 +17,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
buildscript {
ext {
- osPackageVersion = "3.8.0"
+ osPackageVersion = "8.3.0"
}
repositories {
jcenter()
@@ -47,26 +47,29 @@ ospackage {
permissionGroup pkgUser
// Copy the executable file
- from("target/package/linux/bin/${pkgName}") {
+ from("${buildDir}/package/linux/bin/${pkgName}") {
fileMode 0500
into "bin"
}
// Copy the init file
- from("target/package/linux/init/${pkgName}") {
+ from("${buildDir}/package/linux/init/template") {
fileMode 0500
into "init"
+ rename { String filename ->
+ "${pkgName}"
+ }
}
// Copy the config files
- from("target/package/linux/conf") {
+ from("${buildDir}/package/linux/conf") {
fileType CONFIG | NOREPLACE
fileMode 0754
into "conf"
}
// Copy web files
- from("target/web") {
+ from("${buildDir}/web") {
into "web"
}
@@ -77,8 +80,8 @@ buildRpm {
arch = X86_64
- version = projectVersion.replace('-', '')
- archiveName = "${pkgName}.rpm"
+ archiveVersion = projectVersion.replace('-', '')
+ archiveFileName = "${pkgName}.rpm"
preInstall file("${buildDir}/control/rpm/preinst")
postInstall file("${buildDir}/control/rpm/postinst")
@@ -89,13 +92,15 @@ buildRpm {
permissionGroup pkgUser
// Copy the system unit files
- from("${buildDir}/control/${pkgName}.service") {
+ from("${buildDir}/control/template.service") {
addParentDirs = false
fileMode 0644
into "/usr/lib/systemd/system"
+ rename { String filename ->
+ "${pkgName}.service"
+ }
}
- directory(pkgLogFolder, 0755)
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
}
@@ -104,7 +109,7 @@ buildDeb {
arch = "amd64"
- archiveName = "${pkgName}.deb"
+ archiveFileName = "${pkgName}.deb"
configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
configurationFile("${pkgInstallFolder}/conf/custom-environment-variables.yml")
@@ -119,7 +124,35 @@ buildDeb {
user pkgUser
permissionGroup pkgUser
- directory(pkgLogFolder, 0755)
- link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/init/${pkgName}")
+ // Copy the system unit files
+ from("${buildDir}/control/template.service") {
+ addParentDirs = false
+ fileMode 0644
+ into "/lib/systemd/system"
+ rename { String filename ->
+ "${pkgName}.service"
+ }
+ }
+
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
}
+
+task renameDeb(type: Copy) {
+ from("${buildDir}/") {
+ include '*.deb'
+ destinationDir file("${buildDir}/")
+ rename { String filename ->
+ "${pkgName}.deb"
+ }
+ }
+}
+
+task renameRpm(type: Copy) {
+ from("${buildDir}/") {
+ include '*.rpm'
+ destinationDir file("${buildDir}/")
+ rename { String filename ->
+ "${pkgName}.rpm"
+ }
+ }
+}
diff --git a/msa/js-executor/src/main/filters/unix.properties b/packaging/js/filters/unix.properties
similarity index 100%
rename from msa/js-executor/src/main/filters/unix.properties
rename to packaging/js/filters/unix.properties
diff --git a/msa/js-executor/src/main/filters/windows.properties b/packaging/js/filters/windows.properties
similarity index 100%
rename from msa/js-executor/src/main/filters/windows.properties
rename to packaging/js/filters/windows.properties
diff --git a/packaging/js/scripts/control/deb/postinst b/packaging/js/scripts/control/deb/postinst
new file mode 100644
index 0000000000..7c2e6ed408
--- /dev/null
+++ b/packaging/js/scripts/control/deb/postinst
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+mkdir -m 0755 -p ${pkg.logFolder}
+chown -R ${pkg.user}: ${pkg.logFolder}
+chown -R ${pkg.user}: ${pkg.installFolder}
+
+systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
+
diff --git a/packaging/js/scripts/control/deb/postrm b/packaging/js/scripts/control/deb/postrm
new file mode 100644
index 0000000000..b26d46634a
--- /dev/null
+++ b/packaging/js/scripts/control/deb/postrm
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
+
+exit 0
+
diff --git a/msa/js-executor/src/main/scripts/control/deb/preinst b/packaging/js/scripts/control/deb/preinst
similarity index 100%
rename from msa/js-executor/src/main/scripts/control/deb/preinst
rename to packaging/js/scripts/control/deb/preinst
diff --git a/msa/js-executor/src/main/scripts/control/deb/prerm b/packaging/js/scripts/control/deb/prerm
similarity index 100%
rename from msa/js-executor/src/main/scripts/control/deb/prerm
rename to packaging/js/scripts/control/deb/prerm
diff --git a/msa/js-executor/src/main/scripts/control/rpm/postinst b/packaging/js/scripts/control/rpm/postinst
similarity index 87%
rename from msa/js-executor/src/main/scripts/control/rpm/postinst
rename to packaging/js/scripts/control/rpm/postinst
index d8021e2dd9..3608d09ef9 100644
--- a/msa/js-executor/src/main/scripts/control/rpm/postinst
+++ b/packaging/js/scripts/control/rpm/postinst
@@ -1,5 +1,6 @@
#!/bin/sh
+mkdir -m 0755 -p ${pkg.logFolder}
chown -R ${pkg.user}: ${pkg.logFolder}
chown -R ${pkg.user}: ${pkg.installFolder}
diff --git a/msa/js-executor/src/main/scripts/control/rpm/postrm b/packaging/js/scripts/control/rpm/postrm
similarity index 100%
rename from msa/js-executor/src/main/scripts/control/rpm/postrm
rename to packaging/js/scripts/control/rpm/postrm
diff --git a/msa/js-executor/src/main/scripts/control/rpm/preinst b/packaging/js/scripts/control/rpm/preinst
similarity index 100%
rename from msa/js-executor/src/main/scripts/control/rpm/preinst
rename to packaging/js/scripts/control/rpm/preinst
diff --git a/msa/js-executor/src/main/scripts/control/rpm/prerm b/packaging/js/scripts/control/rpm/prerm
similarity index 100%
rename from msa/js-executor/src/main/scripts/control/rpm/prerm
rename to packaging/js/scripts/control/rpm/prerm
diff --git a/msa/js-executor/src/main/scripts/control/tb-js-executor.service b/packaging/js/scripts/control/template.service
similarity index 100%
rename from msa/js-executor/src/main/scripts/control/tb-js-executor.service
rename to packaging/js/scripts/control/template.service
diff --git a/msa/web-ui/src/main/scripts/init/tb-web-ui b/packaging/js/scripts/init/template
similarity index 99%
rename from msa/web-ui/src/main/scripts/init/tb-web-ui
rename to packaging/js/scripts/init/template
index d0d3f95fc9..4a8104ae05 100644
--- a/msa/web-ui/src/main/scripts/init/tb-web-ui
+++ b/packaging/js/scripts/init/template
@@ -3,7 +3,7 @@
### BEGIN INIT INFO
-# Provides: tb-web-ui
+# Provides: ${pkg.name}
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
diff --git a/msa/js-executor/src/main/scripts/windows/install.bat b/packaging/js/scripts/windows/install.bat
similarity index 100%
rename from msa/js-executor/src/main/scripts/windows/install.bat
rename to packaging/js/scripts/windows/install.bat
diff --git a/msa/web-ui/src/main/scripts/windows/service.xml b/packaging/js/scripts/windows/service.xml
similarity index 100%
rename from msa/web-ui/src/main/scripts/windows/service.xml
rename to packaging/js/scripts/windows/service.xml
diff --git a/msa/js-executor/src/main/scripts/windows/uninstall.bat b/packaging/js/scripts/windows/uninstall.bat
similarity index 100%
rename from msa/js-executor/src/main/scripts/windows/uninstall.bat
rename to packaging/js/scripts/windows/uninstall.bat
diff --git a/pom.xml b/pom.xml
index 9ee07aa9a2..b6f10028a1 100755
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,13 @@
${basedir}
+ true
+ none
+ none
thingsboard
+ ${project.name}
+ /var/log/${pkg.name}
+ /usr/share/${pkg.name}
2.2.6.RELEASE
2.1.2.RELEASE
5.2.6.RELEASE
@@ -133,6 +139,394 @@
true
+
+
+ packaging
+
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-conf
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${project.build.directory}/conf
+
+
+ src/main/resources
+
+ logback.xml
+
+ false
+
+
+
+
+
+ copy-service-conf
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${project.build.directory}/conf
+
+
+ src/main/conf
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/unix.properties
+
+
+
+
+ copy-linux-conf
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${pkg.linux.dist}/conf
+
+
+ config
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/unix.properties
+
+
+
+
+ copy-linux-init
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${pkg.linux.dist}/init
+
+
+ ${main.dir}/packaging/${pkg.type}/scripts/init
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/unix.properties
+
+
+
+
+ copy-win-conf
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${pkg.win.dist}/conf
+
+
+ src/main/resources
+
+ logback.xml
+
+ false
+
+
+ src/main/conf
+
+ ${pkg.name}.conf
+
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/windows.properties
+
+
+
+
+ copy-control
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${project.build.directory}/control
+
+
+ ${main.dir}/packaging/${pkg.type}/scripts/control
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/unix.properties
+
+
+
+
+ copy-install
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${project.build.directory}/bin/install
+
+
+ ${main.dir}/packaging/${pkg.type}/scripts/install
+
+ **/*.sh
+ **/*.xml
+
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/unix.properties
+
+
+
+
+ copy-windows-control
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${pkg.win.dist}
+
+
+ ${main.dir}/packaging/${pkg.type}/scripts/windows
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/windows.properties
+
+
+
+
+ copy-windows-install
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${pkg.win.dist}/install
+
+
+ ${main.dir}/packaging/${pkg.type}/scripts/install
+
+ logback.xml
+
+ true
+
+
+
+ ${main.dir}/packaging/${pkg.type}/filters/windows.properties
+
+
+
+
+ copy-data
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${project.build.directory}/data
+
+
+ src/main/data
+
+
+ ../dao/src/main/resources
+
+ **/*.cql
+ **/*.sql
+
+ false
+
+
+
+
+
+ copy-docker-config
+ ${pkg.process-resources.phase}
+
+ copy-resources
+
+
+ ${project.build.directory}
+
+
+ docker
+ true
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-winsw-service
+ ${pkg.package.phase}
+
+ copy
+
+
+
+
+ com.sun.winsw
+ winsw
+ bin
+ exe
+ service.exe
+
+
+ ${pkg.win.dist}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ **/logback.xml
+
+
+
+ ${pkg.implementationTitle}
+ ${project.version}
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ ${pkg.disabled}
+ ${pkg.mainClass}
+ boot
+ ZIP
+ true
+ true
+
+ ${pkg.installFolder}/conf
+ ${pkg.unixLogFolder}
+ ${pkg.name}.out
+ ${pkg.name}
+
+
+
+
+
+ repackage
+
+
+
+
+
+ org.thingsboard
+ gradle-maven-plugin
+
+ ${main.dir}/packaging/${pkg.type}
+
+ build
+ buildDeb
+ buildRpm
+ renameDeb
+ renameRpm
+
+
+ -PpackagingDir=${main.dir}/packaging
+ -PprojectBuildDir=${basedir}/target
+ -PprojectVersion=${project.version}
+
+ -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
+
+ -PpkgName=${pkg.name}
+ -PpkgUser=${pkg.user}
+ -PpkgInstallFolder=${pkg.installFolder}
+ -PpkgCopyInstallScripts=${pkg.copyInstallScripts}
+ -PpkgLogFolder=${pkg.unixLogFolder}
+ --warning-mode
+ all
+
+
+
+
+ ${pkg.package.phase}
+
+ invoke
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+ ${pkg.name}
+
+ ${main.dir}/packaging/${pkg.type}/assembly/windows.xml
+
+
+
+
+ assembly
+ ${pkg.package.phase}
+
+ single
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+
+ ${project.build.directory}/${pkg.name}.deb
+ ${project.artifactId}
+ ${project.groupId}
+ ${project.version}
+ deb
+ deb
+
+
+
+ install-deb
+ ${pkg.package.phase}
+
+ install-file
+
+
+
+
+
+
+
+
@@ -182,7 +576,7 @@
org.thingsboard
gradle-maven-plugin
- 1.0.9
+ 1.0.10
org.apache.maven.plugins
@@ -321,6 +715,12 @@
src/vendor/**
src/font/**
src/sh/**
+ packaging/*/scripts/control/**
+ packaging/*/scripts/windows/**
+ packaging/*/scripts/init/**
+ **/*.log
+ **/*.current
+ .instance_id
src/main/scripts/control/**
src/main/scripts/windows/**
src/main/resources/public/static/rulenode/**
@@ -969,11 +1369,6 @@
commons-collections
${commons-collections.version}
-
- org.yaml
- snakeyaml
- ${snakeyaml.version}
-
org.apache.struts
struts-core
@@ -989,7 +1384,6 @@
struts-tiles
${struts.version}
-
@@ -1032,5 +1426,4 @@
https://oss.sonatype.org/content/groups/public
-
diff --git a/rule-engine/rule-engine-components/pom.xml b/rule-engine/rule-engine-components/pom.xml
index 76a70b3caf..1b338c34f2 100644
--- a/rule-engine/rule-engine-components/pom.xml
+++ b/rule-engine/rule-engine-components/pom.xml
@@ -155,31 +155,6 @@
org.codehaus.mojo
build-helper-maven-plugin
-
- org.springframework.boot
- spring-boot-maven-plugin
-
- org.thingsboard.server.dao.queue.QueueBenchmark
- boot
- ZIP
- true
- true
-
-
-
-
-
-
-
-
-
-
- repackage
-
-
-
-
-
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java
index 14565ac475..912a830dd3 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java
@@ -70,7 +70,7 @@ public class TbMsgTimeseriesNode implements TbNode {
} catch (NumberFormatException e) {
}
} else {
- ts = System.currentTimeMillis();
+ ts = msg.getTs();
}
String src = msg.getData();
Map> tsKvMap = JsonConverter.convertToTelemetry(new JsonParser().parse(src), ts);
diff --git a/transport/coap/build.gradle b/transport/coap/build.gradle
deleted file mode 100644
index 1a72b8b68e..0000000000
--- a/transport/coap/build.gradle
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Copyright © 2016-2020 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.
- */
-import org.apache.tools.ant.filters.ReplaceTokens
-
-buildscript {
- ext {
- osPackageVersion = "3.8.0"
- }
- repositories {
- jcenter()
- }
- dependencies {
- classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}")
- }
-}
-
-apply plugin: "nebula.ospackage"
-
-buildDir = projectBuildDir
-version = projectVersion
-distsDirName = "./"
-
-// OS Package plugin configuration
-ospackage {
- packageName = pkgName
- version = "${project.version}"
- release = 1
- os = LINUX
- type = BINARY
-
- into pkgInstallFolder
-
- user pkgName
- permissionGroup pkgName
-
- // Copy the actual .jar file
- from(mainJar) {
- // Strip the version from the jar filename
- rename { String fileName ->
- "${pkgName}.jar"
- }
- fileMode 0500
- into "bin"
- }
-
- // Copy the config files
- from("target/conf") {
- exclude "${pkgName}.conf"
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "conf"
- }
-
-}
-
-// Configure our RPM build task
-buildRpm {
-
- arch = NOARCH
-
- version = projectVersion.replace('-', '')
- archiveName = "${pkgName}.rpm"
-
- requires("java-1.8.0")
-
- from("target/conf") {
- include "${pkgName}.conf"
- filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "${pkgInstallFolder}/conf"
- }
-
- preInstall file("${buildDir}/control/rpm/preinst")
- postInstall file("${buildDir}/control/rpm/postinst")
- preUninstall file("${buildDir}/control/rpm/prerm")
- postUninstall file("${buildDir}/control/rpm/postrm")
-
- user pkgName
- permissionGroup pkgName
-
- // Copy the system unit files
- from("${buildDir}/control/${pkgName}.service") {
- addParentDirs = false
- fileMode 0644
- into "/usr/lib/systemd/system"
- }
-
- directory(pkgLogFolder, 0755)
- link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
- link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
-}
-
-// Same as the buildRpm task
-buildDeb {
-
- arch = "all"
-
- archiveName = "${pkgName}.deb"
-
- requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
-
- from("target/conf") {
- include "${pkgName}.conf"
- filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "${pkgInstallFolder}/conf"
- }
-
- configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
- configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
- configurationFile("${pkgInstallFolder}/conf/logback.xml")
-
- preInstall file("${buildDir}/control/deb/preinst")
- postInstall file("${buildDir}/control/deb/postinst")
- preUninstall file("${buildDir}/control/deb/prerm")
- postUninstall file("${buildDir}/control/deb/postrm")
-
- user pkgName
- permissionGroup pkgName
-
- directory(pkgLogFolder, 0755)
- link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar")
- link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
- link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
-}
diff --git a/transport/coap/pom.xml b/transport/coap/pom.xml
index e83ebc4623..84b92ba548 100644
--- a/transport/coap/pom.xml
+++ b/transport/coap/pom.xml
@@ -33,10 +33,15 @@
UTF-8
${basedir}/../..
+ java
+ false
+ process-resources
+ package
tb-coap-transport
- /var/log/${pkg.name}
- /usr/share/${pkg.name}
+ false
${project.build.directory}/windows
+ ThingsBoard CoAP Transport Service
+ org.thingsboard.server.coap.ThingsboardCoapTransportApplication
@@ -87,244 +92,30 @@
org.apache.maven.plugins
maven-resources-plugin
-
-
- copy-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
-
-
-
- copy-service-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/conf
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-win-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
- src/main/conf
-
- tb-coap-transport.conf
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-control
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/control
-
-
- src/main/scripts/control
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-windows-control
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}
-
-
- src/main/scripts/windows
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
org.apache.maven.plugins
maven-dependency-plugin
-
-
- copy-winsw-service
- package
-
- copy
-
-
-
-
- com.sun.winsw
- winsw
- bin
- exe
- service.exe
-
-
- ${pkg.win.dist}
-
-
-
org.apache.maven.plugins
maven-jar-plugin
-
-
- **/logback.xml
-
-
-
- ThingsBoard CoAP Transport Service
- ${project.version}
-
-
-
org.springframework.boot
spring-boot-maven-plugin
-
- org.thingsboard.server.coap.ThingsboardCoapTransportApplication
- boot
- ZIP
- true
- true
-
- ${pkg.installFolder}/conf
- ${pkg.unixLogFolder}
- ${pkg.name}.out
- ${pkg.name}
-
-
-
-
-
- repackage
-
-
-
org.thingsboard
gradle-maven-plugin
-
-
- build
- buildDeb
- buildRpm
-
-
- -PprojectBuildDir=${project.build.directory}
- -PprojectVersion=${project.version}
- -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
- -PpkgName=${pkg.name}
- -PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.unixLogFolder}
-
-
-
-
- package
-
- invoke
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
-
- ${pkg.name}
-
- src/main/assembly/windows.xml
-
-
-
-
- assembly
- package
-
- single
-
-
-
org.apache.maven.plugins
maven-install-plugin
-
- ${project.build.directory}/${pkg.name}.deb
- ${project.artifactId}
- ${project.groupId}
- ${project.version}
- deb
- deb
-
-
-
- install-deb
- package
-
- install-file
-
-
-
diff --git a/transport/coap/src/main/assembly/windows.xml b/transport/coap/src/main/assembly/windows.xml
deleted file mode 100644
index 3cd8ba35c1..0000000000
--- a/transport/coap/src/main/assembly/windows.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- windows
-
-
- zip
-
-
-
-
-
- ${pkg.win.dist}
- logs
-
- */**
-
-
-
- ${pkg.win.dist}/conf
- conf
- windows
-
-
-
-
-
- ${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
- lib
- ${pkg.name}.jar
-
-
- ${pkg.win.dist}/service.exe
-
- ${pkg.name}.exe
-
-
- ${pkg.win.dist}/service.xml
-
- ${pkg.name}.xml
- windows
-
-
- ${pkg.win.dist}/install.bat
-
- windows
-
-
- ${pkg.win.dist}/uninstall.bat
-
- windows
-
-
-
diff --git a/transport/coap/src/main/filters/unix.properties b/transport/coap/src/main/filters/unix.properties
deleted file mode 100644
index 8967278673..0000000000
--- a/transport/coap/src/main/filters/unix.properties
+++ /dev/null
@@ -1 +0,0 @@
-pkg.logFolder=${pkg.unixLogFolder}
\ No newline at end of file
diff --git a/transport/coap/src/main/filters/windows.properties b/transport/coap/src/main/filters/windows.properties
deleted file mode 100644
index a6e48d91ba..0000000000
--- a/transport/coap/src/main/filters/windows.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-pkg.logFolder=${BASE}\\logs
-pkg.winWrapperLogFolder=%BASE%\\logs
diff --git a/transport/coap/src/main/scripts/control/deb/postinst b/transport/coap/src/main/scripts/control/deb/postinst
deleted file mode 100644
index 0767d3f2c7..0000000000
--- a/transport/coap/src/main/scripts/control/deb/postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-update-rc.d ${pkg.name} defaults
-
diff --git a/transport/coap/src/main/scripts/control/deb/postrm b/transport/coap/src/main/scripts/control/deb/postrm
deleted file mode 100644
index 61865803c3..0000000000
--- a/transport/coap/src/main/scripts/control/deb/postrm
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-update-rc.d -f ${pkg.name} remove
diff --git a/transport/coap/src/main/scripts/control/deb/preinst b/transport/coap/src/main/scripts/control/deb/preinst
deleted file mode 100644
index d2ebea46d7..0000000000
--- a/transport/coap/src/main/scripts/control/deb/preinst
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-if ! getent group ${pkg.user} >/dev/null; then
- addgroup --system ${pkg.user}
-fi
-
-if ! getent passwd ${pkg.user} >/dev/null; then
- adduser --quiet \
- --system \
- --ingroup ${pkg.user} \
- --quiet \
- --disabled-login \
- --disabled-password \
- --home ${pkg.installFolder} \
- --no-create-home \
- -gecos "Thingsboard application" \
- ${pkg.user}
-fi
diff --git a/transport/coap/src/main/scripts/control/deb/prerm b/transport/coap/src/main/scripts/control/deb/prerm
deleted file mode 100644
index 898d3efd5c..0000000000
--- a/transport/coap/src/main/scripts/control/deb/prerm
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then
- service ${pkg.name} stop
-fi
diff --git a/transport/coap/src/main/scripts/control/rpm/postrm b/transport/coap/src/main/scripts/control/rpm/postrm
deleted file mode 100644
index 8e1f8a2048..0000000000
--- a/transport/coap/src/main/scripts/control/rpm/postrm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -ge 1 ] ; then
- # Package upgrade, not uninstall
- systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/transport/coap/src/main/scripts/control/rpm/preinst b/transport/coap/src/main/scripts/control/rpm/preinst
deleted file mode 100644
index db6306e4ac..0000000000
--- a/transport/coap/src/main/scripts/control/rpm/preinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-getent group ${pkg.user} >/dev/null || groupadd -r ${pkg.user}
-getent passwd ${pkg.user} >/dev/null || \
-useradd -d ${pkg.installFolder} -g ${pkg.user} -M -r ${pkg.user} -s /sbin/nologin \
--c "Thingsboard application"
diff --git a/transport/coap/src/main/scripts/control/rpm/prerm b/transport/coap/src/main/scripts/control/rpm/prerm
deleted file mode 100644
index accb487b8e..0000000000
--- a/transport/coap/src/main/scripts/control/rpm/prerm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -eq 0 ] ; then
- # Package removal, not upgrade
- systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
-fi
diff --git a/transport/coap/src/main/scripts/control/tb-coap-transport.service b/transport/coap/src/main/scripts/control/tb-coap-transport.service
deleted file mode 100644
index 3fee5c88df..0000000000
--- a/transport/coap/src/main/scripts/control/tb-coap-transport.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=${pkg.name}
-After=syslog.target
-
-[Service]
-User=${pkg.user}
-ExecStart=${pkg.installFolder}/bin/${pkg.name}.jar
-SuccessExitStatus=143
-
-[Install]
-WantedBy=multi-user.target
diff --git a/transport/coap/src/main/scripts/windows/install.bat b/transport/coap/src/main/scripts/windows/install.bat
deleted file mode 100644
index bce7f62942..0000000000
--- a/transport/coap/src/main/scripts/windows/install.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@ECHO OFF
-
-setlocal ENABLEEXTENSIONS
-
-@ECHO Detecting Java version installed.
-:CHECK_JAVA
-for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k"
-@ECHO CurrentVersion %jver%
-
-if %jver% NEQ 18 GOTO JAVA_NOT_INSTALLED
-
-:JAVA_INSTALLED
-
-@ECHO Java 1.8 found!
-@ECHO Installing ${pkg.name} ...
-
-"%BASE%"${pkg.name}.exe install
-
-@ECHO ${pkg.name} installed successfully!
-
-GOTO END
-
-:JAVA_NOT_INSTALLED
-@ECHO Java 1.8 is not installed. Only Java 1.8 is supported
-@ECHO Please go to https://adoptopenjdk.net/index.html and install Java 1.8. Then retry installation.
-PAUSE
-GOTO END
-
-:END
-
-
diff --git a/transport/coap/src/main/scripts/windows/service.xml b/transport/coap/src/main/scripts/windows/service.xml
deleted file mode 100644
index f7b9d307c8..0000000000
--- a/transport/coap/src/main/scripts/windows/service.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
- ${pkg.name}
- ${project.name}
- ${project.description}
- %BASE%\conf
- ${pkg.winWrapperLogFolder}
- rotate
-
- java
- -Xloggc:%BASE%\logs\gc.log
- -XX:+HeapDumpOnOutOfMemoryError
- -XX:+PrintGCDetails
- -XX:+PrintGCDateStamps
- -XX:+PrintHeapAtGC
- -XX:+PrintTenuringDistribution
- -XX:+PrintGCApplicationStoppedTime
- -XX:+UseGCLogFileRotation
- -XX:NumberOfGCLogFiles=10
- -XX:GCLogFileSize=10M
- -XX:-UseBiasedLocking
- -XX:+UseTLAB
- -XX:+ResizeTLAB
- -XX:+PerfDisableSharedMem
- -XX:+UseCondCardMark
- -XX:CMSWaitDuration=10000
- -XX:+UseParNewGC
- -XX:+UseConcMarkSweepGC
- -XX:+CMSParallelRemarkEnabled
- -XX:+CMSParallelInitialMarkEnabled
- -XX:+CMSEdenChunksRecordAlways
- -XX:CMSInitiatingOccupancyFraction=75
- -XX:+UseCMSInitiatingOccupancyOnly
- -jar
- %BASE%\lib\${pkg.name}.jar
-
-
diff --git a/transport/coap/src/main/scripts/windows/uninstall.bat b/transport/coap/src/main/scripts/windows/uninstall.bat
deleted file mode 100644
index 634b88ddff..0000000000
--- a/transport/coap/src/main/scripts/windows/uninstall.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@ECHO OFF
-
-@ECHO Stopping ${pkg.name} ...
-net stop ${pkg.name}
-
-@ECHO Uninstalling ${pkg.name} ...
-"%~dp0"${pkg.name}.exe uninstall
-
-@ECHO DONE.
\ No newline at end of file
diff --git a/transport/http/build.gradle b/transport/http/build.gradle
deleted file mode 100644
index 1a72b8b68e..0000000000
--- a/transport/http/build.gradle
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Copyright © 2016-2020 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.
- */
-import org.apache.tools.ant.filters.ReplaceTokens
-
-buildscript {
- ext {
- osPackageVersion = "3.8.0"
- }
- repositories {
- jcenter()
- }
- dependencies {
- classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}")
- }
-}
-
-apply plugin: "nebula.ospackage"
-
-buildDir = projectBuildDir
-version = projectVersion
-distsDirName = "./"
-
-// OS Package plugin configuration
-ospackage {
- packageName = pkgName
- version = "${project.version}"
- release = 1
- os = LINUX
- type = BINARY
-
- into pkgInstallFolder
-
- user pkgName
- permissionGroup pkgName
-
- // Copy the actual .jar file
- from(mainJar) {
- // Strip the version from the jar filename
- rename { String fileName ->
- "${pkgName}.jar"
- }
- fileMode 0500
- into "bin"
- }
-
- // Copy the config files
- from("target/conf") {
- exclude "${pkgName}.conf"
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "conf"
- }
-
-}
-
-// Configure our RPM build task
-buildRpm {
-
- arch = NOARCH
-
- version = projectVersion.replace('-', '')
- archiveName = "${pkgName}.rpm"
-
- requires("java-1.8.0")
-
- from("target/conf") {
- include "${pkgName}.conf"
- filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "${pkgInstallFolder}/conf"
- }
-
- preInstall file("${buildDir}/control/rpm/preinst")
- postInstall file("${buildDir}/control/rpm/postinst")
- preUninstall file("${buildDir}/control/rpm/prerm")
- postUninstall file("${buildDir}/control/rpm/postrm")
-
- user pkgName
- permissionGroup pkgName
-
- // Copy the system unit files
- from("${buildDir}/control/${pkgName}.service") {
- addParentDirs = false
- fileMode 0644
- into "/usr/lib/systemd/system"
- }
-
- directory(pkgLogFolder, 0755)
- link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
- link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
-}
-
-// Same as the buildRpm task
-buildDeb {
-
- arch = "all"
-
- archiveName = "${pkgName}.deb"
-
- requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
-
- from("target/conf") {
- include "${pkgName}.conf"
- filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "${pkgInstallFolder}/conf"
- }
-
- configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
- configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
- configurationFile("${pkgInstallFolder}/conf/logback.xml")
-
- preInstall file("${buildDir}/control/deb/preinst")
- postInstall file("${buildDir}/control/deb/postinst")
- preUninstall file("${buildDir}/control/deb/prerm")
- postUninstall file("${buildDir}/control/deb/postrm")
-
- user pkgName
- permissionGroup pkgName
-
- directory(pkgLogFolder, 0755)
- link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar")
- link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
- link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
-}
diff --git a/transport/http/pom.xml b/transport/http/pom.xml
index ddbcc5b0bf..a5a377555e 100644
--- a/transport/http/pom.xml
+++ b/transport/http/pom.xml
@@ -33,10 +33,15 @@
UTF-8
${basedir}/../..
+ java
+ false
+ process-resources
+ package
tb-http-transport
- /var/log/${pkg.name}
- /usr/share/${pkg.name}
+ false
${project.build.directory}/windows
+ ThingsBoard HTTP Transport Service
+ org.thingsboard.server.http.ThingsboardHttpTransportApplication
@@ -87,244 +92,30 @@
org.apache.maven.plugins
maven-resources-plugin
-
-
- copy-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
-
-
-
- copy-service-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/conf
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-win-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
- src/main/conf
-
- tb-http-transport.conf
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-control
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/control
-
-
- src/main/scripts/control
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-windows-control
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}
-
-
- src/main/scripts/windows
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
org.apache.maven.plugins
maven-dependency-plugin
-
-
- copy-winsw-service
- package
-
- copy
-
-
-
-
- com.sun.winsw
- winsw
- bin
- exe
- service.exe
-
-
- ${pkg.win.dist}
-
-
-
org.apache.maven.plugins
maven-jar-plugin
-
-
- **/logback.xml
-
-
-
- ThingsBoard HTTP Transport Service
- ${project.version}
-
-
-
org.springframework.boot
spring-boot-maven-plugin
-
- org.thingsboard.server.http.ThingsboardHttpTransportApplication
- boot
- ZIP
- true
- true
-
- ${pkg.installFolder}/conf
- ${pkg.unixLogFolder}
- ${pkg.name}.out
- ${pkg.name}
-
-
-
-
-
- repackage
-
-
-
org.thingsboard
gradle-maven-plugin
-
-
- build
- buildDeb
- buildRpm
-
-
- -PprojectBuildDir=${project.build.directory}
- -PprojectVersion=${project.version}
- -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
- -PpkgName=${pkg.name}
- -PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.unixLogFolder}
-
-
-
-
- package
-
- invoke
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
-
- ${pkg.name}
-
- src/main/assembly/windows.xml
-
-
-
-
- assembly
- package
-
- single
-
-
-
org.apache.maven.plugins
maven-install-plugin
-
- ${project.build.directory}/${pkg.name}.deb
- ${project.artifactId}
- ${project.groupId}
- ${project.version}
- deb
- deb
-
-
-
- install-deb
- package
-
- install-file
-
-
-
diff --git a/transport/http/src/main/assembly/windows.xml b/transport/http/src/main/assembly/windows.xml
deleted file mode 100644
index 3cd8ba35c1..0000000000
--- a/transport/http/src/main/assembly/windows.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- windows
-
-
- zip
-
-
-
-
-
- ${pkg.win.dist}
- logs
-
- */**
-
-
-
- ${pkg.win.dist}/conf
- conf
- windows
-
-
-
-
-
- ${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
- lib
- ${pkg.name}.jar
-
-
- ${pkg.win.dist}/service.exe
-
- ${pkg.name}.exe
-
-
- ${pkg.win.dist}/service.xml
-
- ${pkg.name}.xml
- windows
-
-
- ${pkg.win.dist}/install.bat
-
- windows
-
-
- ${pkg.win.dist}/uninstall.bat
-
- windows
-
-
-
diff --git a/transport/http/src/main/filters/unix.properties b/transport/http/src/main/filters/unix.properties
deleted file mode 100644
index 8967278673..0000000000
--- a/transport/http/src/main/filters/unix.properties
+++ /dev/null
@@ -1 +0,0 @@
-pkg.logFolder=${pkg.unixLogFolder}
\ No newline at end of file
diff --git a/transport/http/src/main/filters/windows.properties b/transport/http/src/main/filters/windows.properties
deleted file mode 100644
index a6e48d91ba..0000000000
--- a/transport/http/src/main/filters/windows.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-pkg.logFolder=${BASE}\\logs
-pkg.winWrapperLogFolder=%BASE%\\logs
diff --git a/transport/http/src/main/scripts/control/deb/postinst b/transport/http/src/main/scripts/control/deb/postinst
deleted file mode 100644
index 0767d3f2c7..0000000000
--- a/transport/http/src/main/scripts/control/deb/postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-update-rc.d ${pkg.name} defaults
-
diff --git a/transport/http/src/main/scripts/control/deb/postrm b/transport/http/src/main/scripts/control/deb/postrm
deleted file mode 100644
index 61865803c3..0000000000
--- a/transport/http/src/main/scripts/control/deb/postrm
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-update-rc.d -f ${pkg.name} remove
diff --git a/transport/http/src/main/scripts/control/deb/preinst b/transport/http/src/main/scripts/control/deb/preinst
deleted file mode 100644
index d2ebea46d7..0000000000
--- a/transport/http/src/main/scripts/control/deb/preinst
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-if ! getent group ${pkg.user} >/dev/null; then
- addgroup --system ${pkg.user}
-fi
-
-if ! getent passwd ${pkg.user} >/dev/null; then
- adduser --quiet \
- --system \
- --ingroup ${pkg.user} \
- --quiet \
- --disabled-login \
- --disabled-password \
- --home ${pkg.installFolder} \
- --no-create-home \
- -gecos "Thingsboard application" \
- ${pkg.user}
-fi
diff --git a/transport/http/src/main/scripts/control/deb/prerm b/transport/http/src/main/scripts/control/deb/prerm
deleted file mode 100644
index 898d3efd5c..0000000000
--- a/transport/http/src/main/scripts/control/deb/prerm
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then
- service ${pkg.name} stop
-fi
diff --git a/transport/http/src/main/scripts/control/rpm/postinst b/transport/http/src/main/scripts/control/rpm/postinst
deleted file mode 100644
index d8021e2dd9..0000000000
--- a/transport/http/src/main/scripts/control/rpm/postinst
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-
-if [ $1 -eq 1 ] ; then
- # Initial installation
- systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/transport/http/src/main/scripts/control/rpm/postrm b/transport/http/src/main/scripts/control/rpm/postrm
deleted file mode 100644
index 8e1f8a2048..0000000000
--- a/transport/http/src/main/scripts/control/rpm/postrm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -ge 1 ] ; then
- # Package upgrade, not uninstall
- systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/transport/http/src/main/scripts/control/rpm/preinst b/transport/http/src/main/scripts/control/rpm/preinst
deleted file mode 100644
index db6306e4ac..0000000000
--- a/transport/http/src/main/scripts/control/rpm/preinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-getent group ${pkg.user} >/dev/null || groupadd -r ${pkg.user}
-getent passwd ${pkg.user} >/dev/null || \
-useradd -d ${pkg.installFolder} -g ${pkg.user} -M -r ${pkg.user} -s /sbin/nologin \
--c "Thingsboard application"
diff --git a/transport/http/src/main/scripts/control/rpm/prerm b/transport/http/src/main/scripts/control/rpm/prerm
deleted file mode 100644
index accb487b8e..0000000000
--- a/transport/http/src/main/scripts/control/rpm/prerm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -eq 0 ] ; then
- # Package removal, not upgrade
- systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
-fi
diff --git a/transport/http/src/main/scripts/control/tb-http-transport.service b/transport/http/src/main/scripts/control/tb-http-transport.service
deleted file mode 100644
index 3fee5c88df..0000000000
--- a/transport/http/src/main/scripts/control/tb-http-transport.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=${pkg.name}
-After=syslog.target
-
-[Service]
-User=${pkg.user}
-ExecStart=${pkg.installFolder}/bin/${pkg.name}.jar
-SuccessExitStatus=143
-
-[Install]
-WantedBy=multi-user.target
diff --git a/transport/http/src/main/scripts/windows/install.bat b/transport/http/src/main/scripts/windows/install.bat
deleted file mode 100644
index bce7f62942..0000000000
--- a/transport/http/src/main/scripts/windows/install.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@ECHO OFF
-
-setlocal ENABLEEXTENSIONS
-
-@ECHO Detecting Java version installed.
-:CHECK_JAVA
-for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k"
-@ECHO CurrentVersion %jver%
-
-if %jver% NEQ 18 GOTO JAVA_NOT_INSTALLED
-
-:JAVA_INSTALLED
-
-@ECHO Java 1.8 found!
-@ECHO Installing ${pkg.name} ...
-
-"%BASE%"${pkg.name}.exe install
-
-@ECHO ${pkg.name} installed successfully!
-
-GOTO END
-
-:JAVA_NOT_INSTALLED
-@ECHO Java 1.8 is not installed. Only Java 1.8 is supported
-@ECHO Please go to https://adoptopenjdk.net/index.html and install Java 1.8. Then retry installation.
-PAUSE
-GOTO END
-
-:END
-
-
diff --git a/transport/http/src/main/scripts/windows/service.xml b/transport/http/src/main/scripts/windows/service.xml
deleted file mode 100644
index f7b9d307c8..0000000000
--- a/transport/http/src/main/scripts/windows/service.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
- ${pkg.name}
- ${project.name}
- ${project.description}
- %BASE%\conf
- ${pkg.winWrapperLogFolder}
- rotate
-
- java
- -Xloggc:%BASE%\logs\gc.log
- -XX:+HeapDumpOnOutOfMemoryError
- -XX:+PrintGCDetails
- -XX:+PrintGCDateStamps
- -XX:+PrintHeapAtGC
- -XX:+PrintTenuringDistribution
- -XX:+PrintGCApplicationStoppedTime
- -XX:+UseGCLogFileRotation
- -XX:NumberOfGCLogFiles=10
- -XX:GCLogFileSize=10M
- -XX:-UseBiasedLocking
- -XX:+UseTLAB
- -XX:+ResizeTLAB
- -XX:+PerfDisableSharedMem
- -XX:+UseCondCardMark
- -XX:CMSWaitDuration=10000
- -XX:+UseParNewGC
- -XX:+UseConcMarkSweepGC
- -XX:+CMSParallelRemarkEnabled
- -XX:+CMSParallelInitialMarkEnabled
- -XX:+CMSEdenChunksRecordAlways
- -XX:CMSInitiatingOccupancyFraction=75
- -XX:+UseCMSInitiatingOccupancyOnly
- -jar
- %BASE%\lib\${pkg.name}.jar
-
-
diff --git a/transport/http/src/main/scripts/windows/uninstall.bat b/transport/http/src/main/scripts/windows/uninstall.bat
deleted file mode 100644
index 634b88ddff..0000000000
--- a/transport/http/src/main/scripts/windows/uninstall.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@ECHO OFF
-
-@ECHO Stopping ${pkg.name} ...
-net stop ${pkg.name}
-
-@ECHO Uninstalling ${pkg.name} ...
-"%~dp0"${pkg.name}.exe uninstall
-
-@ECHO DONE.
\ No newline at end of file
diff --git a/transport/mqtt/build.gradle b/transport/mqtt/build.gradle
deleted file mode 100644
index 1a72b8b68e..0000000000
--- a/transport/mqtt/build.gradle
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Copyright © 2016-2020 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.
- */
-import org.apache.tools.ant.filters.ReplaceTokens
-
-buildscript {
- ext {
- osPackageVersion = "3.8.0"
- }
- repositories {
- jcenter()
- }
- dependencies {
- classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}")
- }
-}
-
-apply plugin: "nebula.ospackage"
-
-buildDir = projectBuildDir
-version = projectVersion
-distsDirName = "./"
-
-// OS Package plugin configuration
-ospackage {
- packageName = pkgName
- version = "${project.version}"
- release = 1
- os = LINUX
- type = BINARY
-
- into pkgInstallFolder
-
- user pkgName
- permissionGroup pkgName
-
- // Copy the actual .jar file
- from(mainJar) {
- // Strip the version from the jar filename
- rename { String fileName ->
- "${pkgName}.jar"
- }
- fileMode 0500
- into "bin"
- }
-
- // Copy the config files
- from("target/conf") {
- exclude "${pkgName}.conf"
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "conf"
- }
-
-}
-
-// Configure our RPM build task
-buildRpm {
-
- arch = NOARCH
-
- version = projectVersion.replace('-', '')
- archiveName = "${pkgName}.rpm"
-
- requires("java-1.8.0")
-
- from("target/conf") {
- include "${pkgName}.conf"
- filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "${pkgInstallFolder}/conf"
- }
-
- preInstall file("${buildDir}/control/rpm/preinst")
- postInstall file("${buildDir}/control/rpm/postinst")
- preUninstall file("${buildDir}/control/rpm/prerm")
- postUninstall file("${buildDir}/control/rpm/postrm")
-
- user pkgName
- permissionGroup pkgName
-
- // Copy the system unit files
- from("${buildDir}/control/${pkgName}.service") {
- addParentDirs = false
- fileMode 0644
- into "/usr/lib/systemd/system"
- }
-
- directory(pkgLogFolder, 0755)
- link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
- link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
-}
-
-// Same as the buildRpm task
-buildDeb {
-
- arch = "all"
-
- archiveName = "${pkgName}.deb"
-
- requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
-
- from("target/conf") {
- include "${pkgName}.conf"
- filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
- fileType CONFIG | NOREPLACE
- fileMode 0754
- into "${pkgInstallFolder}/conf"
- }
-
- configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
- configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
- configurationFile("${pkgInstallFolder}/conf/logback.xml")
-
- preInstall file("${buildDir}/control/deb/preinst")
- postInstall file("${buildDir}/control/deb/postinst")
- preUninstall file("${buildDir}/control/deb/prerm")
- postUninstall file("${buildDir}/control/deb/postrm")
-
- user pkgName
- permissionGroup pkgName
-
- directory(pkgLogFolder, 0755)
- link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar")
- link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
- link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
-}
diff --git a/transport/mqtt/pom.xml b/transport/mqtt/pom.xml
index 90b09bf04d..c447f8e8d2 100644
--- a/transport/mqtt/pom.xml
+++ b/transport/mqtt/pom.xml
@@ -33,10 +33,15 @@
UTF-8
${basedir}/../..
+ java
+ false
+ process-resources
+ package
tb-mqtt-transport
- /var/log/${pkg.name}
- /usr/share/${pkg.name}
+ false
${project.build.directory}/windows
+ ThingsBoard MQTT Transport Service
+ org.thingsboard.server.mqtt.ThingsboardMqttTransportApplication
@@ -87,244 +92,30 @@
org.apache.maven.plugins
maven-resources-plugin
-
-
- copy-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
-
-
-
- copy-service-conf
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/conf
-
-
- src/main/conf
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-win-conf
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}/conf
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
- src/main/conf
-
- tb-mqtt-transport.conf
-
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
- copy-control
- process-resources
-
- copy-resources
-
-
- ${project.build.directory}/control
-
-
- src/main/scripts/control
- true
-
-
-
- src/main/filters/unix.properties
-
-
-
-
- copy-windows-control
- process-resources
-
- copy-resources
-
-
- ${pkg.win.dist}
-
-
- src/main/scripts/windows
- true
-
-
-
- src/main/filters/windows.properties
-
-
-
-
org.apache.maven.plugins
maven-dependency-plugin
-
-
- copy-winsw-service
- package
-
- copy
-
-
-
-
- com.sun.winsw
- winsw
- bin
- exe
- service.exe
-
-
- ${pkg.win.dist}
-
-
-
org.apache.maven.plugins
maven-jar-plugin
-
-
- **/logback.xml
-
-
-
- ThingsBoard MQTT Transport Service
- ${project.version}
-
-
-
org.springframework.boot
spring-boot-maven-plugin
-
- org.thingsboard.server.mqtt.ThingsboardMqttTransportApplication
- boot
- ZIP
- true
- true
-
- ${pkg.installFolder}/conf
- ${pkg.unixLogFolder}
- ${pkg.name}.out
- ${pkg.name}
-
-
-
-
-
- repackage
-
-
-
org.thingsboard
gradle-maven-plugin
-
-
- build
- buildDeb
- buildRpm
-
-
- -PprojectBuildDir=${project.build.directory}
- -PprojectVersion=${project.version}
- -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
- -PpkgName=${pkg.name}
- -PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.unixLogFolder}
-
-
-
-
- package
-
- invoke
-
-
-
org.apache.maven.plugins
maven-assembly-plugin
-
- ${pkg.name}
-
- src/main/assembly/windows.xml
-
-
-
-
- assembly
- package
-
- single
-
-
-
org.apache.maven.plugins
maven-install-plugin
-
- ${project.build.directory}/${pkg.name}.deb
- ${project.artifactId}
- ${project.groupId}
- ${project.version}
- deb
- deb
-
-
-
- install-deb
- package
-
- install-file
-
-
-
diff --git a/transport/mqtt/src/main/assembly/windows.xml b/transport/mqtt/src/main/assembly/windows.xml
deleted file mode 100644
index 3cd8ba35c1..0000000000
--- a/transport/mqtt/src/main/assembly/windows.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- windows
-
-
- zip
-
-
-
-
-
- ${pkg.win.dist}
- logs
-
- */**
-
-
-
- ${pkg.win.dist}/conf
- conf
- windows
-
-
-
-
-
- ${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
- lib
- ${pkg.name}.jar
-
-
- ${pkg.win.dist}/service.exe
-
- ${pkg.name}.exe
-
-
- ${pkg.win.dist}/service.xml
-
- ${pkg.name}.xml
- windows
-
-
- ${pkg.win.dist}/install.bat
-
- windows
-
-
- ${pkg.win.dist}/uninstall.bat
-
- windows
-
-
-
diff --git a/transport/mqtt/src/main/filters/unix.properties b/transport/mqtt/src/main/filters/unix.properties
deleted file mode 100644
index 8967278673..0000000000
--- a/transport/mqtt/src/main/filters/unix.properties
+++ /dev/null
@@ -1 +0,0 @@
-pkg.logFolder=${pkg.unixLogFolder}
\ No newline at end of file
diff --git a/transport/mqtt/src/main/filters/windows.properties b/transport/mqtt/src/main/filters/windows.properties
deleted file mode 100644
index a6e48d91ba..0000000000
--- a/transport/mqtt/src/main/filters/windows.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-pkg.logFolder=${BASE}\\logs
-pkg.winWrapperLogFolder=%BASE%\\logs
diff --git a/transport/mqtt/src/main/scripts/control/deb/postinst b/transport/mqtt/src/main/scripts/control/deb/postinst
deleted file mode 100644
index 0767d3f2c7..0000000000
--- a/transport/mqtt/src/main/scripts/control/deb/postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-update-rc.d ${pkg.name} defaults
-
diff --git a/transport/mqtt/src/main/scripts/control/deb/postrm b/transport/mqtt/src/main/scripts/control/deb/postrm
deleted file mode 100644
index 61865803c3..0000000000
--- a/transport/mqtt/src/main/scripts/control/deb/postrm
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-update-rc.d -f ${pkg.name} remove
diff --git a/transport/mqtt/src/main/scripts/control/deb/preinst b/transport/mqtt/src/main/scripts/control/deb/preinst
deleted file mode 100644
index d2ebea46d7..0000000000
--- a/transport/mqtt/src/main/scripts/control/deb/preinst
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-if ! getent group ${pkg.user} >/dev/null; then
- addgroup --system ${pkg.user}
-fi
-
-if ! getent passwd ${pkg.user} >/dev/null; then
- adduser --quiet \
- --system \
- --ingroup ${pkg.user} \
- --quiet \
- --disabled-login \
- --disabled-password \
- --home ${pkg.installFolder} \
- --no-create-home \
- -gecos "Thingsboard application" \
- ${pkg.user}
-fi
diff --git a/transport/mqtt/src/main/scripts/control/deb/prerm b/transport/mqtt/src/main/scripts/control/deb/prerm
deleted file mode 100644
index 898d3efd5c..0000000000
--- a/transport/mqtt/src/main/scripts/control/deb/prerm
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then
- service ${pkg.name} stop
-fi
diff --git a/transport/mqtt/src/main/scripts/control/rpm/postinst b/transport/mqtt/src/main/scripts/control/rpm/postinst
deleted file mode 100644
index d8021e2dd9..0000000000
--- a/transport/mqtt/src/main/scripts/control/rpm/postinst
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-chown -R ${pkg.user}: ${pkg.logFolder}
-chown -R ${pkg.user}: ${pkg.installFolder}
-
-if [ $1 -eq 1 ] ; then
- # Initial installation
- systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/transport/mqtt/src/main/scripts/control/rpm/postrm b/transport/mqtt/src/main/scripts/control/rpm/postrm
deleted file mode 100644
index 8e1f8a2048..0000000000
--- a/transport/mqtt/src/main/scripts/control/rpm/postrm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -ge 1 ] ; then
- # Package upgrade, not uninstall
- systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || :
-fi
diff --git a/transport/mqtt/src/main/scripts/control/rpm/preinst b/transport/mqtt/src/main/scripts/control/rpm/preinst
deleted file mode 100644
index db6306e4ac..0000000000
--- a/transport/mqtt/src/main/scripts/control/rpm/preinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-getent group ${pkg.user} >/dev/null || groupadd -r ${pkg.user}
-getent passwd ${pkg.user} >/dev/null || \
-useradd -d ${pkg.installFolder} -g ${pkg.user} -M -r ${pkg.user} -s /sbin/nologin \
--c "Thingsboard application"
diff --git a/transport/mqtt/src/main/scripts/control/rpm/prerm b/transport/mqtt/src/main/scripts/control/rpm/prerm
deleted file mode 100644
index accb487b8e..0000000000
--- a/transport/mqtt/src/main/scripts/control/rpm/prerm
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ $1 -eq 0 ] ; then
- # Package removal, not upgrade
- systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
-fi
diff --git a/transport/mqtt/src/main/scripts/control/tb-mqtt-transport.service b/transport/mqtt/src/main/scripts/control/tb-mqtt-transport.service
deleted file mode 100644
index 3fee5c88df..0000000000
--- a/transport/mqtt/src/main/scripts/control/tb-mqtt-transport.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=${pkg.name}
-After=syslog.target
-
-[Service]
-User=${pkg.user}
-ExecStart=${pkg.installFolder}/bin/${pkg.name}.jar
-SuccessExitStatus=143
-
-[Install]
-WantedBy=multi-user.target
diff --git a/transport/mqtt/src/main/scripts/windows/install.bat b/transport/mqtt/src/main/scripts/windows/install.bat
deleted file mode 100644
index bce7f62942..0000000000
--- a/transport/mqtt/src/main/scripts/windows/install.bat
+++ /dev/null
@@ -1,31 +0,0 @@
-@ECHO OFF
-
-setlocal ENABLEEXTENSIONS
-
-@ECHO Detecting Java version installed.
-:CHECK_JAVA
-for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k"
-@ECHO CurrentVersion %jver%
-
-if %jver% NEQ 18 GOTO JAVA_NOT_INSTALLED
-
-:JAVA_INSTALLED
-
-@ECHO Java 1.8 found!
-@ECHO Installing ${pkg.name} ...
-
-"%BASE%"${pkg.name}.exe install
-
-@ECHO ${pkg.name} installed successfully!
-
-GOTO END
-
-:JAVA_NOT_INSTALLED
-@ECHO Java 1.8 is not installed. Only Java 1.8 is supported
-@ECHO Please go to https://adoptopenjdk.net/index.html and install Java 1.8. Then retry installation.
-PAUSE
-GOTO END
-
-:END
-
-
diff --git a/transport/mqtt/src/main/scripts/windows/service.xml b/transport/mqtt/src/main/scripts/windows/service.xml
deleted file mode 100644
index f7b9d307c8..0000000000
--- a/transport/mqtt/src/main/scripts/windows/service.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
- ${pkg.name}
- ${project.name}
- ${project.description}
- %BASE%\conf
- ${pkg.winWrapperLogFolder}
- rotate
-
- java
- -Xloggc:%BASE%\logs\gc.log
- -XX:+HeapDumpOnOutOfMemoryError
- -XX:+PrintGCDetails
- -XX:+PrintGCDateStamps
- -XX:+PrintHeapAtGC
- -XX:+PrintTenuringDistribution
- -XX:+PrintGCApplicationStoppedTime
- -XX:+UseGCLogFileRotation
- -XX:NumberOfGCLogFiles=10
- -XX:GCLogFileSize=10M
- -XX:-UseBiasedLocking
- -XX:+UseTLAB
- -XX:+ResizeTLAB
- -XX:+PerfDisableSharedMem
- -XX:+UseCondCardMark
- -XX:CMSWaitDuration=10000
- -XX:+UseParNewGC
- -XX:+UseConcMarkSweepGC
- -XX:+CMSParallelRemarkEnabled
- -XX:+CMSParallelInitialMarkEnabled
- -XX:+CMSEdenChunksRecordAlways
- -XX:CMSInitiatingOccupancyFraction=75
- -XX:+UseCMSInitiatingOccupancyOnly
- -jar
- %BASE%\lib\${pkg.name}.jar
-
-
diff --git a/transport/mqtt/src/main/scripts/windows/uninstall.bat b/transport/mqtt/src/main/scripts/windows/uninstall.bat
deleted file mode 100644
index 634b88ddff..0000000000
--- a/transport/mqtt/src/main/scripts/windows/uninstall.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@ECHO OFF
-
-@ECHO Stopping ${pkg.name} ...
-net stop ${pkg.name}
-
-@ECHO Uninstalling ${pkg.name} ...
-"%~dp0"${pkg.name}.exe uninstall
-
-@ECHO DONE.
\ No newline at end of file
diff --git a/ui/src/app/widget/lib/canvas-digital-gauge.js b/ui/src/app/widget/lib/canvas-digital-gauge.js
index 3d9caa2417..e4daa052f9 100644
--- a/ui/src/app/widget/lib/canvas-digital-gauge.js
+++ b/ui/src/app/widget/lib/canvas-digital-gauge.js
@@ -397,7 +397,7 @@ export default class TbCanvasDigitalGauge {
}
var value = tvPair[1];
if(value !== this.gauge.value) {
- if (!this.ctx.settings.animation) {
+ if (!this.ctx.settings.animation || this.ctx.isMobile) {
this.gauge._value = value;
}
this.gauge.value = value;