diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-08-28 07:38:15 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-08-28 07:38:15 +0200 |
commit | 3bd9b89de88d3f78b5b3ae780e5ebfbce2c6eeab (patch) | |
tree | 502438d4b9bcaa1275d096ab4c2032d6fe8acef1 | |
parent | ef17976199aabbf660efbc5b0aadf3e42df44aaf (diff) | |
parent | b0d2b6ad7ea5b2026e5fd8e08b44fd500d8b01b3 (diff) |
Merge remote-tracking branch 'origin/5.14' into dev
Change-Id: I98f937cc6de5a25862e7c5e37454e318739ea019
-rw-r--r-- | examples/opcua/opcuaviewer/mainwindow.cpp | 6 | ||||
-rw-r--r-- | examples/opcua/waterpump/waterpump-qml/main.cpp | 11 | ||||
-rw-r--r-- | examples/opcua/waterpump/waterpump-qmlcpp/main.cpp | 11 | ||||
-rw-r--r-- | examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp | 2 | ||||
-rw-r--r-- | src/3rdparty/open62541.pri | 2 | ||||
-rw-r--r-- | src/opcua/doc/src/security.qdoc | 2 | ||||
-rw-r--r-- | tests/auto/auto.pro | 4 | ||||
-rw-r--r-- | tests/auto/security/security.pro | 6 | ||||
-rw-r--r-- | tests/auto/security/tst_security.cpp | 18 |
9 files changed, 49 insertions, 13 deletions
diff --git a/examples/opcua/opcuaviewer/mainwindow.cpp b/examples/opcua/opcuaviewer/mainwindow.cpp index 23e41f0..589cd6d 100644 --- a/examples/opcua/opcuaviewer/mainwindow.cpp +++ b/examples/opcua/opcuaviewer/mainwindow.cpp @@ -192,7 +192,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) //! [PKI Configuration] void MainWindow::setupPkiConfiguration() { - const QString pkidir = QCoreApplication::applicationDirPath() + "/pki"; + QString pkidir = QCoreApplication::applicationDirPath(); +#ifdef Q_OS_WIN + pkidir += "../"; +#endif + pkidir += "/pki"; m_pkiConfig.setClientCertificateFile(pkidir + "/own/certs/opcuaviewer.der"); m_pkiConfig.setPrivateKeyFile(pkidir + "/own/private/opcuaviewer.pem"); m_pkiConfig.setTrustListDirectory(pkidir + "/trusted/certs"); diff --git a/examples/opcua/waterpump/waterpump-qml/main.cpp b/examples/opcua/waterpump/waterpump-qml/main.cpp index 8a1963c..f63614d 100644 --- a/examples/opcua/waterpump/waterpump-qml/main.cpp +++ b/examples/opcua/waterpump/waterpump-qml/main.cpp @@ -89,5 +89,14 @@ int main(int argc, char *argv[]) if (engine.rootObjects().isEmpty()) return EXIT_FAILURE; - return app.exec(); + const int exitCode = QCoreApplication::exec(); + if (serverProcess.state() == QProcess::Running) { +#ifndef Q_OS_WIN + serverProcess.terminate(); +#else + serverProcess.kill(); +#endif + serverProcess.waitForFinished(); + } + return exitCode; } diff --git a/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp b/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp index fb22c3d..35ec80a 100644 --- a/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp +++ b/examples/opcua/waterpump/waterpump-qmlcpp/main.cpp @@ -93,5 +93,14 @@ int main(int argc, char *argv[]) if (engine.rootObjects().isEmpty()) return EXIT_FAILURE; - return app.exec(); + const int exitCode = QCoreApplication::exec(); + if (serverProcess.state() == QProcess::Running) { +#ifndef Q_OS_WIN + serverProcess.terminate(); +#else + serverProcess.kill(); +#endif + serverProcess.waitForFinished(); + } + return exitCode; } diff --git a/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp b/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp index e6ac84e..858282d 100644 --- a/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp +++ b/examples/opcua/waterpump/waterpump-qmlcpp/opcuamachinebackend.cpp @@ -72,7 +72,7 @@ OpcUaMachineBackend::OpcUaMachineBackend(QObject *parent) OpcUaMachineBackend::~OpcUaMachineBackend() { - if (m_client) + if (m_client && m_client->state() == QOpcUaClient::Connected) m_client->disconnectFromEndpoint(); } diff --git a/src/3rdparty/open62541.pri b/src/3rdparty/open62541.pri index 8a4a8f1..011fb8b 100644 --- a/src/3rdparty/open62541.pri +++ b/src/3rdparty/open62541.pri @@ -8,7 +8,7 @@ win32-g++: LIBS += -lws2_32 win32-msvc|winrt: { SOURCES += $$OPEN62541_SOURCES } else { - OPEN62541_CFLAGS += -Wno-unused-parameter -Wno-unused-function -Wno-format -Wno-strict-aliasing -Wno-unused-result + OPEN62541_CFLAGS += -Wno-unused-parameter -Wno-unused-function -Wno-format -Wno-strict-aliasing -Wno-unused-result -std=c99 # The open62541 source code produces lots of warnings. # This custom compiler will disable these warnings just for open62541.c diff --git a/src/opcua/doc/src/security.qdoc b/src/opcua/doc/src/security.qdoc index 472ae3c..a5ad8b4 100644 --- a/src/opcua/doc/src/security.qdoc +++ b/src/opcua/doc/src/security.qdoc @@ -74,7 +74,7 @@ [ req_ext ] basicConstraints = critical, CA:FALSE - keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment, keyCertSign + keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment subjectAltName = URI:urn:foo.com:The%20Qt%20Company:QtOpcUaViewer,DNS:foo.com subjectKeyIdentifier = hash authorityKeyIdentifier=keyid:always,issuer:always diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index a90406f..9d8b7db 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -1,5 +1,5 @@ TEMPLATE = subdirs -SUBDIRS += qopcuaclient connection clientSetupInCpp +SUBDIRS += qopcuaclient connection clientSetupInCpp security QT_FOR_CONFIG += opcua-private @@ -8,5 +8,3 @@ qtHaveModule(qmltest):qtConfig(open62541)|qtConfig(uacpp) { SUBDIRS += declarative } -# This tries to check if the server supports security -qtConfig(mbedtls): SUBDIRS += security diff --git a/tests/auto/security/security.pro b/tests/auto/security/security.pro index d3d203e..bde83f7 100644 --- a/tests/auto/security/security.pro +++ b/tests/auto/security/security.pro @@ -7,3 +7,9 @@ RESOURCES += certs.qrc SOURCES += \ tst_security.cpp + +HEADERS += \ + $$PWD/../../common/backend_environment.h + +INCLUDEPATH += \ + $$PWD/../../common diff --git a/tests/auto/security/tst_security.cpp b/tests/auto/security/tst_security.cpp index d91f702..6b68bc2 100644 --- a/tests/auto/security/tst_security.cpp +++ b/tests/auto/security/tst_security.cpp @@ -34,6 +34,8 @@ ** ****************************************************************************/ +#include "backend_environment.h" + #include <QtOpcUa/QOpcUaAuthenticationInformation> #include <QtOpcUa/QOpcUaClient> #include <QtOpcUa/QOpcUaEndpointDescription> @@ -249,13 +251,14 @@ void Tst_QOpcUaSecurity::initTestCase() qDebug() << endpoint.securityPolicy(); } } - - QVERIFY(m_endpoints.size() > 0); } } void Tst_QOpcUaSecurity::connectAndDisconnectSecureUnencryptedKey() { + if (m_endpoints.size() == 0) + QSKIP("No secure endpoints available"); + QFETCH(QString, backend); QFETCH(QOpcUaEndpointDescription, endpoint); @@ -263,8 +266,8 @@ void Tst_QOpcUaSecurity::connectAndDisconnectSecureUnencryptedKey() QVERIFY2(client, QString("Loading backend failed: %1").arg(backend).toLatin1().data()); if (!client->supportedSecurityPolicies().contains(endpoint.securityPolicy())) - QSKIP(QString("This test is skipped because backend %1 does not support security policy %2").arg( - client->backend()).arg(endpoint.securityPolicy()).toLatin1().constData()); + QSKIP(QString("This test is skipped because backend %1 does not support security policy %2").arg( + client->backend()).arg(endpoint.securityPolicy()).toLatin1().constData()); const QString pkidir = m_pkiData->path(); QOpcUaPkiConfiguration pkiConfig; @@ -319,6 +322,9 @@ void Tst_QOpcUaSecurity::connectAndDisconnectSecureUnencryptedKey() void Tst_QOpcUaSecurity::connectAndDisconnectSecureEncryptedKey() { + if (m_endpoints.size() == 0) + QSKIP("No secure endpoints available"); + QFETCH(QString, backend); QFETCH(QOpcUaEndpointDescription, endpoint); @@ -328,6 +334,9 @@ void Tst_QOpcUaSecurity::connectAndDisconnectSecureEncryptedKey() if (client->backend() == QLatin1String("open62541")) QSKIP(QString("This test is skipped because backend %1 does not support encrypted keys").arg(client->backend()).toLatin1().constData()); + if (!client->supportedSecurityPolicies().contains(endpoint.securityPolicy())) + QSKIP(QString("This test is skipped because backend %1 does not support security policy %2").arg(client->backend()).arg(endpoint.securityPolicy()).toLatin1().constData()); + const QString pkidir = m_pkiData->path(); QOpcUaPkiConfiguration pkiConfig; pkiConfig.setClientCertificateFile(pkidir + "/own/certs/tst_security.der"); @@ -400,6 +409,7 @@ void Tst_QOpcUaSecurity::cleanupTestCase() int main(int argc, char *argv[]) { + updateEnvironment(); QCoreApplication app(argc, argv); QTEST_SET_MAIN_SOURCE_PATH |