refactor: move routing/KS/DNS lifecycle from Daemon to TrafficGuard

This commit is contained in:
cd-amn
2026-05-19 12:25:22 +00:00
parent ce05b4e99c
commit 9b329ad5b1
20 changed files with 319 additions and 227 deletions
@@ -185,6 +185,9 @@ bool DnsUtilsMacos::restoreResolvers() {
}
void DnsUtilsMacos::backupService(const QString& uuid) {
if (m_prevServices.contains(uuid)) {
return;
}
DnsBackup backup;
CFStringRef path = CFStringCreateWithFormat(
kCFAllocatorSystemDefault, nullptr,
@@ -15,7 +15,6 @@
#include <QTextStream>
#include <QtGlobal>
#include "killswitch.h"
#include "leakdetector.h"
#include "logger.h"
@@ -51,8 +50,3 @@ MacOSDaemon* MacOSDaemon::instance() {
return s_daemon;
}
bool MacOSDaemon::deactivate(bool emitSignals) {
bool result = Daemon::deactivate(emitSignals);
KillSwitch::instance()->disableKillSwitch();
return result;
}
@@ -17,8 +17,6 @@ class MacOSDaemon final : public Daemon {
static MacOSDaemon* instance();
bool deactivate(bool emitSignals = true) override;
protected:
DnsUtils* dnsutils() override { return m_dnsutils; }
bool supportIPUtils() const override { return true; }
@@ -51,7 +51,6 @@ MacosRouteMonitor::MacosRouteMonitor(const QString& ifname, QObject* parent)
MacosRouteMonitor::~MacosRouteMonitor() {
MZ_COUNT_DTOR(MacosRouteMonitor);
flushExclusionRoutes();
if (m_rtsock >= 0) {
close(m_rtsock);
}
@@ -204,13 +204,6 @@ bool WireguardUtilsMacos::updatePeer(const InterfaceConfig& config) {
out << "allowed_ip=" << ip.toString() << "\n";
}
// Exclude the server address, except for multihop exit servers.
if ((config.m_hopType != InterfaceConfig::MultiHopExit) &&
(m_rtmonitor != nullptr)) {
m_rtmonitor->addExclusionRoute(IPAddress(config.m_serverIpv4AddrIn));
m_rtmonitor->addExclusionRoute(IPAddress(config.m_serverIpv6AddrIn));
}
int err = uapiErrno(uapiCommand(message));
if (err != 0) {
logger.error() << "Peer configuration failed:" << strerror(err);
@@ -222,13 +215,6 @@ bool WireguardUtilsMacos::deletePeer(const InterfaceConfig& config) {
QByteArray publicKey =
QByteArray::fromBase64(qPrintable(config.m_serverPublicKey));
// Clear exclustion routes for this peer.
if ((config.m_hopType != InterfaceConfig::MultiHopExit) &&
(m_rtmonitor != nullptr)) {
m_rtmonitor->deleteExclusionRoute(IPAddress(config.m_serverIpv4AddrIn));
m_rtmonitor->deleteExclusionRoute(IPAddress(config.m_serverIpv6AddrIn));
}
QString message;
QTextStream out(&message);
out << "set=1\n";