mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-17 08:16:06 +03:00
fix: resolve flush error and fix comment
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "dnsutilslinux.h"
|
||||
|
||||
@@ -115,16 +118,10 @@ bool DnsUtilsLinux::updateResolvers(const QString& ifname,
|
||||
m_stateFilePath = QStringLiteral("/run/amnezia-dns-%1").arg(ifname);
|
||||
|
||||
writeResolvConf(resolvers);
|
||||
|
||||
QProcess::startDetached("resolvectl", {"flush-caches"});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DnsUtilsLinux::restoreResolvers() {
|
||||
logger.debug() << "restoreResolvers: original="
|
||||
<< (m_resolvConfOriginal.isEmpty() ? "(empty)"
|
||||
: m_resolvConfOriginal);
|
||||
|
||||
if (m_resolvConfOriginal.isEmpty()) {
|
||||
QStringList candidates;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef DNSUTILSLINUX_H
|
||||
#define DNSUTILSLINUX_H
|
||||
|
||||
@@ -41,14 +41,15 @@ bool RouterLinux::routeAdd(const QString &ipWithSubnet, const QString &gw, const
|
||||
struct rtentry route;
|
||||
memset(&route, 0, sizeof( route ));
|
||||
|
||||
// set gateway
|
||||
((struct sockaddr_in *)&route.rt_gateway)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)&route.rt_gateway)->sin_addr.s_addr = inet_addr(gw.toStdString().c_str());
|
||||
((struct sockaddr_in *)&route.rt_gateway)->sin_port = 0;
|
||||
|
||||
// set host rejecting
|
||||
((struct sockaddr_in *)&route.rt_dst)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)&route.rt_dst)->sin_addr.s_addr = inet_addr(ip.toStdString().c_str());
|
||||
((struct sockaddr_in *)&route.rt_dst)->sin_port = 0;
|
||||
|
||||
// set mask
|
||||
((struct sockaddr_in *)&route.rt_genmask)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)&route.rt_genmask)->sin_addr.s_addr = inet_addr(mask.toStdString().c_str());
|
||||
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
|
||||
@@ -115,19 +116,23 @@ bool RouterLinux::routeDelete(const QString &ipWithSubnet, const QString &gw, co
|
||||
struct rtentry route;
|
||||
memset(&route, 0, sizeof( route ));
|
||||
|
||||
// set gateway
|
||||
((struct sockaddr_in *)&route.rt_gateway)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)&route.rt_gateway)->sin_addr.s_addr = inet_addr(gw.toStdString().c_str());
|
||||
((struct sockaddr_in *)&route.rt_gateway)->sin_port = 0;
|
||||
|
||||
// set host rejecting
|
||||
((struct sockaddr_in *)&route.rt_dst)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)&route.rt_dst)->sin_addr.s_addr = inet_addr(ip.toStdString().c_str());
|
||||
((struct sockaddr_in *)&route.rt_dst)->sin_port = 0;
|
||||
|
||||
// set mask
|
||||
((struct sockaddr_in *)&route.rt_genmask)->sin_family = AF_INET;
|
||||
((struct sockaddr_in *)&route.rt_genmask)->sin_addr.s_addr = inet_addr(mask.toStdString().c_str());
|
||||
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
|
||||
|
||||
route.rt_flags = RTF_UP | RTF_GATEWAY;
|
||||
//route.rt_dev = "ens33";
|
||||
route.rt_metric = 0;
|
||||
|
||||
if (ioctl(sock, SIOCDELRT, &route) < 0)
|
||||
@@ -161,7 +166,7 @@ bool RouterLinux::isServiceActive(const QString &serviceName) {
|
||||
|
||||
bool RouterLinux::flushDns()
|
||||
{
|
||||
|
||||
//check what the dns manager use
|
||||
if (isServiceActive("nscd.service")) {
|
||||
qDebug() << "Flushing nscd cache";
|
||||
QProcess::startDetached("nscd", { "--invalidate=hosts" });
|
||||
|
||||
Reference in New Issue
Block a user