Warning, file /frameworks/networkmanager-qt/src/secretagent.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2011 Ilia Kats <ilia-kats@gmx.net> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "secretagent.h" 0008 #include "manager_p.h" 0009 #include "nmdebug.h" 0010 #include "secretagent_p.h" 0011 0012 #undef signals 0013 #include <NetworkManager.h> 0014 #include <libnm/NetworkManager.h> 0015 0016 #define signals Q_SIGNALS 0017 0018 #include <QDBusConnection> 0019 0020 #include "agentmanagerinterface.h" 0021 #include "secretagentadaptor.h" 0022 0023 NetworkManager::SecretAgentPrivate::SecretAgentPrivate(const QString &id, 0024 const NetworkManager::SecretAgent::Capabilities capabilities, 0025 NetworkManager::SecretAgent *parent) 0026 : q_ptr(parent) 0027 , agent(parent) 0028 #ifdef NMQT_STATIC 0029 , agentManager(NetworkManagerPrivate::DBUS_SERVICE, QLatin1String(NM_DBUS_PATH_AGENT_MANAGER), QDBusConnection::sessionBus(), parent) 0030 #else 0031 , agentManager(NetworkManagerPrivate::DBUS_SERVICE, QLatin1String(NM_DBUS_PATH_AGENT_MANAGER), QDBusConnection::systemBus(), parent) 0032 #endif 0033 , agentId(id) 0034 , capabilities(capabilities) 0035 { 0036 Q_Q(SecretAgent); 0037 0038 qRegisterMetaType<NMVariantMapMap>("NMVariantMapMap"); 0039 qDBusRegisterMetaType<NMVariantMapMap>(); 0040 0041 agentManager.connection().connect(NetworkManagerPrivate::DBUS_SERVICE, 0042 "/org/freedesktop", 0043 NetworkManagerPrivate::FDO_DBUS_OBJECT_MANAGER, 0044 QLatin1String("InterfacesAdded"), 0045 q, 0046 SLOT(dbusInterfacesAdded(QDBusObjectPath, QVariantMap))); 0047 0048 agentManager.connection().registerObject(QLatin1String(NM_DBUS_PATH_SECRET_AGENT), &agent, QDBusConnection::ExportAllSlots); 0049 0050 registerAgent(capabilities); 0051 } 0052 0053 NetworkManager::SecretAgentPrivate::~SecretAgentPrivate() 0054 { 0055 agentManager.Unregister(); 0056 } 0057 0058 void NetworkManager::SecretAgentPrivate::dbusInterfacesAdded(const QDBusObjectPath &path, const QVariantMap &interfaces) 0059 { 0060 Q_UNUSED(path); 0061 if (!interfaces.contains(QString::fromLatin1(agentManager.staticInterfaceName()))) { 0062 return; 0063 } 0064 0065 registerAgent(capabilities); 0066 } 0067 0068 void NetworkManager::SecretAgentPrivate::registerAgent() 0069 { 0070 agentManager.RegisterWithCapabilities(agentId, NetworkManager::SecretAgent::Capability::NoCapability); 0071 } 0072 0073 void NetworkManager::SecretAgentPrivate::registerAgent(NetworkManager::SecretAgent::Capabilities capabilities) 0074 { 0075 agentManager.RegisterWithCapabilities(agentId, capabilities); 0076 } 0077 0078 NetworkManager::SecretAgent::SecretAgent(const QString &id, QObject *parent) 0079 : QObject(parent) 0080 , QDBusContext() 0081 , d_ptr(new NetworkManager::SecretAgentPrivate(id, NetworkManager::SecretAgent::Capability::NoCapability, this)) 0082 { 0083 } 0084 0085 NetworkManager::SecretAgent::SecretAgent(const QString &id, NetworkManager::SecretAgent::Capabilities capabilities, QObject *parent) 0086 : QObject(parent) 0087 , QDBusContext() 0088 , d_ptr(new NetworkManager::SecretAgentPrivate(id, capabilities, this)) 0089 { 0090 } 0091 0092 NetworkManager::SecretAgent::~SecretAgent() 0093 { 0094 Q_D(SecretAgent); 0095 delete d; 0096 } 0097 0098 void NetworkManager::SecretAgent::sendError(NetworkManager::SecretAgent::Error error, const QString &explanation, const QDBusMessage &callMessage) const 0099 { 0100 Q_D(const SecretAgent); 0101 0102 QString errorString; 0103 switch (error) { 0104 case NotAuthorized: 0105 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".NotAuthorized"); 0106 break; 0107 case InvalidConnection: 0108 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".InvalidConnection"); 0109 break; 0110 case UserCanceled: 0111 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".UserCanceled"); 0112 break; 0113 case AgentCanceled: 0114 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".AgentCanceled"); 0115 break; 0116 case InternalError: 0117 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".InternalError"); 0118 break; 0119 case NoSecrets: 0120 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".NoSecrets"); 0121 break; 0122 default: 0123 errorString = QStringLiteral(NM_DBUS_INTERFACE_SECRET_AGENT) % QStringLiteral(".Unknown"); 0124 break; 0125 } 0126 0127 QDBusMessage reply; 0128 if (callMessage.type() == QDBusMessage::InvalidMessage) { 0129 reply = message().createErrorReply(errorString, explanation); 0130 } else { 0131 reply = callMessage.createErrorReply(errorString, explanation); 0132 } 0133 0134 if (!d->agentManager.connection().send(reply)) { 0135 qCDebug(NMQT) << "Failed to put error message on DBus queue" << errorString << explanation; 0136 } 0137 } 0138 0139 #include "moc_secretagent.cpp"