#ifndef WIREGUARDPROTOCOL_H #define WIREGUARDPROTOCOL_H #include #include #include #include #include #include "vpnprotocol.h" #include "mozilla/controllerimpl.h" class WireguardProtocol : public VpnProtocol { Q_OBJECT public: explicit WireguardProtocol(const QJsonObject& configuration, QObject* parent = nullptr); virtual ~WireguardProtocol() override; ErrorCode start() override; void stop() override; ErrorCode startMzImpl(); ErrorCode stopMzImpl(); private: QString configPath() const; void writeWireguardConfiguration(const QJsonObject &configuration); QString serviceName() const; private: QString m_configFileName; QFile m_configFile; bool m_isConfigLoaded = false; QScopedPointer m_impl; }; #endif // WIREGUARDPROTOCOL_H