#ifndef WIREGUARDPROTOCOL_H #define WIREGUARDPROTOCOL_H #include #include #include #include #include #include "vpnprotocol.h" #include "core/ipcclient.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; private: QString configPath() const; void readWireguardConfiguration(const QJsonObject &configuration); void updateRouteGateway(QString line); void updateVpnGateway(const QString &line); QString serviceName() const; private: QString m_configFileName; QFile m_configFile; QSharedPointer m_wireguardStartProcess; QSharedPointer m_wireguardStopProcess; bool m_isConfigLoaded = false; }; #endif // WIREGUARDPROTOCOL_H