#ifndef IPCSERVER_H #define IPCSERVER_H #include #include #include #include "ipc.h" #include "ipcserverprocess.h" #include "rep_ipc_interface_source.h" class IpcServer : public IpcInterfaceSource { public: explicit IpcServer(QObject *parent = nullptr); virtual int createPrivilegedProcess() override; virtual int routeAddList(const QString &gw, const QStringList &ips) override; virtual bool clearSavedRoutes() override; virtual bool routeDeleteList(const QString &gw, const QStringList &ips) override; virtual void flushDns() override; virtual void resetIpStack() override; virtual bool checkAndInstallDriver() override; virtual QStringList getTapList() override; virtual void cleanUp() override; virtual void setLogsEnabled(bool enabled) override; virtual bool copyWireguardConfig(const QString &sourcePath) override; virtual bool isWireguardRunning() override; virtual bool isWireguardConfigExists(const QString &configPath) override; private: int m_localpid = 0; struct ProcessDescriptor { ProcessDescriptor (QObject *parent = nullptr) { serverNode = QSharedPointer(new QRemoteObjectHost(parent)); ipcProcess = QSharedPointer(new IpcServerProcess(parent)); localServer = QSharedPointer(new QLocalServer(parent)); } QSharedPointer ipcProcess; QSharedPointer serverNode; QSharedPointer localServer; }; QMap m_processes; }; #endif // IPCSERVER_H