From 2da1025f2695c8a8ba2b1f0d82bdcacd0437b473 Mon Sep 17 00:00:00 2001 From: pokamest Date: Fri, 20 Oct 2023 02:25:40 +0100 Subject: [PATCH] Random port on install --- client/protocols/protocols_defs.cpp | 25 +++++++++--- client/protocols/protocols_defs.h | 2 + client/ui/controllers/installController.cpp | 40 ++++++++++--------- .../PageSetupWizardProtocolSettings.qml | 2 +- 4 files changed, 44 insertions(+), 25 deletions(-) diff --git a/client/protocols/protocols_defs.cpp b/client/protocols/protocols_defs.cpp index b3823a11..a451014c 100644 --- a/client/protocols/protocols_defs.cpp +++ b/client/protocols/protocols_defs.cpp @@ -1,5 +1,7 @@ #include "protocols_defs.h" +#include + using namespace amnezia; QDebug operator<<(QDebug debug, const amnezia::ProtocolEnumNS::Proto &p) @@ -98,15 +100,28 @@ amnezia::ServiceType ProtocolProps::protocolService(Proto p) } } +int ProtocolProps::getPortForInstall(Proto p) +{ + switch (p) { + case Awg: + case WireGuard: + case ShadowSocks: + case OpenVpn: + return QRandomGenerator::global()->bounded(30000, 50000); + default: + return defaultPort(p); + } +} + int ProtocolProps::defaultPort(Proto p) { switch (p) { case Proto::Any: return -1; - case Proto::OpenVpn: return 1194; - case Proto::Cloak: return 443; - case Proto::ShadowSocks: return 6789; - case Proto::WireGuard: return 51820; - case Proto::Awg: return 55424; + case Proto::OpenVpn: return QString(protocols::openvpn::defaultPort).toInt(); + case Proto::Cloak: return QString(protocols::cloak::defaultPort).toInt(); + case Proto::ShadowSocks: return QString(protocols::shadowsocks::defaultPort).toInt(); + case Proto::WireGuard: return QString(protocols::wireguard::defaultPort).toInt(); + case Proto::Awg: return QString(protocols::awg::defaultPort).toInt(); case Proto::Ikev2: return -1; case Proto::L2tp: return -1; diff --git a/client/protocols/protocols_defs.h b/client/protocols/protocols_defs.h index ed2ed313..ab9cac1b 100644 --- a/client/protocols/protocols_defs.h +++ b/client/protocols/protocols_defs.h @@ -228,6 +228,8 @@ namespace amnezia Q_INVOKABLE static ServiceType protocolService(Proto p); + Q_INVOKABLE static int getPortForInstall(Proto p); + Q_INVOKABLE static int defaultPort(Proto p); Q_INVOKABLE static bool defaultPortChangeable(Proto p); diff --git a/client/ui/controllers/installController.cpp b/client/ui/controllers/installController.cpp index 8efe368b..8853f108 100644 --- a/client/ui/controllers/installController.cpp +++ b/client/ui/controllers/installController.cpp @@ -75,33 +75,35 @@ void InstallController::install(DockerContainer container, int port, TransportPr ProtocolProps::transportProtoToString(transportProto, protocol)); if (container == DockerContainer::Awg) { - QString defaultJunkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10)); - QString defaultJunkPacketMinSize = QString::number(50); - QString defaultJunkPacketMaxSize = QString::number(1000); - QString defaultInitPacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150)); - QString defaultResponsePacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150)); + QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10)); + QString junkPacketMinSize = QString::number(50); + QString junkPacketMaxSize = QString::number(1000); + QString initPacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150)); + QString responsePacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150)); QSet headersValue; while (headersValue.size() != 4) { - headersValue.insert(QString::number(QRandomGenerator::global()->bounded(1, std::numeric_limits::max()))); + + auto max = (std::numeric_limits::max)(); + headersValue.insert(QString::number(QRandomGenerator::global()->bounded(1, max))); } auto headersValueList = headersValue.values(); - QString defaultInitPacketMagicHeader = headersValueList.at(0); - QString defaultResponsePacketMagicHeader = headersValueList.at(1); - QString defaultUnderloadPacketMagicHeader = headersValueList.at(2); - QString defaultTransportPacketMagicHeader = headersValueList.at(3); + QString initPacketMagicHeader = headersValueList.at(0); + QString responsePacketMagicHeader = headersValueList.at(1); + QString underloadPacketMagicHeader = headersValueList.at(2); + QString transportPacketMagicHeader = headersValueList.at(3); - containerConfig[config_key::junkPacketCount] = defaultJunkPacketCount; - containerConfig[config_key::junkPacketMinSize] = defaultJunkPacketMinSize; - containerConfig[config_key::junkPacketMaxSize] = defaultJunkPacketMaxSize; - containerConfig[config_key::initPacketJunkSize] = defaultInitPacketJunkSize; - containerConfig[config_key::responsePacketJunkSize] = defaultResponsePacketJunkSize; - containerConfig[config_key::initPacketMagicHeader] = defaultInitPacketMagicHeader; - containerConfig[config_key::responsePacketMagicHeader] = defaultResponsePacketMagicHeader; - containerConfig[config_key::underloadPacketMagicHeader] = defaultUnderloadPacketMagicHeader; - containerConfig[config_key::transportPacketMagicHeader] = defaultTransportPacketMagicHeader; + containerConfig[config_key::junkPacketCount] = junkPacketCount; + containerConfig[config_key::junkPacketMinSize] = junkPacketMinSize; + containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize; + containerConfig[config_key::initPacketJunkSize] = initPacketJunkSize; + containerConfig[config_key::responsePacketJunkSize] = responsePacketJunkSize; + containerConfig[config_key::initPacketMagicHeader] = initPacketMagicHeader; + containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader; + containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader; + containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader; } if (container == DockerContainer::Sftp) { diff --git a/client/ui/qml/Pages2/PageSetupWizardProtocolSettings.qml b/client/ui/qml/Pages2/PageSetupWizardProtocolSettings.qml index 2b97f044..7698c755 100644 --- a/client/ui/qml/Pages2/PageSetupWizardProtocolSettings.qml +++ b/client/ui/qml/Pages2/PageSetupWizardProtocolSettings.qml @@ -224,7 +224,7 @@ PageType { if (ProtocolProps.defaultPort(defaultContainerProto) < 0) { port.visible = false } else { - port.textFieldText = ProtocolProps.defaultPort(defaultContainerProto) + port.textFieldText = ProtocolProps.getPortForInstall(defaultContainerProto) } transportProtoSelector.currentIndex = ProtocolProps.defaultTransportProto(defaultContainerProto)