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;