File indexing completed on 2024-04-21 15:06:30

0001 /*
0002     SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #ifndef NETWORKMANAGERQT_VPNPLUGIN_H
0008 #define NETWORKMANAGERQT_VPNPLUGIN_H
0009 
0010 #include "generictypes.h"
0011 #include "vpnconnection.h"
0012 #include <networkmanagerqt/networkmanagerqt_export.h>
0013 
0014 #include <QDBusObjectPath>
0015 #include <QObject>
0016 
0017 namespace NetworkManager
0018 {
0019 class VpnPluginPrivate;
0020 
0021 class NETWORKMANAGERQT_EXPORT VpnPlugin : public QObject
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     enum FailureType {
0027         LoginFailed,
0028         ConnectFailed,
0029         BadIpConfig,
0030     };
0031 
0032     explicit VpnPlugin(const QString &path, QObject *parent = nullptr);
0033     ~VpnPlugin() override;
0034 
0035 Q_SIGNALS:
0036     void configChanged(const QVariantMap &configuration);
0037     void failureChanged(uint reason);
0038     void ip4ConfigChanged(const QVariantMap &ip4config);
0039     void ip6ConfigChanged(const QVariantMap &ip6config);
0040     void loginBannerChanged(const QString &banner);
0041     void stateChanged(VpnConnection::State state);
0042 
0043 protected Q_SLOTS:
0044     void connect(const NMVariantMapMap &connection);
0045     void disconnect();
0046     QString needSecrets(const NMVariantMapMap &connection);
0047     void setConfig(const QVariantMap &config);
0048     void setFailure(const QString &reason);
0049     void setIp4Config(const QVariantMap &config);
0050     void setIp6Config(const QVariantMap &config);
0051     void onStateChanged(uint state);
0052 
0053 protected:
0054     VpnPluginPrivate *const d_ptr;
0055 
0056 private:
0057     Q_DECLARE_PRIVATE(VpnPlugin)
0058 };
0059 
0060 } // namespace NetworkManager
0061 
0062 #endif // NETWORKMANAGERQT_VPNPLUGIN_H