swagger_device_controller: fix bug example request - X509, MQTT_BASIC
This commit is contained in:
parent
2986700795
commit
7ff353a4d9
@ -15,6 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.controller;
|
package org.thingsboard.server.controller;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import static org.thingsboard.server.common.msg.EncryptionUtil.certTrimNewLinesForChainInDeviceProfile;
|
||||||
|
|
||||||
public class ControllerConstants {
|
public class ControllerConstants {
|
||||||
|
|
||||||
protected static final String NEW_LINE = "\n\n";
|
protected static final String NEW_LINE = "\n\n";
|
||||||
@ -236,7 +246,59 @@ public class ControllerConstants {
|
|||||||
" }\n" +
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
protected static final String CREDENTIALS_VALUE_LVM2M_RPK_DESCRIPTION =
|
protected static final String[] getCertificateValue() {
|
||||||
|
String filePath = "src/test/resources/provision/x509ChainProvisionTest.pem";
|
||||||
|
try {
|
||||||
|
String certificateChain = Files.readString(Paths.get(filePath));
|
||||||
|
certificateChain = certTrimNewLinesForChainInDeviceProfile(certificateChain);
|
||||||
|
return fetchLeafCertificateFromChain(certificateChain);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static final String certificateValue = "\"-----BEGIN CERTIFICATE----- " +
|
||||||
|
"MIICMTCCAdegAwIBAgIUI9dBuwN6pTtK6uZ03rkiCwV4wEYwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTYxN1oXDTI0MDMyODE0NTYxN1owbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Zo791qKQiGNBm11r4ZGxh+w+ossZL3xc46ufq5QckQHP7zkD2XDAcmP5GvdkM1sBFN9AWaCkQfNnWmfERsOOKNTMFEwHQYDVR0OBBYEFFFc5uyCyglQoZiKhzXzMcQ3BKORMB8GA1UdIwQYMBaAFFFc5uyCyglQoZiKhzXzMcQ3BKORMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANbA9CuhoOifZMMmqkpuld+65CR+ItKdXeRAhLMZuccuAiB0FSQB34zMutXrZj1g8Gl5OkE7YryFHbei1z0SveHR8g== " +
|
||||||
|
"-----END CERTIFICATE-----\"";
|
||||||
|
|
||||||
|
protected static final String certificateId = "\"84f5911765abba1f96bf4165604e9e90338fc6214081a8e623b6ff9669aedb27\"";
|
||||||
|
|
||||||
|
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_X509_CERTIFICATE_PARAM_DESCRIPTION =
|
||||||
|
"{\n" +
|
||||||
|
" \"device\": {\n" +
|
||||||
|
" \"name\":\"Name_DeviceWithCredantial_X509_Certificate\",\n" +
|
||||||
|
" \"label\":\"Label_DeviceWithCredantial_X509_Certificate\",\n" +
|
||||||
|
" \"deviceProfileId\":{\n" +
|
||||||
|
" \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n" +
|
||||||
|
" \"entityType\":\"DEVICE_PROFILE\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
" },\n" +
|
||||||
|
" \"credentials\": {\n" +
|
||||||
|
" \"credentialsType\": \"X509_CERTIFICATE\",\n" +
|
||||||
|
" \"credentialsId\": " + certificateId + ",\n" +
|
||||||
|
" \"credentialsValue\": " + certificateValue + "\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
|
||||||
|
protected static final String MQTT_BASIC_VALUE = "\"{\\\"clientId\\\":\\\"5euh5nzm34bjjh1efmlt\\\",\\\"userName\\\":\\\"onasd1lgwasmjl7v2v7h\\\",\\\"password\\\":\\\"b9xtm4ny8kt9zewaga5o\\\"}\"";
|
||||||
|
|
||||||
|
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_MQTT_BASIC_PARAM_DESCRIPTION =
|
||||||
|
"{\n" +
|
||||||
|
" \"device\": {\n" +
|
||||||
|
" \"name\":\"Name_DeviceWithCredantial_MQTT_Basic\",\n" +
|
||||||
|
" \"label\":\"Label_DeviceWithCredantial_MQTT_Basic\",\n" +
|
||||||
|
" \"deviceProfileId\":{\n" +
|
||||||
|
" \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n" +
|
||||||
|
" \"entityType\":\"DEVICE_PROFILE\"\n" +
|
||||||
|
" }\n" +
|
||||||
|
" },\n" +
|
||||||
|
" \"credentials\": {\n" +
|
||||||
|
" \"credentialsType\": \"MQTT_BASIC\",\n" +
|
||||||
|
" \"credentialsValue\": " + MQTT_BASIC_VALUE + "\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
|
||||||
|
protected static final String CREDENTIALS_VALUE_LVM2M_RPK_DESCRIPTION =
|
||||||
" \"{" +
|
" \"{" +
|
||||||
"\\\"client\\\":{ " +
|
"\\\"client\\\":{ " +
|
||||||
"\\\"endpoint\\\":\\\"LwRpk00000000\\\", " +
|
"\\\"endpoint\\\":\\\"LwRpk00000000\\\", " +
|
||||||
@ -279,6 +341,12 @@ public class ControllerConstants {
|
|||||||
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DEFAULT_DESCRIPTION_MARKDOWN =
|
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DEFAULT_DESCRIPTION_MARKDOWN =
|
||||||
MARKDOWN_CODE_BLOCK_START + DEVICE_WITH_DEVICE_CREDENTIALS_ACCESS_TOKEN_DEFAULT_PARAM_DESCRIPTION + MARKDOWN_CODE_BLOCK_END;
|
MARKDOWN_CODE_BLOCK_START + DEVICE_WITH_DEVICE_CREDENTIALS_ACCESS_TOKEN_DEFAULT_PARAM_DESCRIPTION + MARKDOWN_CODE_BLOCK_END;
|
||||||
|
|
||||||
|
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_X509_CERTIFICATE_DESCRIPTION_MARKDOWN =
|
||||||
|
MARKDOWN_CODE_BLOCK_START + DEVICE_WITH_DEVICE_CREDENTIALS_X509_CERTIFICATE_PARAM_DESCRIPTION + MARKDOWN_CODE_BLOCK_END;
|
||||||
|
|
||||||
|
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_MQTT_BASIC_DESCRIPTION_MARKDOWN =
|
||||||
|
MARKDOWN_CODE_BLOCK_START + DEVICE_WITH_DEVICE_CREDENTIALS_MQTT_BASIC_PARAM_DESCRIPTION + MARKDOWN_CODE_BLOCK_END;
|
||||||
|
|
||||||
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION_MARKDOWN =
|
protected static final String DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION_MARKDOWN =
|
||||||
MARKDOWN_CODE_BLOCK_START + DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION + MARKDOWN_CODE_BLOCK_END;
|
MARKDOWN_CODE_BLOCK_START + DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION + MARKDOWN_CODE_BLOCK_END;
|
||||||
|
|
||||||
@ -1594,4 +1662,15 @@ public class ControllerConstants {
|
|||||||
MARKDOWN_CODE_BLOCK_START +
|
MARKDOWN_CODE_BLOCK_START +
|
||||||
"[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]" +
|
"[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]" +
|
||||||
MARKDOWN_CODE_BLOCK_END ;
|
MARKDOWN_CODE_BLOCK_END ;
|
||||||
|
|
||||||
|
private static String[] fetchLeafCertificateFromChain(String value) {
|
||||||
|
List<String> chain = new ArrayList<>();
|
||||||
|
String regex = "-----BEGIN CERTIFICATE-----\\s*.*?\\s*-----END CERTIFICATE-----";
|
||||||
|
Pattern pattern = Pattern.compile(regex);
|
||||||
|
Matcher matcher = pattern.matcher(value);
|
||||||
|
while (matcher.find()) {
|
||||||
|
chain.add(matcher.group(0));
|
||||||
|
}
|
||||||
|
return chain.toArray(new String[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,6 +96,8 @@ import static org.thingsboard.server.controller.ControllerConstants.DEVICE_TYPE_
|
|||||||
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DEFAULT_DESCRIPTION_MARKDOWN;
|
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DEFAULT_DESCRIPTION_MARKDOWN;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DESCRIPTION_MARKDOWN;
|
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DESCRIPTION_MARKDOWN;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION_MARKDOWN;
|
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION_MARKDOWN;
|
||||||
|
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_MQTT_BASIC_DESCRIPTION_MARKDOWN;
|
||||||
|
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_X509_CERTIFICATE_DESCRIPTION_MARKDOWN;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.EDGE_ASSIGN_ASYNC_FIRST_STEP_DESCRIPTION;
|
import static org.thingsboard.server.controller.ControllerConstants.EDGE_ASSIGN_ASYNC_FIRST_STEP_DESCRIPTION;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.EDGE_ASSIGN_RECEIVE_STEP_DESCRIPTION;
|
import static org.thingsboard.server.controller.ControllerConstants.EDGE_ASSIGN_RECEIVE_STEP_DESCRIPTION;
|
||||||
import static org.thingsboard.server.controller.ControllerConstants.EDGE_ID_PARAM_DESCRIPTION;
|
import static org.thingsboard.server.controller.ControllerConstants.EDGE_ID_PARAM_DESCRIPTION;
|
||||||
@ -185,13 +187,18 @@ public class DeviceController extends BaseController {
|
|||||||
@ApiOperation(value = "Create Device (saveDevice) with credentials ",
|
@ApiOperation(value = "Create Device (saveDevice) with credentials ",
|
||||||
notes = "Create or update the Device. When creating device, platform generates Device Id as " + UUID_WIKI_LINK +
|
notes = "Create or update the Device. When creating device, platform generates Device Id as " + UUID_WIKI_LINK +
|
||||||
"Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\n" +
|
"Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\n" +
|
||||||
"Note: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n" +
|
|
||||||
"You may find the example of device with different type of credentials below: \n\n" +
|
"You may find the example of device with different type of credentials below: \n\n" +
|
||||||
"- Credentials type: <b>\"Access token\"</b> with Device profile ID below: \n\n" +
|
"- Credentials type: <b>\"Access token\"</b> with <b>device profile ID</b> below: \n\n" +
|
||||||
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DESCRIPTION_MARKDOWN + "\n\n" +
|
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DESCRIPTION_MARKDOWN + "\n\n" +
|
||||||
"- Credentials type: <b>\"Access token\"</b> with Device profile <b>default</b> below: \n\n" +
|
"- Credentials type: <b>\"Access token\"</b> with <b>device profile default</b> below: \n\n" +
|
||||||
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DEFAULT_DESCRIPTION_MARKDOWN + "\n\n" +
|
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_ACCESS_TOKEN_DEFAULT_DESCRIPTION_MARKDOWN + "\n\n" +
|
||||||
|
"- Credentials type: <b>\"X509\"</b> with <b>device profile ID</b> below: \n\n" +
|
||||||
|
"Note: <b>credentialsId</b> - format <b>Sha3Hash</b>, <b>certificateValue</b> - format <b>PEM</b> (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n" +
|
||||||
|
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_X509_CERTIFICATE_DESCRIPTION_MARKDOWN + "\n\n" +
|
||||||
|
"- Credentials type: <b>\"MQTT_BASIC\"</b> with <b>device profile ID</b> below: \n\n" +
|
||||||
|
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_MQTT_BASIC_DESCRIPTION_MARKDOWN + "\n\n" +
|
||||||
"- You may find the example of <b>LwM2M</b> device and <b>RPK</b> credentials below: \n\n" +
|
"- You may find the example of <b>LwM2M</b> device and <b>RPK</b> credentials below: \n\n" +
|
||||||
|
"Note: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n" +
|
||||||
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION_MARKDOWN + "\n\n" +
|
DEVICE_WITH_DEVICE_CREDENTIALS_PARAM_LVM2M_RPK_DESCRIPTION_MARKDOWN + "\n\n" +
|
||||||
"Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. " +
|
"Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. " +
|
||||||
TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH)
|
TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user