download cert improvements
This commit is contained in:
parent
4e1e9dcc7d
commit
43584d4012
@ -396,4 +396,10 @@ public class DeviceConnectivityControllerTest extends AbstractControllerTest {
|
|||||||
public void testDownloadMqttCertWithoutCertFile() throws Exception {
|
public void testDownloadMqttCertWithoutCertFile() throws Exception {
|
||||||
doGet("/api/device-connectivity/mqtts/certificate/download").andExpect(status().isNotFound());
|
doGet("/api/device-connectivity/mqtts/certificate/download").andExpect(status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DirtiesContext
|
||||||
|
public void testDownloadCertWithUnknownProtocol() throws Exception {
|
||||||
|
doGet("/api/device-connectivity/unknownProtocol/certificate/download").andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,6 +28,10 @@ import java.util.Map;
|
|||||||
public class DeviceConnectivityConfiguration {
|
public class DeviceConnectivityConfiguration {
|
||||||
private Map<String, DeviceConnectivityInfo> connectivity = new HashMap<>();
|
private Map<String, DeviceConnectivityInfo> connectivity = new HashMap<>();
|
||||||
|
|
||||||
|
public DeviceConnectivityInfo getConnectivity(String protocol) {
|
||||||
|
return connectivity.get(protocol);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isEnabled(String protocol) {
|
public boolean isEnabled(String protocol) {
|
||||||
var info = connectivity.get(protocol);
|
var info = connectivity.get(protocol);
|
||||||
return info != null && info.isEnabled();
|
return info != null && info.isEnabled();
|
||||||
|
|||||||
@ -81,7 +81,7 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
private void init() {
|
private void init() {
|
||||||
DeviceConnectivityInfo mqtts = deviceConnectivityConfiguration.getConnectivity().get(MQTTS);
|
DeviceConnectivityInfo mqtts = deviceConnectivityConfiguration.getConnectivity(MQTTS);
|
||||||
if (mqtts != null && mqtts.isEnabled()) {
|
if (mqtts != null && mqtts.isEnabled()) {
|
||||||
String certFilePath = mqtts.getPemCertFile();
|
String certFilePath = mqtts.getPemCertFile();
|
||||||
if (StringUtils.isBlank(certFilePath) || !ResourceUtils.resourceExists(this, certFilePath)) {
|
if (StringUtils.isBlank(certFilePath) || !ResourceUtils.resourceExists(this, certFilePath)) {
|
||||||
@ -89,7 +89,6 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
log.error("MQTTS is enabled but cert {}!", error);
|
log.error("MQTTS is enabled but cert {}!", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -140,9 +139,12 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
@Override
|
@Override
|
||||||
public Resource getPemCertFile(String protocol) {
|
public Resource getPemCertFile(String protocol) {
|
||||||
return certs.computeIfAbsent(protocol, key -> {
|
return certs.computeIfAbsent(protocol, key -> {
|
||||||
String certFilePath = deviceConnectivityConfiguration.getConnectivity()
|
DeviceConnectivityInfo connectivity = deviceConnectivityConfiguration.getConnectivity(protocol);
|
||||||
.get(protocol)
|
if (connectivity == null) {
|
||||||
.getPemCertFile();
|
log.warn("Unknown connectivity protocol: {}", protocol);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String certFilePath = connectivity.getPemCertFile();
|
||||||
if (StringUtils.isNotBlank(certFilePath) && ResourceUtils.resourceExists(this, certFilePath)) {
|
if (StringUtils.isNotBlank(certFilePath) && ResourceUtils.resourceExists(this, certFilePath)) {
|
||||||
try {
|
try {
|
||||||
return getCert(certFilePath);
|
return getCert(certFilePath);
|
||||||
@ -195,7 +197,7 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getHttpPublishCommand(String protocol, String baseUrl, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
private String getHttpPublishCommand(String protocol, String baseUrl, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
||||||
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity().get(protocol);
|
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity(protocol);
|
||||||
if (properties == null || !properties.isEnabled() ||
|
if (properties == null || !properties.isEnabled() ||
|
||||||
deviceCredentials.getCredentialsType() != DeviceCredentialsType.ACCESS_TOKEN) {
|
deviceCredentials.getCredentialsType() != DeviceCredentialsType.ACCESS_TOKEN) {
|
||||||
return null;
|
return null;
|
||||||
@ -246,14 +248,14 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getMqttPublishCommand(String baseUrl, String deviceTelemetryTopic, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
private String getMqttPublishCommand(String baseUrl, String deviceTelemetryTopic, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
||||||
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity().get(MQTT);
|
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity(MQTT);
|
||||||
String mqttHost = getHost(baseUrl, properties);
|
String mqttHost = getHost(baseUrl, properties);
|
||||||
String mqttPort = properties.getPort().isEmpty() ? null : properties.getPort();
|
String mqttPort = properties.getPort().isEmpty() ? null : properties.getPort();
|
||||||
return DeviceConnectivityUtil.getMqttPublishCommand(MQTT, mqttHost, mqttPort, deviceTelemetryTopic, deviceCredentials);
|
return DeviceConnectivityUtil.getMqttPublishCommand(MQTT, mqttHost, mqttPort, deviceTelemetryTopic, deviceCredentials);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> getMqttsPublishCommand(String baseUrl, String deviceTelemetryTopic, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
private List<String> getMqttsPublishCommand(String baseUrl, String deviceTelemetryTopic, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
||||||
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity().get(MQTTS);
|
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity(MQTTS);
|
||||||
String mqttHost = getHost(baseUrl, properties);
|
String mqttHost = getHost(baseUrl, properties);
|
||||||
String mqttPort = properties.getPort().isEmpty() ? null : properties.getPort();
|
String mqttPort = properties.getPort().isEmpty() ? null : properties.getPort();
|
||||||
String pubCommand = DeviceConnectivityUtil.getMqttPublishCommand(MQTTS, mqttHost, mqttPort, deviceTelemetryTopic, deviceCredentials);
|
String pubCommand = DeviceConnectivityUtil.getMqttPublishCommand(MQTTS, mqttHost, mqttPort, deviceTelemetryTopic, deviceCredentials);
|
||||||
@ -268,7 +270,7 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getDockerMqttPublishCommand(String protocol, String baseUrl, String deviceTelemetryTopic, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
private String getDockerMqttPublishCommand(String protocol, String baseUrl, String deviceTelemetryTopic, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
||||||
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity().get(protocol);
|
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity(protocol);
|
||||||
String mqttHost = getHost(baseUrl, properties);
|
String mqttHost = getHost(baseUrl, properties);
|
||||||
String mqttPort = properties.getPort().isEmpty() ? null : properties.getPort();
|
String mqttPort = properties.getPort().isEmpty() ? null : properties.getPort();
|
||||||
return DeviceConnectivityUtil.getDockerMqttPublishCommand(protocol, baseUrl, mqttHost, mqttPort, deviceTelemetryTopic, deviceCredentials);
|
return DeviceConnectivityUtil.getDockerMqttPublishCommand(protocol, baseUrl, mqttHost, mqttPort, deviceTelemetryTopic, deviceCredentials);
|
||||||
@ -308,14 +310,14 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getCoapPublishCommand(String protocol, String baseUrl, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
private String getCoapPublishCommand(String protocol, String baseUrl, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
||||||
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity().get(protocol);
|
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity(protocol);
|
||||||
String hostName = getHost(baseUrl, properties);
|
String hostName = getHost(baseUrl, properties);
|
||||||
String port = properties.getPort().isEmpty() ? "" : ":" + properties.getPort();
|
String port = properties.getPort().isEmpty() ? "" : ":" + properties.getPort();
|
||||||
return DeviceConnectivityUtil.getCoapPublishCommand(protocol, hostName, port, deviceCredentials);
|
return DeviceConnectivityUtil.getCoapPublishCommand(protocol, hostName, port, deviceCredentials);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getDockerCoapPublishCommand(String protocol, String baseUrl, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
private String getDockerCoapPublishCommand(String protocol, String baseUrl, DeviceCredentials deviceCredentials) throws URISyntaxException {
|
||||||
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity().get(protocol);
|
DeviceConnectivityInfo properties = deviceConnectivityConfiguration.getConnectivity(protocol);
|
||||||
String host = getHost(baseUrl, properties);
|
String host = getHost(baseUrl, properties);
|
||||||
String port = properties.getPort().isEmpty() ? "" : ":" + properties.getPort();
|
String port = properties.getPort().isEmpty() ? "" : ":" + properties.getPort();
|
||||||
return DeviceConnectivityUtil.getDockerCoapPublishCommand(protocol, host, port, deviceCredentials);
|
return DeviceConnectivityUtil.getDockerCoapPublishCommand(protocol, host, port, deviceCredentials);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user