Random port on install

This commit is contained in:
pokamest 2023-10-20 02:25:40 +01:00
parent 338499247d
commit 2da1025f26
4 changed files with 44 additions and 25 deletions

View file

@ -1,5 +1,7 @@
#include "protocols_defs.h" #include "protocols_defs.h"
#include <QRandomGenerator>
using namespace amnezia; using namespace amnezia;
QDebug operator<<(QDebug debug, const amnezia::ProtocolEnumNS::Proto &p) 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) int ProtocolProps::defaultPort(Proto p)
{ {
switch (p) { switch (p) {
case Proto::Any: return -1; case Proto::Any: return -1;
case Proto::OpenVpn: return 1194; case Proto::OpenVpn: return QString(protocols::openvpn::defaultPort).toInt();
case Proto::Cloak: return 443; case Proto::Cloak: return QString(protocols::cloak::defaultPort).toInt();
case Proto::ShadowSocks: return 6789; case Proto::ShadowSocks: return QString(protocols::shadowsocks::defaultPort).toInt();
case Proto::WireGuard: return 51820; case Proto::WireGuard: return QString(protocols::wireguard::defaultPort).toInt();
case Proto::Awg: return 55424; case Proto::Awg: return QString(protocols::awg::defaultPort).toInt();
case Proto::Ikev2: return -1; case Proto::Ikev2: return -1;
case Proto::L2tp: return -1; case Proto::L2tp: return -1;

View file

@ -228,6 +228,8 @@ namespace amnezia
Q_INVOKABLE static ServiceType protocolService(Proto p); Q_INVOKABLE static ServiceType protocolService(Proto p);
Q_INVOKABLE static int getPortForInstall(Proto p);
Q_INVOKABLE static int defaultPort(Proto p); Q_INVOKABLE static int defaultPort(Proto p);
Q_INVOKABLE static bool defaultPortChangeable(Proto p); Q_INVOKABLE static bool defaultPortChangeable(Proto p);

View file

@ -75,33 +75,35 @@ void InstallController::install(DockerContainer container, int port, TransportPr
ProtocolProps::transportProtoToString(transportProto, protocol)); ProtocolProps::transportProtoToString(transportProto, protocol));
if (container == DockerContainer::Awg) { if (container == DockerContainer::Awg) {
QString defaultJunkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10)); QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10));
QString defaultJunkPacketMinSize = QString::number(50); QString junkPacketMinSize = QString::number(50);
QString defaultJunkPacketMaxSize = QString::number(1000); QString junkPacketMaxSize = QString::number(1000);
QString defaultInitPacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150)); QString initPacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150));
QString defaultResponsePacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150)); QString responsePacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150));
QSet<QString> headersValue; QSet<QString> headersValue;
while (headersValue.size() != 4) { while (headersValue.size() != 4) {
headersValue.insert(QString::number(QRandomGenerator::global()->bounded(1, std::numeric_limits<qint32>::max())));
auto max = (std::numeric_limits<qint32>::max)();
headersValue.insert(QString::number(QRandomGenerator::global()->bounded(1, max)));
} }
auto headersValueList = headersValue.values(); auto headersValueList = headersValue.values();
QString defaultInitPacketMagicHeader = headersValueList.at(0); QString initPacketMagicHeader = headersValueList.at(0);
QString defaultResponsePacketMagicHeader = headersValueList.at(1); QString responsePacketMagicHeader = headersValueList.at(1);
QString defaultUnderloadPacketMagicHeader = headersValueList.at(2); QString underloadPacketMagicHeader = headersValueList.at(2);
QString defaultTransportPacketMagicHeader = headersValueList.at(3); QString transportPacketMagicHeader = headersValueList.at(3);
containerConfig[config_key::junkPacketCount] = defaultJunkPacketCount; containerConfig[config_key::junkPacketCount] = junkPacketCount;
containerConfig[config_key::junkPacketMinSize] = defaultJunkPacketMinSize; containerConfig[config_key::junkPacketMinSize] = junkPacketMinSize;
containerConfig[config_key::junkPacketMaxSize] = defaultJunkPacketMaxSize; containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
containerConfig[config_key::initPacketJunkSize] = defaultInitPacketJunkSize; containerConfig[config_key::initPacketJunkSize] = initPacketJunkSize;
containerConfig[config_key::responsePacketJunkSize] = defaultResponsePacketJunkSize; containerConfig[config_key::responsePacketJunkSize] = responsePacketJunkSize;
containerConfig[config_key::initPacketMagicHeader] = defaultInitPacketMagicHeader; containerConfig[config_key::initPacketMagicHeader] = initPacketMagicHeader;
containerConfig[config_key::responsePacketMagicHeader] = defaultResponsePacketMagicHeader; containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader;
containerConfig[config_key::underloadPacketMagicHeader] = defaultUnderloadPacketMagicHeader; containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader;
containerConfig[config_key::transportPacketMagicHeader] = defaultTransportPacketMagicHeader; containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader;
} }
if (container == DockerContainer::Sftp) { if (container == DockerContainer::Sftp) {

View file

@ -224,7 +224,7 @@ PageType {
if (ProtocolProps.defaultPort(defaultContainerProto) < 0) { if (ProtocolProps.defaultPort(defaultContainerProto) < 0) {
port.visible = false port.visible = false
} else { } else {
port.textFieldText = ProtocolProps.defaultPort(defaultContainerProto) port.textFieldText = ProtocolProps.getPortForInstall(defaultContainerProto)
} }
transportProtoSelector.currentIndex = ProtocolProps.defaultTransportProto(defaultContainerProto) transportProtoSelector.currentIndex = ProtocolProps.defaultTransportProto(defaultContainerProto)