diff options
Diffstat (limited to 'src/plugins/bearer/networkmanager')
9 files changed, 0 insertions, 2758 deletions
diff --git a/src/plugins/bearer/networkmanager/.prev_CMakeLists.txt b/src/plugins/bearer/networkmanager/.prev_CMakeLists.txt deleted file mode 100644 index df5927024d..0000000000 --- a/src/plugins/bearer/networkmanager/.prev_CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -# Generated from networkmanager.pro. - -##################################################################### -## QNetworkManagerEnginePlugin Plugin: -##################################################################### - -qt_add_plugin(QNetworkManagerEnginePlugin - OUTPUT_NAME qnmbearer - CLASS_NAME QNetworkManagerEnginePlugin - TYPE bearer - SOURCES - main.cpp - qnetworkmanagerengine.cpp qnetworkmanagerengine.h - qnetworkmanagerservice.cpp qnetworkmanagerservice.h - LIBRARIES - Qt::LinuxOfonoSupportPrivate - Qt::NetworkPrivate - PUBLIC_LIBRARIES - Qt::Core - Qt::DBus - Qt::LinuxOfonoSupport - Qt::Network -) - -#### Keys ignored in scope 1:.:.:networkmanager.pro:<TRUE>: -# OTHER_FILES = "networkmanager.json" diff --git a/src/plugins/bearer/networkmanager/CMakeLists.txt b/src/plugins/bearer/networkmanager/CMakeLists.txt deleted file mode 100644 index 8f26a4c86d..0000000000 --- a/src/plugins/bearer/networkmanager/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -# Generated from networkmanager.pro. - -##################################################################### -## QNetworkManagerEnginePlugin Plugin: -##################################################################### - -qt_add_plugin(QNetworkManagerEnginePlugin - OUTPUT_NAME qnmbearer - TYPE bearer - SOURCES - main.cpp - qnetworkmanagerengine.cpp qnetworkmanagerengine.h - qnetworkmanagerservice.cpp qnetworkmanagerservice.h - PUBLIC_LIBRARIES - Qt::Core - Qt::DBus - Qt::LinuxOfonoSupportPrivate - Qt::NetworkPrivate -) - -#### Keys ignored in scope 1:.:.:networkmanager.pro:<TRUE>: -# OTHER_FILES = "networkmanager.json" diff --git a/src/plugins/bearer/networkmanager/main.cpp b/src/plugins/bearer/networkmanager/main.cpp deleted file mode 100644 index 1773abe55b..0000000000 --- a/src/plugins/bearer/networkmanager/main.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qnetworkmanagerengine.h" - -#include <QtNetwork/private/qbearerplugin_p.h> - -#include <QtCore/qdebug.h> - -#ifndef QT_NO_DBUS - -QT_BEGIN_NAMESPACE - -class QNetworkManagerEnginePlugin : public QBearerEnginePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QBearerEngineFactoryInterface" FILE "networkmanager.json") - -public: - QNetworkManagerEnginePlugin(); - ~QNetworkManagerEnginePlugin(); - - QBearerEngine *create(const QString &key) const; -}; - -QNetworkManagerEnginePlugin::QNetworkManagerEnginePlugin() -{ -} - -QNetworkManagerEnginePlugin::~QNetworkManagerEnginePlugin() -{ -} - -QBearerEngine *QNetworkManagerEnginePlugin::create(const QString &key) const -{ - if (key == QLatin1String("networkmanager")) { - QNetworkManagerEngine *engine = new QNetworkManagerEngine; - return engine; - } - - return 0; -} - -QT_END_NAMESPACE - -#include "main.moc" - -#endif // QT_NO_DBUS diff --git a/src/plugins/bearer/networkmanager/networkmanager.json b/src/plugins/bearer/networkmanager/networkmanager.json deleted file mode 100644 index 3d408d5c20..0000000000 --- a/src/plugins/bearer/networkmanager/networkmanager.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": [ "networkmanager" ] -} diff --git a/src/plugins/bearer/networkmanager/networkmanager.pro b/src/plugins/bearer/networkmanager/networkmanager.pro deleted file mode 100644 index 3ca217f974..0000000000 --- a/src/plugins/bearer/networkmanager/networkmanager.pro +++ /dev/null @@ -1,16 +0,0 @@ -TARGET = qnmbearer - -QT = core network-private dbus linuxofono_support_private - -HEADERS += qnetworkmanagerservice.h \ - qnetworkmanagerengine.h - -SOURCES += main.cpp \ - qnetworkmanagerservice.cpp \ - qnetworkmanagerengine.cpp - -OTHER_FILES += networkmanager.json - -PLUGIN_TYPE = bearer -PLUGIN_CLASS_NAME = QNetworkManagerEnginePlugin -load(qt_plugin) diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp deleted file mode 100644 index cba2221587..0000000000 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp +++ /dev/null @@ -1,935 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qnetworkmanagerengine.h" -#include "qnetworkmanagerservice.h" -#include <private/qnetworksession_impl_p.h> - -#include <QtNetwork/private/qnetworkconfiguration_p.h> - -#include <QtNetwork/qnetworksession.h> - -#include <QtCore/qdebug.h> - -#include <QtDBus> -#include <QDBusConnection> -#include <QDBusError> -#include <QDBusInterface> -#include <QDBusMessage> -#include <QDBusReply> - -#ifndef QT_NO_DBUS - -QT_BEGIN_NAMESPACE - -QNetworkManagerEngine::QNetworkManagerEngine(QObject *parent) -: QBearerEngineImpl(parent), - managerInterface(NULL), - systemSettings(NULL), - ofonoManager(NULL), - nmAvailable(false) -{ - qDBusRegisterMetaType<QNmSettingsMap>(); - - nmWatcher = new QDBusServiceWatcher(NM_DBUS_SERVICE,QDBusConnection::systemBus(), - QDBusServiceWatcher::WatchForRegistration | - QDBusServiceWatcher::WatchForUnregistration, this); - connect(nmWatcher, SIGNAL(serviceRegistered(QString)), - this, SLOT(nmRegistered(QString))); - connect(nmWatcher, SIGNAL(serviceUnregistered(QString)), - this, SLOT(nmUnRegistered(QString))); - - ofonoWatcher = new QDBusServiceWatcher("org.ofono",QDBusConnection::systemBus(), - QDBusServiceWatcher::WatchForRegistration | - QDBusServiceWatcher::WatchForUnregistration, this); - connect(ofonoWatcher, SIGNAL(serviceRegistered(QString)), - this, SLOT(ofonoRegistered(QString))); - connect(ofonoWatcher, SIGNAL(serviceUnregistered(QString)), - this, SLOT(ofonoUnRegistered(QString))); - - QDBusConnectionInterface *interface = QDBusConnection::systemBus().interface(); - - if (!interface) return; - - if (interface->isServiceRegistered("org.ofono")) - QMetaObject::invokeMethod(this, "ofonoRegistered", Qt::QueuedConnection); - - if (interface->isServiceRegistered(NM_DBUS_SERVICE)) - QMetaObject::invokeMethod(this, "nmRegistered", Qt::QueuedConnection); -} - -QNetworkManagerEngine::~QNetworkManagerEngine() -{ - qDeleteAll(connections); - connections.clear(); - qDeleteAll(accessPoints); - accessPoints.clear(); - qDeleteAll(wirelessDevices); - wirelessDevices.clear(); - qDeleteAll(activeConnectionsList); - activeConnectionsList.clear(); - qDeleteAll(interfaceDevices); - interfaceDevices.clear(); - - connectionInterfaces.clear(); - - qDeleteAll(ofonoContextManagers); - ofonoContextManagers.clear(); - - qDeleteAll(wiredDevices); - wiredDevices.clear(); -} - -void QNetworkManagerEngine::initialize() -{ - if (nmAvailable) - setupConfigurations(); -} - -void QNetworkManagerEngine::setupConfigurations() -{ - QMutexLocker locker(&mutex); - // Get active connections. - const auto acPaths = managerInterface->activeConnections(); - for (const QDBusObjectPath &acPath : acPaths) { - - if (activeConnectionsList.contains(acPath.path())) - continue; - - QNetworkManagerConnectionActive *activeConnection = - new QNetworkManagerConnectionActive(acPath.path(),this); - activeConnectionsList.insert(acPath.path(), activeConnection); - connect(activeConnection, SIGNAL(propertiesChanged(QMap<QString,QVariant>)), - this, SLOT(activeConnectionPropertiesChanged(QMap<QString,QVariant>))); - - QStringList devices = activeConnection->devices(); - if (!devices.isEmpty()) { - QNetworkManagerInterfaceDevice device(devices.at(0),this); - connectionInterfaces.insert(activeConnection->connection().path(),device.networkInterface()); - } - } - - // Get connections. - const auto settingsPaths = systemSettings->listConnections(); - for (const QDBusObjectPath &settingsPath : settingsPaths) { - locker.unlock(); - if (!hasIdentifier(settingsPath.path())) - newConnection(settingsPath, systemSettings); //add system connection configs - locker.relock(); - } - - Q_EMIT updateCompleted(); -} - -bool QNetworkManagerEngine::networkManagerAvailable() const -{ - return nmAvailable; -} - -QString QNetworkManagerEngine::getInterfaceFromId(const QString &settingsPath) -{ - return connectionInterfaces.value(settingsPath); -} - -bool QNetworkManagerEngine::hasIdentifier(const QString &id) -{ - QMutexLocker locker(&mutex); - return accessPointConfigurations.contains(id); -} - -void QNetworkManagerEngine::connectToId(const QString &id) -{ - QMutexLocker locker(&mutex); - - QNetworkManagerSettingsConnection *connection = connectionFromId(id); - - if (!connection) - return; - - NMDeviceType connectionType = connection->getType(); - - QString dbusDevicePath; - const QString settingsPath = connection->path(); - QString specificPath = configuredAccessPoints.key(settingsPath); - - if (isConnectionActive(settingsPath)) - return; - - for (auto i = interfaceDevices.cbegin(), end = interfaceDevices.cend(); i != end; ++i) { - const auto type = i.value()->deviceType(); - if (type == DEVICE_TYPE_ETHERNET || type == DEVICE_TYPE_WIFI || type == DEVICE_TYPE_MODEM) { - if (type == connectionType) { - dbusDevicePath = i.key(); - break; - } - } - } - - if (specificPath.isEmpty()) - specificPath = "/"; - - managerInterface->activateConnection(QDBusObjectPath(settingsPath), - QDBusObjectPath(dbusDevicePath), QDBusObjectPath(specificPath)); -} - -void QNetworkManagerEngine::disconnectFromId(const QString &id) -{ - QMutexLocker locker(&mutex); - - QNetworkManagerSettingsConnection *connection = connectionFromId(id); - - if (!connection) - return; - - QNmSettingsMap map = connection->getSettings(); - bool connectionAutoconnect = map.value("connection").value("autoconnect",true).toBool(); //if not present is true !! - if (connectionAutoconnect) { //autoconnect connections will simply be reconnected by nm - emit connectionError(id, QBearerEngineImpl::OperationNotSupported); - return; - } - - for (auto i = activeConnectionsList.cbegin(), end = activeConnectionsList.cend(); i != end; ++i) { - if (id == i.value()->connection().path() && accessPointConfigurations.contains(id)) { - managerInterface->deactivateConnection(QDBusObjectPath(i.key())); - break; - } - } -} - -void QNetworkManagerEngine::requestUpdate() -{ - if (managerInterface && managerInterface->wirelessEnabled()) { - for (auto *wirelessDevice : qAsConst(wirelessDevices)) - wirelessDevice->requestScan(); - } - QMetaObject::invokeMethod(this, "updateCompleted", Qt::QueuedConnection); -} - -void QNetworkManagerEngine::interfacePropertiesChanged(const QMap<QString, QVariant> &properties) -{ - QMutexLocker locker(&mutex); - - for (auto i = properties.cbegin(), end = properties.cend(); i != end; ++i) { - if (i.key() == QLatin1String("ActiveConnections")) { - // Active connections changed, update configurations. - - const auto activeConnections = qdbus_cast<QList<QDBusObjectPath> >(qvariant_cast<QDBusArgument>(i.value())); - - QStringList identifiers = accessPointConfigurations.keys(); - QStringList priorActiveConnections = activeConnectionsList.keys(); - - for (const QDBusObjectPath &acPath : activeConnections) { - priorActiveConnections.removeOne(acPath.path()); - QNetworkManagerConnectionActive *activeConnection = - activeConnectionsList.value(acPath.path()); - - if (!activeConnection) { - activeConnection = new QNetworkManagerConnectionActive(acPath.path(),this); - activeConnectionsList.insert(acPath.path(), activeConnection); - - connect(activeConnection, SIGNAL(propertiesChanged(QMap<QString,QVariant>)), - this, SLOT(activeConnectionPropertiesChanged(QMap<QString,QVariant>))); - } - - const QString id = activeConnection->connection().path(); - - identifiers.removeOne(id); - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - if (ptr) { - ptr->mutex.lock(); - if (activeConnection->state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED && - (ptr->state & QNetworkConfiguration::Active) != QNetworkConfiguration::Active) { - - ptr->state |= QNetworkConfiguration::Active; - - if (activeConnectionsList.value(id) && activeConnectionsList.value(id)->defaultRoute() - && managerInterface->state() < QNetworkManagerInterface::NM_STATE_CONNECTED_GLOBAL) { - ptr->purpose = QNetworkConfiguration::PrivatePurpose; - } - ptr->mutex.unlock(); - - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); - } else { - ptr->mutex.unlock(); - } - } - } - - while (!priorActiveConnections.isEmpty()) - delete activeConnectionsList.take(priorActiveConnections.takeFirst()); - - while (!identifiers.isEmpty()) { - QNetworkConfigurationPrivatePointer ptr = - accessPointConfigurations.value(identifiers.takeFirst()); - - ptr->mutex.lock(); - if ((ptr->state & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) { - QNetworkConfiguration::StateFlags flag = QNetworkConfiguration::Defined; - ptr->state = (flag | QNetworkConfiguration::Discovered); - ptr->mutex.unlock(); - - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); - } else { - ptr->mutex.unlock(); - } - } - } - } -} - -void QNetworkManagerEngine::activeConnectionPropertiesChanged(const QMap<QString, QVariant> &properties) -{ - QMutexLocker locker(&mutex); - - Q_UNUSED(properties) - - QNetworkManagerConnectionActive *activeConnection = qobject_cast<QNetworkManagerConnectionActive *>(sender()); - - if (!activeConnection) - return; - - const QString id = activeConnection->connection().path(); - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - if (ptr) { - if (properties.contains(QStringLiteral("State"))) { - ptr->mutex.lock(); - if (properties.value("State").toUInt() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) { - QStringList devices = activeConnection->devices(); - if (!devices.isEmpty()) { - QNetworkManagerInterfaceDevice device(devices.at(0),this); - connectionInterfaces.insert(id,device.networkInterface()); - } - - ptr->state |= QNetworkConfiguration::Active; - ptr->mutex.unlock(); - - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); - } else { - connectionInterfaces.remove(id); - ptr->mutex.unlock(); - } - } - } -} - -void QNetworkManagerEngine::deviceConnectionsChanged(const QStringList &connectionsList) -{ - QMutexLocker locker(&mutex); - for (int i = 0; i < connections.count(); ++i) { - if (connectionsList.contains(connections.at(i)->path())) - continue; - - const QString settingsPath = connections.at(i)->path(); - - QNetworkConfigurationPrivatePointer ptr = - accessPointConfigurations.value(settingsPath); - ptr->mutex.lock(); - QNetworkConfiguration::StateFlags flag = QNetworkConfiguration::Defined; - ptr->state = (flag | QNetworkConfiguration::Discovered); - ptr->mutex.unlock(); - - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); - Q_EMIT updateCompleted(); - } -} - -void QNetworkManagerEngine::wiredCarrierChanged(bool carrier) -{ - QNetworkManagerInterfaceDeviceWired *deviceWired = qobject_cast<QNetworkManagerInterfaceDeviceWired *>(sender()); - if (!deviceWired) - return; - QMutexLocker locker(&mutex); - const auto settingsPaths = systemSettings->listConnections(); - for (const QDBusObjectPath &settingsPath : settingsPaths) { - for (int i = 0; i < connections.count(); ++i) { - QNetworkManagerSettingsConnection *connection = connections.at(i); - if (connection->getType() == DEVICE_TYPE_ETHERNET - && settingsPath.path() == connection->path()) { - QNetworkConfigurationPrivatePointer ptr = - accessPointConfigurations.value(settingsPath.path()); - - if (ptr) { - ptr->mutex.lock(); - if (carrier) - ptr->state |= QNetworkConfiguration::Discovered; - else - ptr->state = QNetworkConfiguration::Defined; - ptr->mutex.unlock(); - locker.unlock(); - emit configurationChanged(ptr); - return; - } - } - } - } -} - -void QNetworkManagerEngine::newConnection(const QDBusObjectPath &path, - QNetworkManagerSettings *settings) -{ - QMutexLocker locker(&mutex); - if (!settings) - settings = qobject_cast<QNetworkManagerSettings *>(sender()); - - if (!settings) { - return; - } - - QNetworkManagerSettingsConnection *connection = - new QNetworkManagerSettingsConnection(settings->service(), - path.path(),this); - const QString settingsPath = connection->path(); - if (accessPointConfigurations.contains(settingsPath)) { - return; - } - - connections.append(connection); - - connect(connection,SIGNAL(removed(QString)),this,SLOT(removeConnection(QString))); - connect(connection,SIGNAL(updated()),this,SLOT(updateConnection())); - connection->setConnections(); - - NMDeviceType deviceType = connection->getType(); - - if (deviceType == DEVICE_TYPE_WIFI) { - QString apPath; - for (int i = 0; i < accessPoints.count(); ++i) { - if (connection->getSsid() == accessPoints.at(i)->ssid()) { - // remove the corresponding accesspoint from configurations - apPath = accessPoints.at(i)->path(); - QNetworkConfigurationPrivatePointer ptr - = accessPointConfigurations.take(apPath); - if (ptr) { - locker.unlock(); - emit configurationRemoved(ptr); - locker.relock(); - } - } - } - if (!configuredAccessPoints.contains(settingsPath)) - configuredAccessPoints.insert(apPath,settingsPath); - } - - QNetworkConfigurationPrivate *cpPriv = - parseConnection(settingsPath, connection->getSettings()); - - // Check if connection is active. - if (isConnectionActive(settingsPath)) - cpPriv->state |= QNetworkConfiguration::Active; - - if (deviceType == DEVICE_TYPE_ETHERNET) { - for (auto interfaceDevice : qAsConst(interfaceDevices)) { - if (interfaceDevice->deviceType() == deviceType) { - auto *wiredDevice = wiredDevices.value(interfaceDevice->path()); - if (wiredDevice && wiredDevice->carrier()) { - cpPriv->state |= QNetworkConfiguration::Discovered; - } - } - } - } - - QNetworkConfigurationPrivatePointer ptr(cpPriv); - accessPointConfigurations.insert(ptr->id, ptr); - locker.unlock(); - emit configurationAdded(ptr); -} - -bool QNetworkManagerEngine::isConnectionActive(const QString &settingsPath) const -{ - for (QNetworkManagerConnectionActive *activeConnection : activeConnectionsList) { - if (activeConnection->connection().path() == settingsPath) { - const auto state = activeConnection->state(); - if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATING - || state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) { - return true; - } else { - break; - } - } - } - - QNetworkManagerSettingsConnection *settingsConnection = connectionFromId(settingsPath); - if (settingsConnection && settingsConnection->getType() == DEVICE_TYPE_MODEM) { - return isActiveContext(settingsConnection->path()); - } - - return false; -} - -void QNetworkManagerEngine::removeConnection(const QString &path) -{ - QMutexLocker locker(&mutex); - - QNetworkManagerSettingsConnection *connection = - qobject_cast<QNetworkManagerSettingsConnection *>(sender()); - - if (!connection) - return; - - connection->deleteLater(); - connections.removeAll(connection); - - const QString id = path; - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(id); - - if (ptr) { - locker.unlock(); - emit configurationRemoved(ptr); - locker.relock(); - } - - // add base AP back into configurations - - // removed along with all AP props code... -} - -void QNetworkManagerEngine::updateConnection() -{ - QMutexLocker locker(&mutex); - - QNetworkManagerSettingsConnection *connection = - qobject_cast<QNetworkManagerSettingsConnection *>(sender()); - if (!connection) - return; - const QString settingsPath = connection->path(); - - QNetworkConfigurationPrivate *cpPriv = parseConnection(settingsPath, connection->getSettings()); - - // Check if connection is active. - const auto acPaths = managerInterface->activeConnections(); - for (const QDBusObjectPath &acPath : acPaths) { - QNetworkManagerConnectionActive activeConnection(acPath.path()); - - if (activeConnection.connection().path() == settingsPath && - activeConnection.state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) { - cpPriv->state |= QNetworkConfiguration::Active; - break; - } - } - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(cpPriv->id); - - ptr->mutex.lock(); - - ptr->isValid = cpPriv->isValid; - ptr->name = cpPriv->name; - ptr->id = cpPriv->id; - ptr->state = cpPriv->state; - - ptr->mutex.unlock(); - - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); - delete cpPriv; -} - -void QNetworkManagerEngine::activationFinished(QDBusPendingCallWatcher *watcher) -{ - QMutexLocker locker(&mutex); - QDBusPendingReply<QDBusObjectPath> reply(*watcher); - watcher->deleteLater(); - - if (!reply.isError()) { - QDBusObjectPath result = reply.value(); - - QNetworkManagerConnectionActive activeConnection(result.path()); - - const QString id = activeConnection.connection().path(); - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - if (ptr) { - ptr->mutex.lock(); - if (activeConnection.state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED && - ptr->state != QNetworkConfiguration::Active) { - ptr->state |= QNetworkConfiguration::Active; - ptr->mutex.unlock(); - - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); - } else { - ptr->mutex.unlock(); - } - } - } -} - -QNetworkConfigurationPrivate *QNetworkManagerEngine::parseConnection(const QString &settingsPath, - const QNmSettingsMap &map) -{ - QMutexLocker locker(&mutex); - QNetworkConfigurationPrivate *cpPriv = new QNetworkConfigurationPrivate; - cpPriv->name = map.value("connection").value("id").toString(); - cpPriv->isValid = true; - cpPriv->id = settingsPath; - cpPriv->type = QNetworkConfiguration::InternetAccessPoint; - - cpPriv->purpose = QNetworkConfiguration::PublicPurpose; - - cpPriv->state = QNetworkConfiguration::Defined; - const QString connectionType = map.value("connection").value("type").toString(); - - if (connectionType == QLatin1String("802-3-ethernet")) { - cpPriv->bearerType = QNetworkConfiguration::BearerEthernet; - - const auto devicePaths = managerInterface->getDevices(); - for (const QDBusObjectPath &devicePath : devicePaths) { - QNetworkManagerInterfaceDevice device(devicePath.path(),this); - if (device.deviceType() == DEVICE_TYPE_ETHERNET) { - QNetworkManagerInterfaceDeviceWired *wiredDevice = wiredDevices.value(device.path()); - if (wiredDevice && wiredDevice->carrier()) { - cpPriv->state |= QNetworkConfiguration::Discovered; - break; - } - } - } - } else if (connectionType == QLatin1String("802-11-wireless")) { - cpPriv->bearerType = QNetworkConfiguration::BearerWLAN; - - const QString connectionSsid = map.value("802-11-wireless").value("ssid").toString(); - for (int i = 0; i < accessPoints.count(); ++i) { - if (connectionSsid == accessPoints.at(i)->ssid() - && map.value("802-11-wireless").value("seen-bssids").toStringList().contains(accessPoints.at(i)->hwAddress())) { - cpPriv->state |= QNetworkConfiguration::Discovered; - if (!configuredAccessPoints.contains(accessPoints.at(i)->path())) { - configuredAccessPoints.insert(accessPoints.at(i)->path(),settingsPath); - - const QString accessPointId = accessPoints.at(i)->path(); - QNetworkConfigurationPrivatePointer ptr = - accessPointConfigurations.take(accessPointId); - - if (ptr) { - locker.unlock(); - emit configurationRemoved(ptr); - locker.relock(); - } - } - break; - } - } - } else if (connectionType == QLatin1String("gsm")) { - - const QString connectionPath = map.value("connection").value("id").toString(); - cpPriv->name = contextName(connectionPath); - cpPriv->bearerType = currentBearerType(connectionPath); - - if (ofonoManager && ofonoManager->isValid()) { - const QString contextPart = connectionPath.section('/', -1); - for (auto i = ofonoContextManagers.cbegin(), end = ofonoContextManagers.cend(); i != end; ++i) { - const QString path = i.key() + QLatin1Char('/') +contextPart; - if (isActiveContext(path)) { - cpPriv->state |= QNetworkConfiguration::Active; - break; - } - } - } - } - - return cpPriv; -} - -bool QNetworkManagerEngine::isActiveContext(const QString &contextPath) const -{ - if (ofonoManager && ofonoManager->isValid()) { - const QString contextPart = contextPath.section('/', -1); - for (QOfonoDataConnectionManagerInterface *iface : ofonoContextManagers) { - const PathPropertiesList list = iface->contextsWithProperties(); - for (int i = 0; i < list.size(); ++i) { - if (list.at(i).path.path().contains(contextPart)) { - return list.at(i).properties.value(QStringLiteral("Active")).toBool(); - - } - } - } - } - return false; -} - -QNetworkManagerSettingsConnection *QNetworkManagerEngine::connectionFromId(const QString &id) const -{ - for (int i = 0; i < connections.count(); ++i) { - QNetworkManagerSettingsConnection *connection = connections.at(i); - if (id == connection->path()) - return connection; - } - - return 0; -} - -QNetworkSession::State QNetworkManagerEngine::sessionStateForId(const QString &id) -{ - QMutexLocker locker(&mutex); - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - - if (!ptr) - return QNetworkSession::Invalid; - - if (!ptr->isValid) - return QNetworkSession::Invalid; - - for (QNetworkManagerConnectionActive *activeConnection : qAsConst(activeConnectionsList)) { - const QString identifier = activeConnection->connection().path(); - - if (id == identifier) { - switch (activeConnection->state()) { - case 0: - return QNetworkSession::Disconnected; - case 1: - return QNetworkSession::Connecting; - case 2: - return QNetworkSession::Connected; - } - } - } - - if ((ptr->state & QNetworkConfiguration::Discovered) == QNetworkConfiguration::Discovered) - return QNetworkSession::Disconnected; - else if ((ptr->state & QNetworkConfiguration::Defined) == QNetworkConfiguration::Defined) - return QNetworkSession::NotAvailable; - else if ((ptr->state & QNetworkConfiguration::Undefined) == QNetworkConfiguration::Undefined) - return QNetworkSession::NotAvailable; - - return QNetworkSession::Invalid; -} - -quint64 QNetworkManagerEngine::bytesWritten(const QString &id) -{ - QMutexLocker locker(&mutex); - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - if (ptr && (ptr->state & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) { - const QString networkInterface = connectionInterfaces.value(id); - if (!networkInterface.isEmpty()) { - const QString devFile = QLatin1String("/sys/class/net/") + - networkInterface + - QLatin1String("/statistics/tx_bytes"); - - quint64 result = Q_UINT64_C(0); - - QFile tx(devFile); - if (tx.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream in(&tx); - in >> result; - tx.close(); - } - - return result; - } - } - - return Q_UINT64_C(0); -} - -quint64 QNetworkManagerEngine::bytesReceived(const QString &id) -{ - QMutexLocker locker(&mutex); - - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - if (ptr && (ptr->state & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) { - const QString networkInterface = connectionInterfaces.value(id); - if (!networkInterface.isEmpty()) { - const QString devFile = QLatin1String("/sys/class/net/") + - networkInterface + - QLatin1String("/statistics/rx_bytes"); - - quint64 result = Q_UINT64_C(0); - - QFile tx(devFile); - if (tx.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream in(&tx); - in >> result; - tx.close(); - } - - return result; - } - } - - return Q_UINT64_C(0); -} - -quint64 QNetworkManagerEngine::startTime(const QString &id) -{ - QMutexLocker locker(&mutex); - - QNetworkManagerSettingsConnection *connection = connectionFromId(id); - if (connection) - return connection->getTimestamp(); - else - return Q_UINT64_C(0); -} - -QNetworkConfigurationManager::Capabilities QNetworkManagerEngine::capabilities() const -{ - return QNetworkConfigurationManager::ForcedRoaming | - QNetworkConfigurationManager::DataStatistics | - QNetworkConfigurationManager::CanStartAndStopInterfaces; -} - -QNetworkSessionPrivate *QNetworkManagerEngine::createSessionBackend() -{ - return new QNetworkSessionPrivateImpl; -} - -QNetworkConfigurationPrivatePointer QNetworkManagerEngine::defaultConfiguration() -{ - for (QNetworkManagerConnectionActive *activeConnection : qAsConst(activeConnectionsList)) { - if ((activeConnection->defaultRoute() || activeConnection->default6Route())) { - return accessPointConfigurations.value(activeConnection->connection().path()); - } - } - - return QNetworkConfigurationPrivatePointer(); -} - -QNetworkConfiguration::BearerType QNetworkManagerEngine::currentBearerType(const QString &id) const -{ - QString contextPart = id.section('/', -1); - for (auto i = ofonoContextManagers.begin(), end = ofonoContextManagers.end(); i != end; ++i) { - QString contextPath = i.key() + QLatin1Char('/') +contextPart; - - if (i.value()->contexts().contains(contextPath)) { - - QString bearer = i.value()->bearer(); - - if (bearer == QLatin1String("gsm")) { - return QNetworkConfiguration::Bearer2G; - } else if (bearer == QLatin1String("edge")) { - return QNetworkConfiguration::Bearer2G; - } else if (bearer == QLatin1String("umts")) { - return QNetworkConfiguration::BearerWCDMA; - } else if (bearer == QLatin1String("hspa") - || bearer == QLatin1String("hsdpa") - || bearer == QLatin1String("hsupa")) { - return QNetworkConfiguration::BearerHSPA; - } else if (bearer == QLatin1String("lte")) { - return QNetworkConfiguration::BearerLTE; - } - } - } - - return QNetworkConfiguration::BearerUnknown; -} - -QString QNetworkManagerEngine::contextName(const QString &path) const -{ - QString contextPart = path.section('/', -1); - for (QOfonoDataConnectionManagerInterface *iface : ofonoContextManagers) { - const PathPropertiesList list = iface->contextsWithProperties(); - for (int i = 0; i < list.size(); ++i) { - if (list.at(i).path.path().contains(contextPart)) { - return list.at(i).properties.value(QStringLiteral("Name")).toString(); - } - } - } - return path; -} - -void QNetworkManagerEngine::nmRegistered(const QString &) -{ - if (ofonoManager) { - delete ofonoManager; - ofonoManager = NULL; - } - managerInterface = new QNetworkManagerInterface(this); - systemSettings = new QNetworkManagerSettings(NM_DBUS_SERVICE, this); - - connect(managerInterface, SIGNAL(activationFinished(QDBusPendingCallWatcher*)), - this, SLOT(activationFinished(QDBusPendingCallWatcher*))); - connect(managerInterface, SIGNAL(propertiesChanged(QMap<QString,QVariant>)), - this, SLOT(interfacePropertiesChanged(QMap<QString,QVariant>))); - managerInterface->setConnections(); - - connect(systemSettings, SIGNAL(newConnection(QDBusObjectPath)), - this, SLOT(newConnection(QDBusObjectPath))); - systemSettings->setConnections(); - nmAvailable = true; - - setupConfigurations(); -} - -void QNetworkManagerEngine::nmUnRegistered(const QString &) -{ - if (systemSettings) { - delete systemSettings; - systemSettings = NULL; - } - if (managerInterface) { - delete managerInterface; - managerInterface = NULL; - } -} - -void QNetworkManagerEngine::ofonoRegistered(const QString &) -{ - if (ofonoManager) { - delete ofonoManager; - ofonoManager = NULL; - } - ofonoManager = new QOfonoManagerInterface(this); - if (ofonoManager && ofonoManager->isValid()) { - const auto modems = ofonoManager->getModems(); - for (const QString &modem : modems) { - QOfonoDataConnectionManagerInterface *ofonoContextManager - = new QOfonoDataConnectionManagerInterface(modem,this); - ofonoContextManagers.insert(modem, ofonoContextManager); - } - } -} - -void QNetworkManagerEngine::ofonoUnRegistered(const QString &) -{ - ofonoContextManagers.clear(); -} - -QT_END_NAMESPACE - -#endif // QT_NO_DBUS diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h deleted file mode 100644 index c624d6087d..0000000000 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QNETWORKMANAGERENGINE_P_H -#define QNETWORKMANAGERENGINE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <private/qbearerengine_impl_p.h> - -#include "qnetworkmanagerservice.h" - -#include <private/qofonoservice_linux_p.h> - -#include <QMap> -#include <QVariant> - -#ifndef QT_NO_DBUS - -QT_BEGIN_NAMESPACE - -class QNetworkManagerEngine : public QBearerEngineImpl -{ - Q_OBJECT - -public: - QNetworkManagerEngine(QObject *parent = nullptr); - ~QNetworkManagerEngine(); - - bool networkManagerAvailable() const; - - QString getInterfaceFromId(const QString &id) override; - bool hasIdentifier(const QString &id) override; - - void connectToId(const QString &id) override; - void disconnectFromId(const QString &id) override; - - Q_INVOKABLE void initialize(); - Q_INVOKABLE void requestUpdate(); - - QNetworkSession::State sessionStateForId(const QString &id) override; - - quint64 bytesWritten(const QString &id) override; - quint64 bytesReceived(const QString &id) override; - quint64 startTime(const QString &id) override; - - QNetworkConfigurationManager::Capabilities capabilities() const override; - - QNetworkSessionPrivate *createSessionBackend() override; - - QNetworkConfigurationPrivatePointer defaultConfiguration() override; - -private Q_SLOTS: - void interfacePropertiesChanged(const QMap<QString, QVariant> &properties); - void activeConnectionPropertiesChanged(const QMap<QString, QVariant> &properties); - - void newConnection(const QDBusObjectPath &path, QNetworkManagerSettings *settings = nullptr); - void removeConnection(const QString &path); - void updateConnection(); - void activationFinished(QDBusPendingCallWatcher *watcher); - void deviceConnectionsChanged(const QStringList &activeConnectionsList); - - void wiredCarrierChanged(bool); - - void nmRegistered(const QString &serviceName = QString()); - void nmUnRegistered(const QString &serviceName = QString()); - - void ofonoRegistered(const QString &serviceName = QString()); - void ofonoUnRegistered(const QString &serviceName = QString()); - -private: - QNetworkConfigurationPrivate *parseConnection(const QString &settingsPath, - const QNmSettingsMap &map); - QNetworkManagerSettingsConnection *connectionFromId(const QString &id) const; - - QNetworkManagerInterface *managerInterface; - QNetworkManagerSettings *systemSettings; - QHash<QString, QNetworkManagerInterfaceDeviceWired *> wiredDevices; - QHash<QString, QNetworkManagerInterfaceDeviceWireless *> wirelessDevices; - - QHash<QString, QNetworkManagerConnectionActive *> activeConnectionsList; - QList<QNetworkManagerSettingsConnection *> connections; - QList<QNetworkManagerInterfaceAccessPoint *> accessPoints; - QHash<QString, QNetworkManagerInterfaceDevice *> interfaceDevices; - - QMap<QString,QString> configuredAccessPoints; //ap, settings path - QHash<QString,QString> connectionInterfaces; // ac, interface - - QOfonoManagerInterface *ofonoManager; - QHash <QString, QOfonoDataConnectionManagerInterface *> ofonoContextManagers; - QNetworkConfiguration::BearerType currentBearerType(const QString &id) const; - QString contextName(const QString &path) const; - - bool isConnectionActive(const QString &settingsPath) const; - QDBusServiceWatcher *ofonoWatcher; - QDBusServiceWatcher *nmWatcher; - - bool isActiveContext(const QString &contextPath) const; - bool nmAvailable; - void setupConfigurations(); -}; - -QT_END_NAMESPACE - -#endif // QT_NO_DBUS - -#endif - diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp deleted file mode 100644 index 2d6cba1791..0000000000 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp +++ /dev/null @@ -1,1019 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QObject> -#include <QList> -#include <QtDBus/QtDBus> -#include <QtDBus/QDBusConnection> -#include <QtDBus/QDBusError> -#include <QtDBus/QDBusInterface> -#include <QtDBus/QDBusMessage> -#include <QtDBus/QDBusReply> -#include <QtDBus/QDBusPendingCallWatcher> -#include <QtDBus/QDBusObjectPath> -#include <QtDBus/QDBusPendingCall> - -#include "qnetworkmanagerservice.h" - -#ifndef QT_NO_DBUS - -#define DBUS_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" - -QT_BEGIN_NAMESPACE - - -QNetworkManagerInterface::QNetworkManagerInterface(QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - NM_DBUS_INTERFACE, - QDBusConnection::systemBus(),parent) -{ - if (!isValid()) { - return; - } - - PropertiesDBusInterface managerPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus()); - QDBusPendingReply<QVariantMap> propsReply - = managerPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } else { - qWarning() << "propsReply" << propsReply.error().message(); - } - - QDBusPendingReply<QList <QDBusObjectPath> > nmReply - = call(QLatin1String("GetDevices")); - nmReply.waitForFinished(); - if (!nmReply.isError()) { - devicesPathList = nmReply.value(); - } else { - qWarning() << "nmReply" << nmReply.error().message(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterface::~QNetworkManagerInterface() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceAdded"), - this,SIGNAL(deviceAdded(QDBusObjectPath))); - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceRemoved"), - this,SIGNAL(deviceRemoved(QDBusObjectPath))); -} - -bool QNetworkManagerInterface::setConnections() -{ - if (!isValid()) - return false; - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); - - bool allOk = false; - if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceAdded"), - this,SIGNAL(deviceAdded(QDBusObjectPath)))) { - allOk = true; - } - if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceRemoved"), - this,SIGNAL(deviceRemoved(QDBusObjectPath)))) { - allOk = true; - } - - return allOk; -} - -QList <QDBusObjectPath> QNetworkManagerInterface::getDevices() -{ - if (devicesPathList.isEmpty()) { - //qWarning("using blocking call!"); - QDBusReply<QList<QDBusObjectPath> > reply = call(QLatin1String("GetDevices")); - devicesPathList = reply.value(); - } - return devicesPathList; -} - -void QNetworkManagerInterface::activateConnection(QDBusObjectPath connectionPath, - QDBusObjectPath devicePath, - QDBusObjectPath specificObject) -{ - QDBusPendingCall pendingCall = asyncCall(QLatin1String("ActivateConnection"), - QVariant::fromValue(connectionPath), - QVariant::fromValue(devicePath), - QVariant::fromValue(specificObject)); - - QDBusPendingCallWatcher *callWatcher = new QDBusPendingCallWatcher(pendingCall); - connect(callWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - this, SIGNAL(activationFinished(QDBusPendingCallWatcher*))); -} - -void QNetworkManagerInterface::deactivateConnection(QDBusObjectPath connectionPath) -{ - asyncCall(QLatin1String("DeactivateConnection"), QVariant::fromValue(connectionPath)); -} - -bool QNetworkManagerInterface::wirelessEnabled() const -{ - if (propertyMap.contains("WirelessEnabled")) - return propertyMap.value("WirelessEnabled").toBool(); - return false; -} - -bool QNetworkManagerInterface::wirelessHardwareEnabled() const -{ - if (propertyMap.contains("WirelessHardwareEnabled")) - return propertyMap.value("WirelessHardwareEnabled").toBool(); - return false; -} - -QList <QDBusObjectPath> QNetworkManagerInterface::activeConnections() const -{ - if (propertyMap.contains("ActiveConnections")) { - - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(propertyMap.value("ActiveConnections")); - QDBusObjectPath path; - QList <QDBusObjectPath> list; - - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - list.append(path); - } - dbusArgs.endArray(); - - return list; - } - - QList <QDBusObjectPath> list; - list << QDBusObjectPath(); - return list; -} - -QNetworkManagerInterface::NMState QNetworkManagerInterface::state() -{ - if (propertyMap.contains("State")) - return static_cast<QNetworkManagerInterface::NMState>(propertyMap.value("State").toUInt()); - return QNetworkManagerInterface::NM_STATE_UNKNOWN; -} - -QString QNetworkManagerInterface::version() const -{ - if (propertyMap.contains("Version")) - return propertyMap.value("Version").toString(); - return QString(); -} - -void QNetworkManagerInterface::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - - if (i.key() == QLatin1String("State")) { - quint32 state = i.value().toUInt(); - if (state == NM_DEVICE_STATE_ACTIVATED - || state == NM_DEVICE_STATE_DISCONNECTED - || state == NM_DEVICE_STATE_UNAVAILABLE - || state == NM_DEVICE_STATE_FAILED) { - Q_EMIT propertiesChanged(map); - Q_EMIT stateChanged(state); - } - } else if (i.key() == QLatin1String("ActiveConnections")) { - Q_EMIT propertiesChanged(map); - } - } -} - -QNetworkManagerInterfaceAccessPoint::QNetworkManagerInterfaceAccessPoint(const QString &dbusPathName, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - dbusPathName, - NM_DBUS_INTERFACE_ACCESS_POINT, - QDBusConnection::systemBus(),parent) -{ -} - -QNetworkManagerInterfaceAccessPoint::~QNetworkManagerInterfaceAccessPoint() -{ -} - -quint32 QNetworkManagerInterfaceAccessPoint::flags() const -{ - if (propertyMap.contains("Flags")) - return propertyMap.value("Flags").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::wpaFlags() const -{ - if (propertyMap.contains("WpaFlags")) - return propertyMap.value("WpaFlags").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::rsnFlags() const -{ - if (propertyMap.contains("RsnFlags")) - return propertyMap.value("RsnFlags").toUInt(); - return 0; -} - -QString QNetworkManagerInterfaceAccessPoint::ssid() const -{ - if (propertyMap.contains("Ssid")) - return propertyMap.value("Ssid").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceAccessPoint::frequency() const -{ - if (propertyMap.contains("Frequency")) - return propertyMap.value("Frequency").toUInt(); - return 0; -} - -QString QNetworkManagerInterfaceAccessPoint::hwAddress() const -{ - if (propertyMap.contains("HwAddress")) - return propertyMap.value("HwAddress").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceAccessPoint::mode() const -{ - if (propertyMap.contains("Mode")) - return propertyMap.value("Mode").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::maxBitrate() const -{ - if (propertyMap.contains("MaxBitrate")) - return propertyMap.value("MaxBitrate").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::strength() const -{ - if (propertyMap.contains("Strength")) - return propertyMap.value("Strength").toUInt(); - return 0; -} - -void QNetworkManagerInterfaceAccessPoint::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) - propertyMap.insert(i.key(),i.value()); -} - -QNetworkManagerInterfaceDevice::QNetworkManagerInterfaceDevice(const QString &deviceObjectPath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - NM_DBUS_INTERFACE_DEVICE, - QDBusConnection::systemBus(),parent) -{ - - if (!isValid()) { - return; - } - PropertiesDBusInterface devicePropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = devicePropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDevice::~QNetworkManagerInterfaceDevice() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_DEVICE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QString QNetworkManagerInterfaceDevice::udi() const -{ - if (propertyMap.contains("Udi")) - return propertyMap.value("Udi").toString(); - return QString(); -} - -QString QNetworkManagerInterfaceDevice::networkInterface() const -{ - if (propertyMap.contains("Interface")) - return propertyMap.value("Interface").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceDevice::ip4Address() const -{ - if (propertyMap.contains("Ip4Address")) - return propertyMap.value("Ip4Address").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceDevice::state() const -{ - if (propertyMap.contains("State")) - return propertyMap.value("State").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceDevice::deviceType() const -{ - if (propertyMap.contains("DeviceType")) - return propertyMap.value("DeviceType").toUInt(); - return 0; -} - -QDBusObjectPath QNetworkManagerInterfaceDevice::ip4config() const -{ - if (propertyMap.contains("Ip4Config")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("Ip4Config")); - return QDBusObjectPath(); -} - -void QNetworkManagerInterfaceDevice::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - if (i.key() == QLatin1String("AvailableConnections")) { //Device - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(i.value()); - QDBusObjectPath path; - QStringList paths; - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - paths << path.path(); - } - dbusArgs.endArray(); - Q_EMIT connectionsChanged(paths); - } - propertyMap.insert(i.key(),i.value()); - } - Q_EMIT propertiesChanged(map); -} - -QNetworkManagerInterfaceDeviceWired::QNetworkManagerInterfaceDeviceWired(const QString &ifaceDevicePath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - NM_DBUS_INTERFACE_DEVICE_WIRED, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - PropertiesDBusInterface deviceWiredPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = deviceWiredPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDeviceWired::~QNetworkManagerInterfaceDeviceWired() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QString QNetworkManagerInterfaceDeviceWired::hwAddress() const -{ - if (propertyMap.contains("HwAddress")) - return propertyMap.value("HwAddress").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceDeviceWired::speed() const -{ - if (propertyMap.contains("Speed")) - return propertyMap.value("Speed").toUInt(); - return 0; -} - -bool QNetworkManagerInterfaceDeviceWired::carrier() const -{ - if (propertyMap.contains("Carrier")) - return propertyMap.value("Carrier").toBool(); - return false; -} - -QStringList QNetworkManagerInterfaceDeviceWired::availableConnections() -{ - QStringList list; - if (propertyMap.contains("AvailableConnections")) { - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(propertyMap.value("Carrier")); - QDBusObjectPath path; - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - list << path.path(); - } - dbusArgs.endArray(); - } - - return list; -} - -void QNetworkManagerInterfaceDeviceWired::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - if (i.key() == QLatin1String("Carrier")) - Q_EMIT carrierChanged(i.value().toBool()); - } - Q_EMIT propertiesChanged(map); -} - -QNetworkManagerInterfaceDeviceWireless::QNetworkManagerInterfaceDeviceWireless(const QString &ifaceDevicePath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - - interfacePath = ifaceDevicePath; - QDBusPendingReply<QList <QDBusObjectPath> > nmReply - = call(QLatin1String("GetAccessPoints")); - - if (!nmReply.isError()) { - accessPointsList = nmReply.value(); - } - - PropertiesDBusInterface deviceWirelessPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - interfacePath, - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = deviceWirelessPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - interfacePath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDeviceWireless::~QNetworkManagerInterfaceDeviceWireless() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -bool QNetworkManagerInterfaceDeviceWireless::setConnections() -{ - return true; -} - -QList <QDBusObjectPath> QNetworkManagerInterfaceDeviceWireless::getAccessPoints() -{ - if (accessPointsList.isEmpty()) { - //qWarning("Using blocking call!"); - QDBusReply<QList<QDBusObjectPath> > reply - = call(QLatin1String("GetAccessPoints")); - accessPointsList = reply.value(); - } - return accessPointsList; -} - -QString QNetworkManagerInterfaceDeviceWireless::hwAddress() const -{ - if (propertyMap.contains("HwAddress")) - return propertyMap.value("HwAddress").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceDeviceWireless::mode() const -{ - if (propertyMap.contains("Mode")) - return propertyMap.value("Mode").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceDeviceWireless::bitrate() const -{ - if (propertyMap.contains("Bitrate")) - return propertyMap.value("Bitrate").toUInt(); - return 0; -} - -QDBusObjectPath QNetworkManagerInterfaceDeviceWireless::activeAccessPoint() const -{ - if (propertyMap.contains("ActiveAccessPoint")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("ActiveAccessPoint")); - return QDBusObjectPath(); -} - -quint32 QNetworkManagerInterfaceDeviceWireless::wirelessCapabilities() const -{ - if (propertyMap.contains("WirelelessCapabilities")) - return propertyMap.value("WirelelessCapabilities").toUInt(); - return 0; -} - -void QNetworkManagerInterfaceDeviceWireless::requestScan() -{ - asyncCall(QLatin1String("RequestScan")); -} - -void QNetworkManagerInterfaceDeviceWireless::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - if (i.key() == QLatin1String("ActiveAccessPoint")) //DeviceWireless - Q_EMIT propertiesChanged(map); - } -} - -QNetworkManagerInterfaceDeviceModem::QNetworkManagerInterfaceDeviceModem(const QString &ifaceDevicePath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - NM_DBUS_INTERFACE_DEVICE_MODEM, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - PropertiesDBusInterface deviceModemPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - QLatin1String("org.freedesktop.DBus.Properties"), - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = deviceModemPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDeviceModem::~QNetworkManagerInterfaceDeviceModem() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_PATH_SETTINGS), - QLatin1String(NM_DBUS_IFACE_SETTINGS), - QLatin1String("NewConnection"), - this, SIGNAL(newConnection(QDBusObjectPath))); -} - -QNetworkManagerInterfaceDeviceModem::ModemCapabilities QNetworkManagerInterfaceDeviceModem::modemCapabilities() const -{ - if (propertyMap.contains("ModemCapabilities")) - return static_cast<QNetworkManagerInterfaceDeviceModem::ModemCapabilities>(propertyMap.value("ModemCapabilities").toUInt()); - return QNetworkManagerInterfaceDeviceModem::None; -} - -QNetworkManagerInterfaceDeviceModem::ModemCapabilities QNetworkManagerInterfaceDeviceModem::currentCapabilities() const -{ - if (propertyMap.contains("CurrentCapabilities")) - return static_cast<QNetworkManagerInterfaceDeviceModem::ModemCapabilities>(propertyMap.value("CurrentCapabilities").toUInt()); - return QNetworkManagerInterfaceDeviceModem::None; -} - -void QNetworkManagerInterfaceDeviceModem::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) - propertyMap.insert(i.key(),i.value()); - Q_EMIT propertiesChanged(map); -} - - -QNetworkManagerSettings::QNetworkManagerSettings(const QString &settingsService, QObject *parent) - : QDBusAbstractInterface(settingsService, - NM_DBUS_PATH_SETTINGS, - NM_DBUS_IFACE_SETTINGS, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - interfacePath = settingsService; - QDBusPendingReply<QList <QDBusObjectPath> > nmReply - = call(QLatin1String("ListConnections")); - - if (!nmReply.isError()) { - connectionsList = nmReply.value(); - } -} - -QNetworkManagerSettings::~QNetworkManagerSettings() -{ -} - -bool QNetworkManagerSettings::setConnections() -{ - bool allOk = true; - if (!QDBusConnection::systemBus().connect(interfacePath, - QLatin1String(NM_DBUS_PATH_SETTINGS), - QLatin1String(NM_DBUS_IFACE_SETTINGS), - QLatin1String("NewConnection"), - this, SIGNAL(newConnection(QDBusObjectPath)))) { - allOk = false; - qWarning("NewConnection could not be connected"); - } - - return allOk; -} - -QList <QDBusObjectPath> QNetworkManagerSettings::listConnections() -{ - if (connectionsList.isEmpty()) { - //qWarning("Using blocking call!"); - QDBusReply<QList<QDBusObjectPath> > reply - = call(QLatin1String("ListConnections")); - connectionsList = reply.value(); - } - return connectionsList; -} - - -QString QNetworkManagerSettings::getConnectionByUuid(const QString &uuid) -{ - QDBusReply<QDBusObjectPath > reply = call(QDBus::Block, QLatin1String("GetConnectionByUuid"), uuid); - return reply.value().path(); -} - -QNetworkManagerSettingsConnection::QNetworkManagerSettingsConnection(const QString &settingsService, const QString &connectionObjectPath, QObject *parent) - : QDBusAbstractInterface(settingsService, - connectionObjectPath, - NM_DBUS_IFACE_SETTINGS_CONNECTION, - QDBusConnection::systemBus(), parent) -{ - qDBusRegisterMetaType<QNmSettingsMap>(); - if (!isValid()) { - return; - } - interfacepath = connectionObjectPath; - QDBusPendingReply<QNmSettingsMap> nmReply - = call(QLatin1String("GetSettings")); - if (!nmReply.isError()) { - settingsMap = nmReply.value(); - } -} - -QNetworkManagerSettingsConnection::~QNetworkManagerSettingsConnection() -{ - QDBusConnection::systemBus().disconnect(service(), - path(), - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Updated"), - this, SIGNAL(updated())); - QDBusConnection::systemBus().disconnect(service(), - path(), - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Removed"), - this, SIGNAL(slotSettingsRemoved())); -} - -bool QNetworkManagerSettingsConnection::setConnections() -{ - if (!isValid()) - return false; - - QDBusConnection dbusConnection = QDBusConnection::systemBus(); - bool allOk = true; - if (!dbusConnection.connect(service(), - interfacepath, - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Updated"), - this, SIGNAL(updated()))) { - allOk = false; - } - - if (!dbusConnection.connect(service(), - interfacepath, - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Removed"), - this, SIGNAL(slotSettingsRemoved()))) { - allOk = false; - } - return allOk; -} - -void QNetworkManagerSettingsConnection::slotSettingsRemoved() -{ - Q_EMIT removed(interfacepath); -} - -QNmSettingsMap QNetworkManagerSettingsConnection::getSettings() -{ - if (settingsMap.isEmpty()) { - //qWarning("Using blocking call!"); - QDBusReply<QNmSettingsMap> reply = call(QLatin1String("GetSettings")); - settingsMap = reply.value(); - } - return settingsMap; -} - -NMDeviceType QNetworkManagerSettingsConnection::getType() -{ - const QString devType = - settingsMap.value(QLatin1String("connection")).value(QLatin1String("type")).toString(); - - if (devType == QLatin1String("802-3-ethernet")) - return DEVICE_TYPE_ETHERNET; - else if (devType == QLatin1String("802-11-wireless")) - return DEVICE_TYPE_WIFI; - else if (devType == QLatin1String("gsm")) - return DEVICE_TYPE_MODEM; - else - return DEVICE_TYPE_UNKNOWN; -} - -bool QNetworkManagerSettingsConnection::isAutoConnect() -{ - const QVariant autoConnect = - settingsMap.value(QLatin1String("connection")).value(QLatin1String("autoconnect")); - - // NetworkManager default is to auto connect - if (!autoConnect.isValid()) - return true; - - return autoConnect.toBool(); -} - -quint64 QNetworkManagerSettingsConnection::getTimestamp() -{ - return settingsMap.value(QLatin1String("connection")) - .value(QLatin1String("timestamp")).toUInt(); -} - -QString QNetworkManagerSettingsConnection::getId() -{ - return settingsMap.value(QLatin1String("connection")).value(QLatin1String("id")).toString(); -} - -QString QNetworkManagerSettingsConnection::getUuid() -{ - const QString id = settingsMap.value(QLatin1String("connection")) - .value(QLatin1String("uuid")).toString(); - - // is no uuid, return the connection path - return id.isEmpty() ? path() : id; -} - -QString QNetworkManagerSettingsConnection::getSsid() -{ - return settingsMap.value(QLatin1String("802-11-wireless")) - .value(QLatin1String("ssid")).toString(); -} - -QString QNetworkManagerSettingsConnection::getMacAddress() -{ - NMDeviceType type = getType(); - - if (type == DEVICE_TYPE_ETHERNET) { - return settingsMap.value(QLatin1String("802-3-ethernet")) - .value(QLatin1String("mac-address")).toString(); - } else if (type == DEVICE_TYPE_WIFI) { - return settingsMap.value(QLatin1String("802-11-wireless")) - .value(QLatin1String("mac-address")).toString(); - } else { - return QString(); - } -} - -QStringList QNetworkManagerSettingsConnection::getSeenBssids() -{ - if (getType() == DEVICE_TYPE_WIFI) { - return settingsMap.value(QLatin1String("802-11-wireless")) - .value(QLatin1String("seen-bssids")).toStringList(); - } else { - return QStringList(); - } -} - -QNetworkManagerConnectionActive::QNetworkManagerConnectionActive(const QString &activeConnectionObjectPath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - activeConnectionObjectPath, - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - PropertiesDBusInterface connectionActivePropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - activeConnectionObjectPath, - QLatin1String("org.freedesktop.DBus.Properties"), - QDBusConnection::systemBus()); - - - QDBusPendingReply<QVariantMap> propsReply - = connectionActivePropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } else { - qWarning() << propsReply.error().message(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - activeConnectionObjectPath, - QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerConnectionActive::~QNetworkManagerConnectionActive() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QDBusObjectPath QNetworkManagerConnectionActive::connection() const -{ - if (propertyMap.contains("Connection")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("Connection")); - return QDBusObjectPath(); -} - -QDBusObjectPath QNetworkManagerConnectionActive::specificObject() const -{ - if (propertyMap.contains("SpecificObject")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("SpecificObject")); - return QDBusObjectPath(); -} - -QStringList QNetworkManagerConnectionActive::devices() const -{ - QStringList list; - if (propertyMap.contains("Devices")) { - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(propertyMap.value("Devices")); - QDBusObjectPath path; - - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - list.append(path.path()); - } - dbusArgs.endArray(); - } - return list; -} - -quint32 QNetworkManagerConnectionActive::state() const -{ - if (propertyMap.contains("State")) - return propertyMap.value("State").toUInt(); - return 0; -} - -bool QNetworkManagerConnectionActive::defaultRoute() const -{ - if (propertyMap.contains("Default")) - return propertyMap.value("Default").toBool(); - return false; -} - -bool QNetworkManagerConnectionActive::default6Route() const -{ - if (propertyMap.contains("Default6")) - return propertyMap.value("Default6").toBool(); - return false; -} - -void QNetworkManagerConnectionActive::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - if (i.key() == QLatin1String("State")) { - quint32 state = i.value().toUInt(); - if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED - || state == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED) { - Q_EMIT propertiesChanged(map); - } - } - } -} - -QNetworkManagerIp4Config::QNetworkManagerIp4Config( const QString &deviceObjectPath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - NM_DBUS_INTERFACE_IP4_CONFIG, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } -} - -QNetworkManagerIp4Config::~QNetworkManagerIp4Config() -{ -} - -QStringList QNetworkManagerIp4Config::domains() const -{ - return property("Domains").toStringList(); -} - -QT_END_NAMESPACE - -#endif // QT_NO_DBUS diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h deleted file mode 100644 index bff7a71097..0000000000 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h +++ /dev/null @@ -1,500 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QNETWORKMANAGERSERVICE_H -#define QNETWORKMANAGERSERVICE_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtDBus/QtDBus> -#include <QtDBus/QDBusConnection> -#include <QtDBus/QDBusError> -#include <QtDBus/QDBusInterface> -#include <QtDBus/QDBusMessage> -#include <QtDBus/QDBusReply> - -#include <QtDBus/QDBusPendingCallWatcher> -#include <QtDBus/QDBusObjectPath> -#include <QtDBus/QDBusContext> -#include <QtDBus/QDBusAbstractInterface> -#include <QMap> - -#ifndef QT_NO_DBUS - -#ifndef NETWORK_MANAGER_H -typedef enum NMDeviceType -{ - DEVICE_TYPE_UNKNOWN = 0, - DEVICE_TYPE_ETHERNET, - DEVICE_TYPE_WIFI, - DEVICE_TYPE_MODEM = 8 -} NMDeviceType; - -typedef enum -{ - NM_DEVICE_STATE_UNKNOWN = 0, - NM_DEVICE_STATE_UNMANAGED = 10, - NM_DEVICE_STATE_UNAVAILABLE = 20, - NM_DEVICE_STATE_DISCONNECTED = 30, - NM_DEVICE_STATE_PREPARE = 40, - NM_DEVICE_STATE_CONFIG = 50, - NM_DEVICE_STATE_NEED_AUTH = 60, - NM_DEVICE_STATE_IP_CONFIG = 70, - NM_DEVICE_STATE_ACTIVATED = 100, - NM_DEVICE_STATE_DEACTIVATING = 110, - NM_DEVICE_STATE_FAILED = 120 -} NMDeviceState; - -typedef enum -{ - NM_ACTIVE_CONNECTION_STATE_UNKNOWN = 0, - NM_ACTIVE_CONNECTION_STATE_ACTIVATING, - NM_ACTIVE_CONNECTION_STATE_ACTIVATED, - NM_ACTIVE_CONNECTION_STATE_DEACTIVATED = 4 -} NMActiveConnectionState; - -#define NM_DBUS_SERVICE "org.freedesktop.NetworkManager" - -#define NM_DBUS_PATH "/org/freedesktop/NetworkManager" -#define NM_DBUS_INTERFACE "org.freedesktop.NetworkManager" -#define NM_DBUS_INTERFACE_DEVICE NM_DBUS_INTERFACE ".Device" -#define NM_DBUS_INTERFACE_DEVICE_WIRED NM_DBUS_INTERFACE_DEVICE ".Wired" -#define NM_DBUS_INTERFACE_DEVICE_WIRELESS NM_DBUS_INTERFACE_DEVICE ".Wireless" -#define NM_DBUS_INTERFACE_DEVICE_MODEM NM_DBUS_INTERFACE_DEVICE ".Modem" -#define NM_DBUS_PATH_ACCESS_POINT NM_DBUS_PATH "/AccessPoint" -#define NM_DBUS_INTERFACE_ACCESS_POINT NM_DBUS_INTERFACE ".AccessPoint" - -#define NM_DBUS_PATH_SETTINGS "/org/freedesktop/NetworkManager/Settings" - -#define NM_DBUS_IFACE_SETTINGS_CONNECTION "org.freedesktop.NetworkManager.Settings.Connection" -#define NM_DBUS_IFACE_SETTINGS "org.freedesktop.NetworkManager.Settings" -#define NM_DBUS_INTERFACE_ACTIVE_CONNECTION NM_DBUS_INTERFACE ".Connection.Active" -#define NM_DBUS_INTERFACE_IP4_CONFIG NM_DBUS_INTERFACE ".IP4Config" - -#define NM_DBUS_SERVICE_USER_SETTINGS "org.freedesktop.NetworkManagerUserSettings" -#define NM_DBUS_SERVICE_SYSTEM_SETTINGS "org.freedesktop.NetworkManagerSystemSettings" - -#define NM_802_11_AP_FLAGS_NONE 0x00000000 -#define NM_802_11_AP_FLAGS_PRIVACY 0x00000001 -#endif - -QT_BEGIN_NAMESPACE - -typedef QMap< QString, QMap<QString,QVariant> > QNmSettingsMap; -typedef QList<quint32> ServerThing; - -QT_END_NAMESPACE - -Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(QNmSettingsMap)) -Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(ServerThing)) - -QT_BEGIN_NAMESPACE - -class QNetworkManagerInterface : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - typedef enum - { - NM_STATE_UNKNOWN = 0, - NM_STATE_ASLEEP = 10, - NM_STATE_DISCONNECTED = 20, - NM_STATE_DISCONNECTING = 30, - NM_STATE_CONNECTING = 40, - NM_STATE_CONNECTED_LOCAL = 50, - NM_STATE_CONNECTED_SITE = 60, - NM_STATE_CONNECTED_GLOBAL = 70 - } NMState; - - QNetworkManagerInterface(QObject *parent = nullptr); - ~QNetworkManagerInterface(); - - QList <QDBusObjectPath> getDevices(); - void activateConnection(QDBusObjectPath connection,QDBusObjectPath device, QDBusObjectPath specificObject); - void deactivateConnection(QDBusObjectPath connectionPath); - - QDBusObjectPath path() const; - - bool wirelessEnabled() const; - bool wirelessHardwareEnabled() const; - QList <QDBusObjectPath> activeConnections() const; - NMState state(); - QString version() const; - bool setConnections(); - -Q_SIGNALS: - void deviceAdded(QDBusObjectPath); - void deviceRemoved(QDBusObjectPath); - void propertiesChanged(QMap<QString,QVariant>); - void stateChanged(quint32); - void activationFinished(QDBusPendingCallWatcher*); - void propertiesReady(); - void devicesListReady(); - -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); - -private: - QVariantMap propertyMap; - QList<QDBusObjectPath> devicesPathList; - -}; - -class QNetworkManagerInterfaceAccessPoint : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - enum DeviceState { - Unknown = 0, - Unmanaged, - Unavailable, - Disconnected, - Prepare, - Config, - NeedAuthentication, - IpConfig, - Activated, - Failed - }; - - enum ApFlag { - ApNone = 0x0, - Privacy = 0x1 - }; - - Q_DECLARE_FLAGS(ApFlags, ApFlag) - - enum ApSecurityFlag { - ApSecurityNone = 0x0, - PairWep40 = 0x1, - PairWep104 = 0x2, - PairTkip = 0x4, - PairCcmp = 0x8, - GroupWep40 = 0x10, - GroupWep104 = 0x20, - GroupTkip = 0x40, - GroupCcmp = 0x80, - KeyPsk = 0x100, - Key8021x = 0x200 - }; - - Q_DECLARE_FLAGS(ApSecurityFlags, ApSecurityFlag) - - explicit QNetworkManagerInterfaceAccessPoint(const QString &dbusPathName, QObject *parent = nullptr); - ~QNetworkManagerInterfaceAccessPoint(); - - quint32 flags() const; - quint32 wpaFlags() const; - quint32 rsnFlags() const; - QString ssid() const; - quint32 frequency() const; - QString hwAddress() const; - quint32 mode() const; - quint32 maxBitrate() const; - quint32 strength() const; - // bool setConnections(); - -Q_SIGNALS: - void propertiesChanged(QMap<QString,QVariant>); - void propertiesReady(); - -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); - -private: - QVariantMap propertyMap; -}; - -class QNetworkManagerInterfaceDevice : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - explicit QNetworkManagerInterfaceDevice(const QString &deviceObjectPath, QObject *parent = nullptr); - ~QNetworkManagerInterfaceDevice(); - - QString udi() const; - QString networkInterface() const; - quint32 ip4Address() const; - quint32 state() const; - quint32 deviceType() const; - - QDBusObjectPath ip4config() const; - -Q_SIGNALS: - void stateChanged(const QString &, quint32); - void propertiesChanged(QMap<QString,QVariant>); - void connectionsChanged(QStringList); - void propertiesReady(); -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); -private: - QVariantMap propertyMap; -}; - -class QNetworkManagerInterfaceDeviceWired : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - explicit QNetworkManagerInterfaceDeviceWired(const QString &ifaceDevicePath, - QObject *parent = nullptr); - ~QNetworkManagerInterfaceDeviceWired(); - - QString hwAddress() const; - quint32 speed() const; - bool carrier() const; - QStringList availableConnections(); - -Q_SIGNALS: - void propertiesChanged(QMap<QString,QVariant>); - void propertiesReady(); - void carrierChanged(bool); - -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); - -private: - QVariantMap propertyMap; -}; - -class QNetworkManagerInterfaceDeviceWireless : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - enum DeviceCapability { - None = 0x0, - Wep40 = 0x1, - Wep104 = 0x2, - Tkip = 0x4, - Ccmp = 0x8, - Wpa = 0x10, - Rsn = 0x20 - }; - - explicit QNetworkManagerInterfaceDeviceWireless(const QString &ifaceDevicePath, - QObject *parent = nullptr); - ~QNetworkManagerInterfaceDeviceWireless(); - - QList <QDBusObjectPath> getAccessPoints(); - - QString hwAddress() const; - quint32 mode() const; - quint32 bitrate() const; - QDBusObjectPath activeAccessPoint() const; - quint32 wirelessCapabilities() const; - bool setConnections(); - - void requestScan(); -Q_SIGNALS: - void propertiesChanged(QMap<QString,QVariant>); - void propertiesReady(); - -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); - -private: - QVariantMap propertyMap; - QList <QDBusObjectPath> accessPointsList; - QString interfacePath; -}; - -class QNetworkManagerInterfaceDeviceModem : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - enum ModemCapability { - None = 0x0, - Pots = 0x1, - Cmda_Edvo = 0x2, - Gsm_Umts = 0x4, - Lte = 0x08 - }; - Q_DECLARE_FLAGS(ModemCapabilities, ModemCapability) - - explicit QNetworkManagerInterfaceDeviceModem(const QString &ifaceDevicePath, - QObject *parent = nullptr); - ~QNetworkManagerInterfaceDeviceModem(); - - ModemCapabilities modemCapabilities() const; - ModemCapabilities currentCapabilities() const; - -Q_SIGNALS: - void propertiesChanged(QMap<QString,QVariant>); - void propertiesReady(); - -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); - -private: - QVariantMap propertyMap; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkManagerInterfaceDeviceModem::ModemCapabilities) - -class QNetworkManagerSettings : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - explicit QNetworkManagerSettings(const QString &settingsService, QObject *parent = nullptr); - ~QNetworkManagerSettings(); - - QList <QDBusObjectPath> listConnections(); - QString getConnectionByUuid(const QString &uuid); - bool setConnections(); - -Q_SIGNALS: - void newConnection(QDBusObjectPath); - void connectionsListReady(); -private: - QList <QDBusObjectPath> connectionsList; - QString interfacePath; -}; - -class QNetworkManagerSettingsConnection : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - QNetworkManagerSettingsConnection(const QString &settingsService, const QString &connectionObjectPath, QObject *parent = nullptr); - ~QNetworkManagerSettingsConnection(); - - QNmSettingsMap getSettings(); - bool setConnections(); - NMDeviceType getType(); - bool isAutoConnect(); - quint64 getTimestamp(); - QString getId(); - QString getUuid(); - QString getSsid(); - QString getMacAddress(); - QStringList getSeenBssids(); - -Q_SIGNALS: - void updated(); - void removed(const QString &path); - void settingsReady(); - -private Q_SLOTS: - void slotSettingsRemoved(); -private: - QNmSettingsMap settingsMap; - QString interfacepath; -}; - -class QNetworkManagerConnectionActive : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - - enum ActiveConnectionState { - Unknown = 0, - Activating = 1, - Activated = 2 - }; - - explicit QNetworkManagerConnectionActive(const QString &dbusPathName, QObject *parent = nullptr); - ~ QNetworkManagerConnectionActive(); - - QDBusObjectPath connection() const; - QDBusObjectPath specificObject() const; - QStringList devices() const; - quint32 state() const; - bool defaultRoute() const; - bool default6Route() const; - - -Q_SIGNALS: - void propertiesChanged(QMap<QString,QVariant>); - void propertiesReady(); - -private Q_SLOTS: - void propertiesSwap(QMap<QString,QVariant>); - -private: - QVariantMap propertyMap; -}; - -class QNetworkManagerIp4Config : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - explicit QNetworkManagerIp4Config(const QString &dbusPathName, QObject *parent = nullptr); - ~QNetworkManagerIp4Config(); - - QStringList domains() const; -}; - -class PropertiesDBusInterface : public QDBusAbstractInterface -{ -public: - PropertiesDBusInterface(const QString &service, const QString &path, - const QString &interface, const QDBusConnection &connection, - QObject *parent = nullptr) - : QDBusAbstractInterface(service, path, interface.toLatin1().data(), connection, parent) - {} -}; - -QT_END_NAMESPACE - -#endif // QT_NO_DBUS -#endif //QNETWORKMANAGERSERVICE_H |