Класс 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 & | бэкэнд() const |
| int | интервалПроверкиСертификатов() const |
| const QOpcUaX509DistinguishedName & | предварительныйОбразецЗапросаПодписиСертификатаDistinguishedName() const |
| const QString & | предварительныйОбразецЗапросаПодписиСертификатаDNS() const |
| const QOpcUaEndpointDescription & | конечнаяТочка() const |
| QOpcUaGdsClient::Ошибка | ошибка() const |
| const QOpcUaPkiConfiguration & | настройкаPKI() const |
| void | установитьApplicationIdentity(const QOpcUaApplicationIdentity &appIdentity) |
| void | установитьApplicationRecord(const QOpcUaApplicationRecordDataType &appRecord) |
| void | установитьБэкэнд(const QString &backend) |
| void | установитьИнтервалПроверкиСертификатов(int interval) |
| void | установитьПредварительныеОбразцыЗапросовПодписиСертификатов(const QOpcUaX509DistinguishedName &dn, const QString &dns) |
| void | установитьКонечнуюТочку(const QOpcUaEndpointDescription &endpoint) |
| void | установитьНастройкуPKI(const QOpcUaPkiConfiguration &pkiConfig) |
| void | установитьИнтервалОбновленияДоверенногоСписка(int interval) |
| void | запустить() |
| QOpcUaGdsClient::Состояние | состояние() const |
| int | интервалОбновленияДоверенногоСписка() const |
| void | отменитьРегистрациюПриложения() |
Сигналы
| void | приложениеЗарегистрировано() |
| void | требуетсяАвторизация(QOpcUaAuthenticationInformation &authInfo) |
| void | полученыГруппыСертификатов(QStringList certificateGroups) |
| void | необходимоОбновитьСертификат() |
| void | сертификатОбновлён() |
| void | измениласьОшибка(QOpcUaGdsClient::Ошибка error) |
| void | состояниеИзменилось(QOpcUaGdsClient::Состояние state) |
| void | доверенныйСписокОбновлён() |
| void | отписано() |
Подробное описание
Этот класс в настоящее время доступен в качестве предварительной технологии, и, следовательно, API и функциональность, предоставляемые классом, могут быть изменены в любое время без предварительного уведомления.
Этот класс обрабатывает все шаги, необходимые для взаимодействия с сервером GDS. Имея информацию об приложении, он выполняет регистрацию на сервере и управление ключами/сертификатами.
Для участия в защищенной сети требуется лишь несколько деталей.
Регистрация впервые требует административных привилегий, используя имя пользователя и пароль для аутентификации. Все последующие аутентификации выполняются на основе приложения, используя полученный первоначально сертификат.
Ожидая успешного выполнения всего процесса, необходимо подождать сигнала приложениеЗарегистрировано.
Большинство структур настройки должны быть такими же, как и при подключении к 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
Возвращает предопределённое значение имени для запросов на подписание сертификатов.
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().
END_OF_DOCUMENT_MARKERvoid 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.1/qopcuagdsclient.html