Merge branch 'dev' into qt_migration

This commit is contained in:
pokamest 2022-10-15 19:46:26 +03:00
commit 442e7eb015
127 changed files with 5657 additions and 1619 deletions

View file

@ -199,7 +199,7 @@ ErrorCode Ikev2Protocol::start()
setLastError(ErrorCode::AmneziaServiceConnectionFailed);
return ErrorCode::AmneziaServiceConnectionFailed;
}
certInstallProcess->setProgram("certutil");
certInstallProcess->setProgram(PermittedProcess::CertUtil);
QStringList arguments({"-f" , "-importpfx",
"-p", m_config[config_key::password].toString(),
certFile.fileName(), "NoExport"

View file

@ -1,5 +1,4 @@
#include "openvpnovercloakprotocol.h"
#include "core/servercontroller.h"
#include "utilities.h"
#include "containers/containers_defs.h"

View file

@ -1,8 +1,9 @@
#include <QCoreApplication>
#include <QFileInfo>
#include <QProcess>
#include <QRegularExpression>
#include <QTcpSocket>
#include <QTcpServer>
#include <QRandomGenerator>
#include "debug.h"
#include "defines.h"
@ -122,6 +123,21 @@ void OpenVpnProtocol::sendManagementCommand(const QString& command)
}
}
uint OpenVpnProtocol::selectMgmtPort()
{
for (int i = 0; i < 100; ++i) {
quint32 port = QRandomGenerator::global()->generate();
port = (double)(65000-15001) * port / UINT32_MAX + 15001;
QTcpServer s;
bool ok = s.listen(QHostAddress::LocalHost, port);
if (ok) return port;
}
return m_managementPort;
}
void OpenVpnProtocol::updateRouteGateway(QString line)
{
// TODO: fix for macos
@ -132,24 +148,13 @@ void OpenVpnProtocol::updateRouteGateway(QString line)
qDebug() << "Set VPN route gateway" << m_routeGateway;
}
QString OpenVpnProtocol::openVpnExecPath() const
{
#ifdef Q_OS_WIN
return Utils::executable("openvpn/openvpn", true);
#elif defined Q_OS_LINUX
return Utils::usrExecutable("openvpn");
#else
return Utils::executable("/openvpn", true);
#endif
}
ErrorCode OpenVpnProtocol::start()
{
#ifndef Q_OS_IOS
//qDebug() << "Start OpenVPN connection";
OpenVpnProtocol::stop();
if (!QFileInfo::exists(openVpnExecPath())) {
if (!QFileInfo::exists(Utils::openVpnExecPath())) {
setLastError(ErrorCode::OpenVpnExecutableMissing);
return lastError();
}
@ -162,7 +167,10 @@ ErrorCode OpenVpnProtocol::start()
// QString vpnLogFileNamePath = Utils::systemLogPath() + "/openvpn.log";
// Utils::createEmptyFile(vpnLogFileNamePath);
if (!m_managementServer.start(m_managementHost, m_managementPort)) {
uint mgmtPort = selectMgmtPort();
qDebug() << "OpenVpnProtocol::start mgmt port selected:" << mgmtPort;
if (!m_managementServer.start(m_managementHost, mgmtPort)) {
setLastError(ErrorCode::OpenVpnManagementServerError);
return lastError();
}
@ -183,9 +191,9 @@ ErrorCode OpenVpnProtocol::start()
setLastError(ErrorCode::AmneziaServiceConnectionFailed);
return ErrorCode::AmneziaServiceConnectionFailed;
}
m_openVpnProcess->setProgram(openVpnExecPath());
m_openVpnProcess->setProgram(PermittedProcess::OpenVPN);
QStringList arguments({"--config" , configPath(),
"--management", m_managementHost, QString::number(m_managementPort),
"--management", m_managementHost, QString::number(mgmtPort),
"--management-client"/*, "--log", vpnLogFileNamePath */
});
m_openVpnProcess->setArguments(arguments);

View file

@ -30,7 +30,6 @@ protected slots:
private:
QString configPath() const;
QString openVpnExecPath() const;
bool openVpnProcessIsRunning() const;
bool sendTermSignal();
void readOpenVpnConfiguration(const QJsonObject &configuration);
@ -47,6 +46,8 @@ private:
QString m_configFileName;
QTemporaryFile m_configFile;
uint selectMgmtPort();
private:
void updateRouteGateway(QString line);
void updateVpnGateway(const QString &line);

View file

@ -1,5 +1,4 @@
#include "shadowsocksvpnprotocol.h"
#include "core/servercontroller.h"
#include "debug.h"
#include "utilities.h"

View file

@ -1,7 +1,6 @@
#include <QCoreApplication>
#include <QFileInfo>
#include <QProcess>
#include <QRegularExpression>
#include <QTcpSocket>
#include <QThread>
@ -12,25 +11,20 @@
WireguardProtocol::WireguardProtocol(const QJsonObject &configuration, QObject* parent) :
VpnProtocol(configuration, parent)
{
//m_configFile.setFileTemplate(QDir::tempPath() + QDir::separator() + serviceName() + ".conf");
m_configFile.setFileName(QDir::tempPath() + QDir::separator() + serviceName() + ".conf");
readWireguardConfiguration(configuration);
}
WireguardProtocol::~WireguardProtocol()
{
//qDebug() << "WireguardProtocol::~WireguardProtocol() 1";
WireguardProtocol::stop();
QThread::msleep(200);
//qDebug() << "WireguardProtocol::~WireguardProtocol() 2";
}
void WireguardProtocol::stop()
{
//qDebug() << "WireguardProtocol::stop() 1";
#ifndef Q_OS_IOS
if (!QFileInfo::exists(wireguardExecPath())) {
if (!QFileInfo::exists(Utils::wireguardExecPath())) {
qCritical() << "Wireguard executable missing!";
setLastError(ErrorCode::ExecutableMissing);
return;
@ -51,7 +45,7 @@ void WireguardProtocol::stop()
return;
}
m_wireguardStopProcess->setProgram(wireguardExecPath());
m_wireguardStopProcess->setProgram(PermittedProcess::Wireguard);
QStringList arguments({"--remove", configPath()});
@ -74,7 +68,6 @@ void WireguardProtocol::stop()
setConnectionState(VpnProtocol::Disconnected);
#endif
//qDebug() << "WireguardProtocol::stop() 2";
}
void WireguardProtocol::readWireguardConfiguration(const QJsonObject &configuration)
@ -97,11 +90,6 @@ void WireguardProtocol::readWireguardConfiguration(const QJsonObject &configurat
}
//bool WireguardProtocol::openVpnProcessIsRunning() const
//{
// return Utils::processIsRunning("openvpn");
//}
QString WireguardProtocol::configPath() const
{
return m_configFileName;
@ -117,31 +105,17 @@ void WireguardProtocol::updateRouteGateway(QString line)
qDebug() << "Set VPN route gateway" << m_routeGateway;
}
QString WireguardProtocol::wireguardExecPath() const
{
#ifdef Q_OS_WIN
return Utils::executable("wireguard/wireguard-service", true);
#elif defined Q_OS_LINUX
return Utils::usrExecutable("wg");
#else
return Utils::executable("/wireguard", true);
#endif
}
ErrorCode WireguardProtocol::start()
{
//qDebug() << "WireguardProtocol::start() 1";
#ifndef Q_OS_IOS
if (!m_isConfigLoaded) {
setLastError(ErrorCode::ConfigMissing);
return lastError();
}
//qDebug() << "Start Wireguard connection";
WireguardProtocol::stop();
if (!QFileInfo::exists(wireguardExecPath())) {
if (!QFileInfo::exists(Utils::wireguardExecPath())) {
setLastError(ErrorCode::ExecutableMissing);
return lastError();
}
@ -156,7 +130,6 @@ ErrorCode WireguardProtocol::start()
m_wireguardStartProcess = IpcClient::CreatePrivilegedProcess();
if (!m_wireguardStartProcess) {
//qWarning() << "IpcProcess replica is not created!";
setLastError(ErrorCode::AmneziaServiceConnectionFailed);
return ErrorCode::AmneziaServiceConnectionFailed;
}
@ -168,7 +141,7 @@ ErrorCode WireguardProtocol::start()
return ErrorCode::AmneziaServiceConnectionFailed;
}
m_wireguardStartProcess->setProgram(wireguardExecPath());
m_wireguardStartProcess->setProgram(PermittedProcess::Wireguard);
QStringList arguments({"--add", configPath()});
@ -210,8 +183,6 @@ ErrorCode WireguardProtocol::start()
m_wireguardStartProcess->start();
m_wireguardStartProcess->waitForFinished(10000);
//qDebug() << "WireguardProtocol::start() 2";
return ErrorCode::NoError;
#else
return ErrorCode::NotImplementedError;

View file

@ -23,8 +23,6 @@ public:
private:
QString configPath() const;
QString wireguardExecPath() const;
//bool openVpnProcessIsRunning() const;
void readWireguardConfiguration(const QJsonObject &configuration);
void updateRouteGateway(QString line);