
* Add allowed DNS list for killswitch * Windows killswitch strict mode backend part * Killswitch strict mode for Linux and MacOS * Windows fixes * feature: Add Kill Switch settings page with strict mode option * fix windows build after merge * Refresh killswitch mode when it toggled * Use HLM to store strictMode flag * Some Linux updates * feat: Enhance VerticalRadioButton with improved styling and disabled states * Refresh killSwitch state update * Fix build * refactor: Modularize header components * Change kill switch radio button styling * Fix strict kill switch mode handling * Refactor: Replace HeaderType with new Types for headers in QML pages * Remove deprecated HeaderType QML component * Refresh strict mode killswitch after global toggle change * Implement model, controller and UI for killswitch dns exceptions * Connect backend part and UI * Change label text to DNS exceptions * Remove HeaderType from PageSettingsApiDevices * Some pretty fixes * Fix problem with definition sequence of PageSettingsKillSwitchExceptions.pml elements * Add exclusion method for Windows firewall * Change ubuntu version in deploy script * Update ubuntu version in GH actions * Add confirmation popup for strict killswitch mode * Add qt standard path for build script * Add method to killswitch for expanding strickt mode exceptions list and fix allowTrafficTo() for Windows. Also Added cache in KillSwitch class for exceptions * Add insertion of gateway address to strict killswitch exceptions * Review fixes * buildfix and naming --------- Co-authored-by: aiamnezia <ai@amnezia.org>
74 lines
2 KiB
C++
74 lines
2 KiB
C++
#include <QCoreApplication>
|
|
#include <QFileInfo>
|
|
#include <QLocalServer>
|
|
#include <QLocalSocket>
|
|
|
|
#include "ipc.h"
|
|
#include "localserver.h"
|
|
|
|
#include "killswitch.h"
|
|
#include "logger.h"
|
|
|
|
#ifdef Q_OS_WIN
|
|
#include "tapcontroller_win.h"
|
|
#endif
|
|
|
|
namespace {
|
|
Logger logger("WgDaemonServer");
|
|
}
|
|
|
|
LocalServer::LocalServer(QObject *parent) : QObject(parent),
|
|
m_ipcServer(this)
|
|
{
|
|
// Create the server and listen outside of QtRO
|
|
m_server = QSharedPointer<QLocalServer>(new QLocalServer(this));
|
|
m_server->setSocketOptions(QLocalServer::WorldAccessOption);
|
|
|
|
if (!m_server->listen(amnezia::getIpcServiceUrl())) {
|
|
qDebug() << QString("Unable to start the server: %1.").arg(m_server->errorString());
|
|
return;
|
|
}
|
|
|
|
QObject::connect(m_server.data(), &QLocalServer::newConnection, this, [this]() {
|
|
qDebug() << "LocalServer new connection";
|
|
m_serverNode.addHostSideConnection(m_server->nextPendingConnection());
|
|
|
|
if (!m_isRemotingEnabled) {
|
|
m_isRemotingEnabled = true;
|
|
m_serverNode.enableRemoting(&m_ipcServer);
|
|
m_serverNode.enableRemoting(&m_tun2socks);
|
|
}
|
|
});
|
|
|
|
// Init Mozilla Wireguard Daemon
|
|
if (!server.initialize()) {
|
|
logger.error() << "Failed to initialize the server";
|
|
return;
|
|
}
|
|
|
|
KillSwitch::instance()->init();
|
|
|
|
#ifdef Q_OS_LINUX
|
|
// Signal handling for a proper shutdown.
|
|
QObject::connect(qApp, &QCoreApplication::aboutToQuit,
|
|
[]() { LinuxDaemon::instance()->deactivate(); });
|
|
#endif
|
|
|
|
#ifdef Q_OS_MAC
|
|
// Signal handling for a proper shutdown.
|
|
QObject::connect(qApp, &QCoreApplication::aboutToQuit,
|
|
[]() { MacOSDaemon::instance()->deactivate(); });
|
|
#endif
|
|
|
|
#ifdef Q_OS_WIN
|
|
// Signal handling for a proper shutdown.
|
|
QObject::connect(qApp, &QCoreApplication::aboutToQuit,
|
|
[]() { WindowsDaemon::instance()->deactivate(); });
|
|
#endif
|
|
}
|
|
|
|
LocalServer::~LocalServer()
|
|
{
|
|
qDebug() << "Local server stopped";
|
|
}
|
|
|