Skip to content

Commit 392b09d

Browse files
authored
Merge pull request #1645 from samson0v/master
Fixed TLS + Access Token connection type
2 parents 0595670 + be30caa commit 392b09d

File tree

2 files changed

+44
-32
lines changed

2 files changed

+44
-32
lines changed

thingsboard_gateway/gateway/tb_client.py

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -166,30 +166,7 @@ def _create_mqtt_client(self, credentials):
166166
else:
167167
self.__client_id = str(credentials["clientId"])
168168

169-
rate_limits_config = {}
170-
if self.__config.get('messagesRateLimits'):
171-
rate_limits_config['messages_rate_limit'] = self.__config['messagesRateLimits']
172-
if self.__config.get('telemetryRateLimits'):
173-
rate_limits_config['telemetry_rate_limit'] = self.__config['rateLimits']
174-
if self.__config.get('telemetryDpRateLimits'):
175-
rate_limits_config['telemetry_dp_rate_limit'] = self.__config['dpRateLimits']
176-
177-
if self.__config.get('deviceMessagesRateLimits'):
178-
rate_limits_config['device_messages_rate_limit'] = self.__config['deviceMessagesRateLimits']
179-
if self.__config.get('deviceTelemetryRateLimits'):
180-
rate_limits_config['device_telemetry_rate_limit'] = self.__config['deviceRateLimits']
181-
if self.__config.get('deviceTelemetryDpRateLimits'):
182-
rate_limits_config['device_telemetry_dp_rate_limit'] = self.__config['deviceDpRateLimits']
183-
184-
if 'rate_limit' in inspect.signature(TBGatewayMqttClient.__init__).parameters:
185-
rate_limits_config = {}
186-
if self.__config.get('rateLimits'):
187-
rate_limits_config['rate_limit'] = 'DEFAULT_RATE_LIMIT' if self.__config.get(
188-
'rateLimits') == 'DEFAULT_TELEMETRY_RATE_LIMIT' else self.__config['rateLimits']
189-
if ('dp_rate_limit' in inspect.signature(TBGatewayMqttClient.__init__).parameters and
190-
self.__config.get('dpRateLimits')):
191-
rate_limits_config['dp_rate_limit'] = 'DEFAULT_RATE_LIMIT' if self.__config[
192-
'dpRateLimits'] == 'DEFAULT_TELEMETRY_DP_RATE_LIMIT' else self.__config['dpRateLimits']
169+
rate_limits_config = self.__get_rate_limit_config()
193170

194171
if rate_limits_config:
195172
self.client = TBGatewayMqttClient(self.__host, self.__port, self.__username, self.__password, self,
@@ -225,14 +202,6 @@ def _create_mqtt_client(self, credentials):
225202
cert_required = CERT_REQUIRED if (self.__ca_cert and
226203
self.__cert) else ssl.CERT_OPTIONAL if self.__cert else ssl.CERT_NONE
227204

228-
# if self.__ca_cert is None:
229-
# self.__logger.info("CA certificate is not provided. Using system CA certificates.")
230-
# self.__ca_cert = TBUtility.get_path_to_ca_certificates()
231-
# if self.__ca_cert is None:
232-
# self.__logger.error("CA certificate is not provided and system CA certificates are not found. "
233-
# "Will not be able to verify the server. You can set caCert in the configuration.")
234-
# cert_required = ssl.CERT_NONE
235-
236205
self.client._client.tls_set(ca_certs=self.__ca_cert,
237206
certfile=self.__cert,
238207
keyfile=self.__private_key,
@@ -244,6 +213,34 @@ def _create_mqtt_client(self, credentials):
244213
if self.__logger.isEnabledFor(10):
245214
self.client._client.enable_logger(self.__logger) # noqa pylint: disable=protected-access
246215

216+
def __get_rate_limit_config(self):
217+
rate_limits_config = {}
218+
if self.__config.get('messagesRateLimits'):
219+
rate_limits_config['messages_rate_limit'] = self.__config['messagesRateLimits']
220+
if self.__config.get('telemetryRateLimits'):
221+
rate_limits_config['telemetry_rate_limit'] = self.__config['rateLimits']
222+
if self.__config.get('telemetryDpRateLimits'):
223+
rate_limits_config['telemetry_dp_rate_limit'] = self.__config['dpRateLimits']
224+
225+
if self.__config.get('deviceMessagesRateLimits'):
226+
rate_limits_config['device_messages_rate_limit'] = self.__config['deviceMessagesRateLimits']
227+
if self.__config.get('deviceTelemetryRateLimits'):
228+
rate_limits_config['device_telemetry_rate_limit'] = self.__config['deviceRateLimits']
229+
if self.__config.get('deviceTelemetryDpRateLimits'):
230+
rate_limits_config['device_telemetry_dp_rate_limit'] = self.__config['deviceDpRateLimits']
231+
232+
if 'rate_limit' in inspect.signature(TBGatewayMqttClient.__init__).parameters:
233+
rate_limits_config = {}
234+
if self.__config.get('rateLimits'):
235+
rate_limits_config['rate_limit'] = 'DEFAULT_RATE_LIMIT' if self.__config.get(
236+
'rateLimits') == 'DEFAULT_TELEMETRY_RATE_LIMIT' else self.__config['rateLimits']
237+
if ('dp_rate_limit' in inspect.signature(TBGatewayMqttClient.__init__).parameters and
238+
self.__config.get('dpRateLimits')):
239+
rate_limits_config['dp_rate_limit'] = 'DEFAULT_RATE_LIMIT' if self.__config[
240+
'dpRateLimits'] == 'DEFAULT_TELEMETRY_DP_RATE_LIMIT' else self.__config['dpRateLimits']
241+
242+
return rate_limits_config
243+
247244
def __get_path_to_cert(self, filename):
248245
if exists(self.__config_folder_path + filename):
249246
return self.__config_folder_path + filename

thingsboard_gateway/tb_utility/tb_gateway_remote_configurator.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,9 @@ def _apply_connection_config(self, config) -> bool:
750750

751751
previous_rate_limits = self._gateway.tb_client.get_rate_limits()
752752

753+
# check if security type is tlsAccessToken
754+
config = self.__check_and_process_tls_access_token(config)
755+
753756
while not self._gateway.stopped and not connection_state:
754757
self._gateway.__subscribed_to_rpc_topics = False
755758
if use_new_config:
@@ -783,6 +786,18 @@ def _apply_connection_config(self, config) -> bool:
783786
self._revert_connection()
784787
return False
785788

789+
def __check_and_process_tls_access_token(self, config):
790+
if config.get('security', {}).get('type') == 'tlsAccessToken':
791+
cert_content = config['security']['caCert']
792+
793+
ca_cert_path = self._gateway.get_config_path() + 'ca.pem'
794+
with open(ca_cert_path, 'w') as file:
795+
file.write(cert_content)
796+
797+
config['security']['caCert'] = ca_cert_path
798+
799+
return config
800+
786801
def _revert_connection(self):
787802
try:
788803
self.__log.warning("Remote general configuration will be restored.")

0 commit comments

Comments
 (0)