1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103:
<?php
declare(strict_types=1);
namespace App\CloudModule\Model;
use GuzzleHttp\Client;
use Nette;
use Nette\Utils\ArrayHash;
use Nette\Utils\FileSystem;
class InteliGlueManager {
use Nette\SmartObject;
private $caPath = '/etc/iqrf-daemon/certs/inteliments-ca.crt';
private $interfaceName = 'MqttMessagingInteliGlue';
public function createMqttInterface(ArrayHash $values) {
$this->downloadCaCertificate();
$interface = [
'Name' => $this->interfaceName,
'Enabled' => true,
'BrokerAddr' => 'ssl://mqtt.inteliglue.com:' . $values['assignedPort'],
'ClientId' => $values['clientId'],
'Persistence' => 1,
'Qos' => 0,
'TopicRequest' => $values['rootTopic'] . '/Iqrf/DpaRequest',
'TopicResponse' => $values['rootTopic'] . '/Iqrf/DpaResponse',
'User' => $values['clientId'],
'Password' => $values['password'],
'EnabledSSL' => true,
'KeepAliveInterval' => 20,
'ConnectTimeout' => 5,
'MinReconnect' => 1,
'MaxReconnect' => 64,
'TrustStore' => $this->caPath,
'KeyStore' => '',
'PrivateKey' => '',
'PrivateKeyPassword' => '',
'EnabledCipherSuites' => '',
'EnableServerCertAuth' => false
];
return ArrayHash::from($interface);
}
public function createBaseService() {
$baseService = [
'Name' => 'BaseServiceForMQTTInteliGlue',
'Messaging' => $this->interfaceName,
'Serializers' => ['JsonSerializer'],
'Properties' => ['AsyncDpaMessage' => true],
];
return ArrayHash::from($baseService);
}
public function downloadCaCertificate() {
$client = new Client();
$caCertUrl = 'https://inteliments.com/static/docs/inteliglue/downloads/DST_Root_CA_X3.pem.txt';
$caCert = $client->request('GET', $caCertUrl)->getBody();
FileSystem::write($this->caPath, $caCert);
}
}