diff --git a/application/src/main/java/org/thingsboard/server/controller/Lwm2mController.java b/application/src/main/java/org/thingsboard/server/controller/Lwm2mController.java index 7a772a69cc..72f91e11eb 100644 --- a/application/src/main/java/org/thingsboard/server/controller/Lwm2mController.java +++ b/application/src/main/java/org/thingsboard/server/controller/Lwm2mController.java @@ -37,6 +37,7 @@ import org.thingsboard.server.service.lwm2m.LwM2MService; import org.thingsboard.server.service.lwm2m.LwM2MServiceImpl; import org.thingsboard.server.service.security.permission.Resource; +import java.util.List; import java.util.Map; import static org.thingsboard.server.controller.ControllerConstants.IS_BOOTSTRAP_SERVER_PARAM_DESCRIPTION; @@ -61,13 +62,11 @@ public class Lwm2mController extends BaseController { TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH, produces = "application/json") @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") - @RequestMapping(value = "/lwm2m/deviceProfile/bootstrap/{isBootstrapServer}", method = RequestMethod.GET) + @RequestMapping(value = "/lwm2m/deviceProfile/bootstrap", method = RequestMethod.GET) @ResponseBody - public ServerSecurityConfig getLwm2mBootstrapSecurityInfo( - @ApiParam(value = IS_BOOTSTRAP_SERVER_PARAM_DESCRIPTION) - @PathVariable(IS_BOOTSTRAP_SERVER) boolean bootstrapServer) throws ThingsboardException { + public ServerSecurityConfig [] getLwm2mBootstrapSecurityInfo() throws ThingsboardException { try { - return lwM2MService.getServerSecurityInfo(bootstrapServer); + return lwM2MService.getServerSecurityInfo(); } catch (Exception e) { throw handleException(e); } diff --git a/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MService.java b/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MService.java index 7d1a69d270..2dc2827317 100644 --- a/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MService.java +++ b/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MService.java @@ -19,6 +19,6 @@ import org.thingsboard.server.common.data.lwm2m.ServerSecurityConfig; public interface LwM2MService { - ServerSecurityConfig getServerSecurityInfo(boolean bootstrapServer); + ServerSecurityConfig [] getServerSecurityInfo(); } diff --git a/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MServiceImpl.java b/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MServiceImpl.java index c846c60d14..46a56909cf 100644 --- a/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MServiceImpl.java +++ b/application/src/main/java/org/thingsboard/server/service/lwm2m/LwM2MServiceImpl.java @@ -26,6 +26,8 @@ import org.thingsboard.server.transport.lwm2m.config.LwM2MSecureServerConfig; import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportBootstrapConfig; import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig; +import java.util.List; + @Slf4j @Service @RequiredArgsConstructor @@ -36,10 +38,12 @@ public class LwM2MServiceImpl implements LwM2MService { private final LwM2MTransportBootstrapConfig bootstrapConfig; @Override - public ServerSecurityConfig getServerSecurityInfo(boolean bootstrapServer) { - ServerSecurityConfig result = getServerSecurityConfig(bootstrapServer ? bootstrapConfig : serverConfig); - result.setBootstrapServerIs(bootstrapServer); - return result; + public ServerSecurityConfig [] getServerSecurityInfo() { + ServerSecurityConfig bootstrapServer = getServerSecurityConfig(bootstrapConfig); + bootstrapServer.setBootstrapServerIs(true); + ServerSecurityConfig lwm2mServer = getServerSecurityConfig(serverConfig); + lwm2mServer.setBootstrapServerIs(false); + return new ServerSecurityConfig[] {bootstrapServer, lwm2mServer}; } private ServerSecurityConfig getServerSecurityConfig(LwM2MSecureServerConfig serverConfig) { diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServerConfig.java b/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServerConfig.java index f27f01978f..35adce1187 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServerConfig.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServerConfig.java @@ -19,6 +19,9 @@ import lombok.Data; @Data public class LwM2MBootstrapServerConfig { + + protected Integer shortServerId = 123; + private Integer shortId = 123; private Integer lifetime = 300; private Integer defaultMinPeriod = 1; diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServersConfiguration.java b/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServersConfiguration.java index 6347ecc06c..fd3cfad5a5 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServersConfiguration.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/device/profile/lwm2m/bootstrap/LwM2MBootstrapServersConfiguration.java @@ -17,10 +17,13 @@ package org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap; import lombok.Data; +import java.util.List; + @Data public class LwM2MBootstrapServersConfiguration { //TODO + List serversConfiguration; // List LwM2MBootstrapServersConfigurations; // LwM2MBootstrapServersConfiguration: Integer shortId, LwM2MBootstrapServerConfig serverConfig; LwM2MBootstrapServerCredential serverSecurity. diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/lwm2m/ServerSecurityConfig.java b/common/data/src/main/java/org/thingsboard/server/common/data/lwm2m/ServerSecurityConfig.java index 83b56a2661..a98f9c52ee 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/lwm2m/ServerSecurityConfig.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/lwm2m/ServerSecurityConfig.java @@ -18,10 +18,14 @@ package org.thingsboard.server.common.data.lwm2m; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.LwM2MBootstrapServerConfig; @ApiModel @Data -public class ServerSecurityConfig { +public class ServerSecurityConfig extends LwM2MBootstrapServerConfig { + + protected Integer shortServerId = 123; + @ApiModelProperty(position = 1, value = "Is Bootstrap Server or Lwm2m Server", example = "true or false", readOnly = true) protected boolean bootstrapServerIs = true; @ApiModelProperty(position = 2, value = "Host for 'No Security' mode", example = "0.0.0.0", readOnly = true) diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/bootstrap/secure/LwM2MBootstrapConfig.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/bootstrap/secure/LwM2MBootstrapConfig.java index f2ba39dcfa..29024d8f8f 100644 --- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/bootstrap/secure/LwM2MBootstrapConfig.java +++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/bootstrap/secure/LwM2MBootstrapConfig.java @@ -23,12 +23,18 @@ import org.eclipse.leshan.core.SecurityMode; import org.eclipse.leshan.core.request.BindingMode; import org.eclipse.leshan.core.util.Hex; import org.eclipse.leshan.server.bootstrap.BootstrapConfig; +import org.thingsboard.server.common.data.device.credentials.lwm2m.LwM2MBootstrapClientCredential; +import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.LwM2MBootstrapServerCredential; import java.io.Serializable; import java.nio.charset.StandardCharsets; +import java.util.List; @Data public class LwM2MBootstrapConfig implements Serializable { + + List serversConfiguration; + LwM2MBootstrapClientCredential bootstrapClientCredential; /* interface BootstrapSecurityConfig servers: BootstrapServersSecurityConfig, @@ -68,6 +74,11 @@ public class LwM2MBootstrapConfig implements Serializable { @Setter private LwM2MServerBootstrap lwm2mServer; + public LwM2MBootstrapConfig(List serversConfiguration, LwM2MBootstrapClientCredential bootstrapClientCredential) { + this.serversConfiguration = serversConfiguration; + this.bootstrapClientCredential = bootstrapClientCredential; + } + @JsonIgnore public BootstrapConfig getLwM2MBootstrapConfig() { BootstrapConfig configBs = new BootstrapConfig();