Класс QOpcUaGdsClient
Обрабатывает взаимодействие с сервером GDS. Подробнее...
| Заголовок: | #include <QOpcUaGdsClient> |
| qmake: | QT += opcua |
| С тех пор: | Qt 5.14 |
| Наследует: | QObject |
Публичные типы
| Перечисление | Ошибка { БезОшибок, НеверныйБэкэнд, НеверныйКонечнаяТочка, ОшибкаПодключения, УзелКаталогаНеНайден, …, НеУдалосьПолучитьСертификат } |
| Перечисление | Состояние { Неактивно, БэкэндИнициализирован, Подключение, Подключено, РегистрацияПриложения, …, Ошибка } |
Публичные функции
| QOpcUaGdsClient(QObject *parent = nullptr) | |
| виртуальный | ~QOpcUaGdsClient() |
| QString | applicationId() const |
| const QOpcUaApplicationIdentity & | applicationIdentity() const |
| const QOpcUaApplicationRecordDataType & | applicationRecord() const |
| const QString & | backend() const |
| int | certificateCheckInterval() const |
| const QOpcUaX509DistinguishedName & | distinguishedNameCertificateSigningRequestPreset() const |
| const QString & | dnsCertificateSigningRequestPreset() const |
| const QOpcUaEndpointDescription & | endpoint() const |
| QOpcUaGdsClient::Ошибка | error() const |
| const QOpcUaPkiConfiguration & | pkiConfiguration() const |
| void | setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity) |
| void | setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord) |
| void | setBackend(const QString &backend) |
| void | setCertificateCheckInterval(int interval) |
| void | setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns) |
| void | setEndpoint(const QOpcUaEndpointDescription &endpoint) |
| void | setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig) |
| void | setTrustListUpdateInterval(int interval) |
| void | start() |
| QOpcUaGdsClient::Состояние | state() const |
| int | trustListUpdateInterval() const |
| void | unregisterApplication() |
Сигналы
| void | applicationRegistered() |
| void | authenticationRequired(QOpcUaAuthenticationInformation &authInfo) |
| void | certificateGroupsReceived(QStringList certificateGroups) |
| void | certificateUpdateRequired() |
| void | certificateUpdated() |
| void | errorChanged(QOpcUaGdsClient::Ошибка error) |
| void | stateChanged(QOpcUaGdsClient::Состояние state) |
| void | trustListUpdated() |
| void | unregistered() |
Подробное описание
Этот класс в настоящее время доступен как технологический предварительный просмотр, поэтому API и функциональность, предоставляемые классом, могут быть изменены в любое время без предварительного уведомления.
Этот класс обрабатывает все необходимые шаги для взаимодействия с сервером GDS. Получив информацию о приложении, он выполняет регистрацию на сервере и управляет ключами/сертификатами.
Для участия в защищенной сети требуется лишь несколько деталей.
Регистрация в первый раз требует административных привилегий с использованием имени пользователя и пароля для аутентификации. Все последующие аутентификации выполняются на основе приложения, используя полученный вначале сертификат.
Ожидая успеха всего процесса, вам необходимо подождать сигнала applicationRegistered.
Большинство структур настройки должны быть такими же, как и при подключении к QOpcUaClient впоследствии, и могут быть объединены.
Настройка клиента GDS:
QOpcUaGdsClient c;
// In case the credentials are needed
QObject::connect(&c, &QOpcUaGdsClient::authenticationRequired, [&](QOpcUaAuthenticationInformation &authInfo) {
authInfo.setUsernameAuthentication("root", "secret");
});
// Await success
QObject::connect(&c, &QOpcUaGdsClient::applicationRegistered, [&]() {
qDebug() << "Application" << c.applicationId() << "registered";
});
c.setBackend(...);
c.setEndpoint(...);
c.setApplicationIdentity(...);
c.setPkiConfiguration(...);
c.setApplicationRecord(...);
c.setCertificateSigningRequestPresets(...);
c.start(); Документация по типу члена
Перечисление QOpcUaGdsClient::Ошибка
Это перечисление используется для указания ошибок, которые могут возникнуть во время процесса регистрации.
| Константа | Значение | Описание |
|---|---|---|
QOpcUaGdsClient::Error::NoError |
0 |
Всё в порядке |
QOpcUaGdsClient::Error::InvalidBackend |
1 |
Не удалось создать бэкенд. Строка бэкенда не соответствует ни одному бэкенду, или не удалось загрузить плагин. |
QOpcUaGdsClient::Error::InvalidEndpoint |
2 |
Указанный конечная точка недействителен. |
QOpcUaGdsClient::Error::ConnectionError |
3 |
Подключение к серверной конечной точке не удалось. |
QOpcUaGdsClient::Error::DirectoryNodeNotFound |
4 |
Узел каталога на сервере не может быть разрешен. |
QOpcUaGdsClient::Error::FailedToRegisterApplication |
5 |
Регистрация приложения не удалась. |
QOpcUaGdsClient::Error::FailedToUnregisterApplication |
6 |
Отмена регистрации приложения не удалась. |
QOpcUaGdsClient::Error::FailedToGetCertificateStatus |
7 |
Не удалось получить состояние текущего сертификата. |
QOpcUaGdsClient::Error::FailedToGetCertificate |
8 |
Не удалось получить сертификат с сервера. |
enum class QOpcUaGdsClient::State
Этот перечисление используется для указания текущего состояния регистрации клиента GDS.
| Константа | Значение | Описание |
|---|---|---|
QOpcUaGdsClient::State::Idle |
0 |
Клиент еще не был запущен. |
QOpcUaGdsClient::State::BackendInstantiated |
1 |
Бэкенд был создан. |
QOpcUaGdsClient::State::Connecting |
2 |
Устанавливается соединение с сервером. |
QOpcUaGdsClient::State::Connected |
3 |
Соединение с серверной конечной точкой выполнено успешно. |
QOpcUaGdsClient::State::RegisteringApplication |
4 |
Приложение регистрируется на сервере. |
QOpcUaGdsClient::State::ApplicationRegistered |
5 |
Регистрация приложения на сервере выполнена успешно. |
QOpcUaGdsClient::State::Error |
6 |
Произошла ошибка. См. возвращаемое значение error() и вывод в терминале для получения дополнительных сведений. |
Документация по функциям-членам
QOpcUaGdsClient::QOpcUaGdsClient(QObject *parent = nullptr)
Создает клиент GDS с parent в качестве родительского объекта.
[signal] void QOpcUaGdsClient::applicationRegistered()
Этот сигнал испускается, когда приложение было успешно зарегистрировано.
[signal] void QOpcUaGdsClient::authenticationRequired(QOpcUaAuthenticationInformation &authInfo)
Этот сигнал испускается, когда клиент GDS пытается выполнить аутентификацию с сервером в первый раз, требующую административных привилегий.
authInfo должен быть заполнен действительной информацией об аутентификации. Этот слот не должен использоваться при переходе между потоками.
[signal] void QOpcUaGdsClient::certificateGroupsReceived(QStringList certificateGroups)
Этот сигнал испускается, когда клиент GDS получает новый список certificateGroups для этого приложения.
[signal] void QOpcUaGdsClient::certificateUpdateRequired()
Этот сигнал испускается, когда клиент GDS обнаруживает, что необходимо обновить текущий используемый сертификат.
Это может быть вызвано сервером, запрашивающим у клиента обновление сертификата, когда срок действия сертификата истек, или если сертификат самоподписанный.
Обновление сертификата обрабатывается автоматически. Этот сигнал служит только для информирования о предстоящем обновлении.
[signal] void QOpcUaGdsClient::certificateUpdated()
Этот сигнал испускается, когда клиент GDS получил новый сертификат, который был сохранён на диске.
[signal] void QOpcUaGdsClient::errorChanged(QOpcUaGdsClient::Error error)
Этот сигнал испускается, когда произошла ошибка error.
[signal] void QOpcUaGdsClient::stateChanged(QOpcUaGdsClient::State state)
Этот сигнал испускается, когда внутреннее состояние клиента изменяется. state указывает новое состояние.
[signal] void QOpcUaGdsClient::trustListUpdated()
Этот сигнал испускается, когда клиент GDS получил новый список доверенных сертификатов с сервера и сохранил его на диск.
[signal] void QOpcUaGdsClient::unregistered()
Этот сигнал испускается, когда клиент GDS отменил регистрацию приложения.
[virtual] QOpcUaGdsClient::~QOpcUaGdsClient()
Удаляет клиент GDS.
QString QOpcUaGdsClient::applicationId() const
Возвращает идентификатор приложения, назначенный сервером.
Это сокращение для получения идентификатора приложения из данных записи приложения.
См. также applicationRecord().
const QOpcUaApplicationIdentity &QOpcUaGdsClient::applicationIdentity() const
Возвращает текущую applicationIdentity.
См. также setApplicationIdentity().
const QOpcUaApplicationRecordDataType &QOpcUaGdsClient::applicationRecord() const
Возвращает данные записи приложения, используемые клиентом.
См. также setApplicationRecord().
const QString &QOpcUaGdsClient::backend() const
Возвращает текущее значение бэкенда.
Если бэкенд был изменён после запуска клиента, он вернёт изменённое значение, но не фактически используемую экземпляр.
См. также setBackend().
int QOpcUaGdsClient::certificateCheckInterval() const
Возвращает интервал в миллисекундах для проверки валидности сертификата клиента.
См. также setCertificateCheckInterval().
const QOpcUaX509DistinguishedName &QOpcUaGdsClient::distinguishedNameCertificateSigningRequestPreset() const
Возвращает предопределённое значение Distinguished Name для запросов на подписание сертификатов.
const QString &QOpcUaGdsClient::dnsCertificateSigningRequestPreset() const
Возвращает предопределённое значение DNS для запросов на подписание сертификатов.
const QOpcUaEndpointDescription &QOpcUaGdsClient::endpoint() const
Возвращает текущее значение конечной точки.
Если конечная точка была изменена после запуска клиента, она вернёт изменённое значение, но не фактически используемую конечную точку.
См. также setEndpoint().
QOpcUaGdsClient::Error QOpcUaGdsClient::error() const
Возвращает текущее состояние ошибки.
const QOpcUaPkiConfiguration &QOpcUaGdsClient::pkiConfiguration() const
Возвращает текущую pkiConfiguration.
См. также setPkiConfiguration().
void QOpcUaGdsClient::setApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity)
Устанавливает идентификатор приложения appIdentity, который будет использоваться клиентом.
Этот идентификатор используется для регистрации на сервере GDS. Эта функция должна быть вызвана до запуска клиента GDS. Изменение этого значения впоследствии не оказывает никакого влияния.
См. также applicationIdentity().
void QOpcUaGdsClient::setApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord)
Устанавливает данные записи приложения appRecord, которые будут использоваться клиентом.
Эти данные используются для регистрации на сервере GDS. Эту функцию необходимо вызвать перед запуском клиента GDS.
Большая часть данных идентична данным в идентификаторе приложения. После регистрации присвоенный идентификатор приложения можно получить.
См. также applicationRecord() и setApplicationIdentity.
void QOpcUaGdsClient::setBackend(const QString &backend)
Устанавливает бэкенд, который будет использоваться клиентом для связи с сервером, на backend.
Эту функцию необходимо вызвать перед запуском клиента GDS. Изменение этого параметра после этого не повлияет.
См. также backend(), QOpcUaProvider::availableBackends() и start().
void QOpcUaGdsClient::setCertificateCheckInterval(int interval)
Устанавливает интервал в миллисекундах для проверки действительности сертификата клиента на interval.
См. также certificateCheckInterval().
void QOpcUaGdsClient::setCertificateSigningRequestPresets(const QOpcUaX509DistinguishedName &dn, const QString &dns)
Устанавливает параметры запросов на подпись сертификатов; имя в виде distinguished name (dn) и строку DNS (dns).
При создании запроса на подпись сертификата требуется дополнительная информация, которая не предоставляется идентификатором приложения.
Эту функцию необходимо вызвать перед запуском клиента GDS.
См. также setApplicationIdentity().
void QOpcUaGdsClient::setEndpoint(const QOpcUaEndpointDescription &endpoint)
Устанавливает конечную точку, которая будет использоваться клиентом для связи с сервером, на endpoint.
Эту функцию необходимо вызвать перед запуском клиента GDS. Изменение этого параметра после этого не повлияет.
Связь с сервером GDS возможна только через зашифрованную конечную точку. Использование незашифрованной конечной точки приведет к ошибке.
См. также endpoint().
void QOpcUaGdsClient::setPkiConfiguration(const QOpcUaPkiConfiguration &pkiConfig)
Устанавливает конфигурацию PKI pkiConfig, которая будет использоваться клиентом.
Все сертификаты, ключи и списки доверенных лиц будут использоваться или сохраняться в указанных расположениях. Для использования сертификата, полученного от GDS, необходимо использовать ту же конфигурацию с QOpcUaClient.
Эту функцию необходимо вызвать перед запуском клиента GDS. Изменение этого параметра после этого не повлияет.
См. также pkiConfiguration().
void QOpcUaGdsClient::setTrustListUpdateInterval(int interval)
Устанавливает интервал в миллисекундах для обновления списка доверенных лиц с сервера на interval.
См. также trustListUpdateInterval().
void QOpcUaGdsClient::start()
Запускает процесс клиента.
После настройки всех данных клиент можно запустить.
- setBackend
- setEndpoing
- setApplicationIdentity
- setPkiConfiguration
- setApplicationRecord
- setCertificateSigingRequestPresets
QOpcUaGdsClient::State QOpcUaGdsClient::state() const
Возвращает текущее состояние клиента.
int QOpcUaGdsClient::trustListUpdateInterval() const
Возвращает интервал в миллисекундах для обновления списка доверенных лиц с сервера.
См. также setTrustListUpdateInterval().
void QOpcUaGdsClient::unregisterApplication()
Деактивирует приложение на сервере.
Эту функцию можно использовать, когда приложение должно быть постоянно удалено из сети. Она не требуется при перезагрузке или выключении.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qopcuagdsclient.html