mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-22 02:01:08 +07: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"
|
#include "dnsutilslinux.h"
|
||||||
|
|
||||||
@@ -115,16 +118,10 @@ bool DnsUtilsLinux::updateResolvers(const QString& ifname,
|
|||||||
m_stateFilePath = QStringLiteral("/run/amnezia-dns-%1").arg(ifname);
|
m_stateFilePath = QStringLiteral("/run/amnezia-dns-%1").arg(ifname);
|
||||||
|
|
||||||
writeResolvConf(resolvers);
|
writeResolvConf(resolvers);
|
||||||
|
|
||||||
QProcess::startDetached("resolvectl", {"flush-caches"});
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DnsUtilsLinux::restoreResolvers() {
|
bool DnsUtilsLinux::restoreResolvers() {
|
||||||
logger.debug() << "restoreResolvers: original="
|
|
||||||
<< (m_resolvConfOriginal.isEmpty() ? "(empty)"
|
|
||||||
: m_resolvConfOriginal);
|
|
||||||
|
|
||||||
if (m_resolvConfOriginal.isEmpty()) {
|
if (m_resolvConfOriginal.isEmpty()) {
|
||||||
QStringList candidates;
|
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
|
#ifndef DNSUTILSLINUX_H
|
||||||
#define DNSUTILSLINUX_H
|
#define DNSUTILSLINUX_H
|
||||||
|
|||||||
@@ -41,14 +41,15 @@ bool RouterLinux::routeAdd(const QString &ipWithSubnet, const QString &gw, const
|
|||||||
struct rtentry route;
|
struct rtentry route;
|
||||||
memset(&route, 0, sizeof( 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_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_addr.s_addr = inet_addr(gw.toStdString().c_str());
|
||||||
((struct sockaddr_in *)&route.rt_gateway)->sin_port = 0;
|
((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_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_addr.s_addr = inet_addr(ip.toStdString().c_str());
|
||||||
((struct sockaddr_in *)&route.rt_dst)->sin_port = 0;
|
((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_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_addr.s_addr = inet_addr(mask.toStdString().c_str());
|
||||||
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
|
((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;
|
struct rtentry route;
|
||||||
memset(&route, 0, sizeof( 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_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_addr.s_addr = inet_addr(gw.toStdString().c_str());
|
||||||
((struct sockaddr_in *)&route.rt_gateway)->sin_port = 0;
|
((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_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_addr.s_addr = inet_addr(ip.toStdString().c_str());
|
||||||
((struct sockaddr_in *)&route.rt_dst)->sin_port = 0;
|
((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_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_addr.s_addr = inet_addr(mask.toStdString().c_str());
|
||||||
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
|
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
|
||||||
|
|
||||||
route.rt_flags = RTF_UP | RTF_GATEWAY;
|
route.rt_flags = RTF_UP | RTF_GATEWAY;
|
||||||
|
//route.rt_dev = "ens33";
|
||||||
route.rt_metric = 0;
|
route.rt_metric = 0;
|
||||||
|
|
||||||
if (ioctl(sock, SIOCDELRT, &route) < 0)
|
if (ioctl(sock, SIOCDELRT, &route) < 0)
|
||||||
@@ -161,7 +166,7 @@ bool RouterLinux::isServiceActive(const QString &serviceName) {
|
|||||||
|
|
||||||
bool RouterLinux::flushDns()
|
bool RouterLinux::flushDns()
|
||||||
{
|
{
|
||||||
|
//check what the dns manager use
|
||||||
if (isServiceActive("nscd.service")) {
|
if (isServiceActive("nscd.service")) {
|
||||||
qDebug() << "Flushing nscd cache";
|
qDebug() << "Flushing nscd cache";
|
||||||
QProcess::startDetached("nscd", { "--invalidate=hosts" });
|
QProcess::startDetached("nscd", { "--invalidate=hosts" });
|
||||||
|
|||||||
Reference in New Issue
Block a user