fix: rewrite linux router dns flusher (#1335)

Co-authored-by: sund3RRR <evenquantity@gamil.com>
This commit is contained in:
Mikhail Kiselev 2025-01-08 10:38:53 +03:00 committed by GitHub
parent 62f3a339b7
commit c3fb62a6ab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 7 deletions

View file

@ -152,21 +152,29 @@ bool RouterLinux::routeDeleteList(const QString &gw, const QStringList &ips)
return cnt;
}
bool RouterLinux::isServiceActive(const QString &serviceName) {
QProcess process;
process.start("systemctl", { "is-active", "--quiet", serviceName });
process.waitForFinished();
return process.exitCode() == 0;
}
void RouterLinux::flushDns()
{
QProcess p;
p.setProcessChannelMode(QProcess::MergedChannels);
//check what the dns manager use
if (QFileInfo::exists("/usr/bin/nscd")
|| QFileInfo::exists("/usr/sbin/nscd")
|| QFileInfo::exists("/usr/lib/systemd/system/nscd.service"))
{
if (isServiceActive("nscd.service")) {
qDebug() << "Restarting nscd.service";
p.start("systemctl", { "restart", "nscd" });
}
else
{
} else if (isServiceActive("systemd-resolved.service")) {
qDebug() << "Restarting systemd-resolved.service";
p.start("systemctl", { "restart", "systemd-resolved" });
} else {
qDebug() << "No suitable DNS manager found.";
return;
}
p.waitForFinished();

View file

@ -43,6 +43,7 @@ private:
RouterLinux(RouterLinux const &) = delete;
RouterLinux& operator= (RouterLinux const&) = delete;
bool isServiceActive(const QString &serviceName);
QList<Route> m_addedRoutes;
DnsUtilsLinux *m_dnsUtil;
};