diff --git a/client/configurators/awg_configurator.cpp b/client/configurators/awg_configurator.cpp index b7246c40..f83acb19 100644 --- a/client/configurators/awg_configurator.cpp +++ b/client/configurators/awg_configurator.cpp @@ -36,21 +36,24 @@ QString AwgConfigurator::createConfig(const ServerCredentials &credentials, Dock jsonConfig[config_key::junkPacketMaxSize] = configMap.value(config_key::junkPacketMaxSize); jsonConfig[config_key::initPacketJunkSize] = configMap.value(config_key::initPacketJunkSize); jsonConfig[config_key::responsePacketJunkSize] = configMap.value(config_key::responsePacketJunkSize); - jsonConfig[config_key::cookieReplyPacketJunkSize] = configMap.value(config_key::cookieReplyPacketJunkSize); - jsonConfig[config_key::transportPacketJunkSize] = configMap.value(config_key::transportPacketJunkSize); jsonConfig[config_key::initPacketMagicHeader] = configMap.value(config_key::initPacketMagicHeader); jsonConfig[config_key::responsePacketMagicHeader] = configMap.value(config_key::responsePacketMagicHeader); jsonConfig[config_key::underloadPacketMagicHeader] = configMap.value(config_key::underloadPacketMagicHeader); jsonConfig[config_key::transportPacketMagicHeader] = configMap.value(config_key::transportPacketMagicHeader); - jsonConfig[config_key::specialJunk1] = configMap.value(amnezia::config_key::specialJunk1); - jsonConfig[config_key::specialJunk2] = configMap.value(amnezia::config_key::specialJunk2); - jsonConfig[config_key::specialJunk3] = configMap.value(amnezia::config_key::specialJunk3); - jsonConfig[config_key::specialJunk4] = configMap.value(amnezia::config_key::specialJunk4); - jsonConfig[config_key::specialJunk5] = configMap.value(amnezia::config_key::specialJunk5); - jsonConfig[config_key::controlledJunk1] = configMap.value(amnezia::config_key::controlledJunk1); - jsonConfig[config_key::controlledJunk2] = configMap.value(amnezia::config_key::controlledJunk2); - jsonConfig[config_key::controlledJunk3] = configMap.value(amnezia::config_key::controlledJunk3); - jsonConfig[config_key::specialHandshakeTimeout] = configMap.value(amnezia::config_key::specialHandshakeTimeout); + + // jsonConfig[config_key::cookieReplyPacketJunkSize] = configMap.value(config_key::cookieReplyPacketJunkSize); + // jsonConfig[config_key::transportPacketJunkSize] = configMap.value(config_key::transportPacketJunkSize); + + // jsonConfig[config_key::specialJunk1] = configMap.value(amnezia::config_key::specialJunk1); + // jsonConfig[config_key::specialJunk2] = configMap.value(amnezia::config_key::specialJunk2); + // jsonConfig[config_key::specialJunk3] = configMap.value(amnezia::config_key::specialJunk3); + // jsonConfig[config_key::specialJunk4] = configMap.value(amnezia::config_key::specialJunk4); + // jsonConfig[config_key::specialJunk5] = configMap.value(amnezia::config_key::specialJunk5); + // jsonConfig[config_key::controlledJunk1] = configMap.value(amnezia::config_key::controlledJunk1); + // jsonConfig[config_key::controlledJunk2] = configMap.value(amnezia::config_key::controlledJunk2); + // jsonConfig[config_key::controlledJunk3] = configMap.value(amnezia::config_key::controlledJunk3); + // jsonConfig[config_key::specialHandshakeTimeout] = configMap.value(amnezia::config_key::specialHandshakeTimeout); + jsonConfig[config_key::mtu] = containerConfig.value(ProtocolProps::protoToString(Proto::Awg)).toObject().value(config_key::mtu).toString(protocols::awg::defaultMtu); diff --git a/client/core/controllers/serverController.cpp b/client/core/controllers/serverController.cpp index b5d35a2f..3c24edea 100644 --- a/client/core/controllers/serverController.cpp +++ b/client/core/controllers/serverController.cpp @@ -349,7 +349,7 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c if ((oldProtoConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress) != newProtoConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress)) || (oldProtoConfig.value(config_key::port).toString(protocols::awg::defaultPort) - != newProtoConfig.value(config_key::port).toString(protocols::awg::defaultPort)) + != newProtoConfig.value(config_key::port).toString(protocols::awg::defaultPort)) || (oldProtoConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount) != newProtoConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount)) || (oldProtoConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize) @@ -360,10 +360,6 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c != newProtoConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize)) || (oldProtoConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize) != newProtoConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize)) - || (oldProtoConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize) - != newProtoConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize)) - || (oldProtoConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize) - != newProtoConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize)) || (oldProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader) != newProtoConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader)) || (oldProtoConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader) @@ -371,25 +367,11 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c || (oldProtoConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader) != newProtoConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader)) || (oldProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)) - != newProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)) - // || (oldProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1)) - // != newProtoConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1) - // || (oldProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2)) - // != newProtoConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2) - // || (oldProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3)) - // != newProtoConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3) - // || (oldProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4)) - // != newProtoConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4) - // || (oldProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5)) - // != newProtoConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5) - // || (oldProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1)) - // != newProtoConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1) - // || (oldProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2)) - // != newProtoConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2) - // || (oldProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3)) - // != newProtoConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3) - // || (oldProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout)) - // != newProtoConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout)) + != newProtoConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader)) + // || (oldProtoConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize) + // != newProtoConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize)) + // || (oldProtoConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize) + // != newProtoConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize)) return true; } @@ -398,7 +380,7 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c if ((oldProtoConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress) != newProtoConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress)) || (oldProtoConfig.value(config_key::port).toString(protocols::wireguard::defaultPort) - != newProtoConfig.value(config_key::port).toString(protocols::wireguard::defaultPort))) + != newProtoConfig.value(config_key::port).toString(protocols::wireguard::defaultPort))) return true; } @@ -659,21 +641,13 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential vars.append({ { "$JUNK_PACKET_MAX_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMaxSize).toString() } }); vars.append({ { "$INIT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::initPacketJunkSize).toString() } }); vars.append({ { "$RESPONSE_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::responsePacketJunkSize).toString() } }); - vars.append({ { "$COOKIE_REPLY_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::cookieReplyPacketJunkSize).toString() } }); - vars.append({ { "$TRANSPORT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::transportPacketJunkSize).toString() } }); vars.append({ { "$INIT_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::initPacketMagicHeader).toString() } }); vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).toString() } }); vars.append({ { "$UNDERLOAD_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader).toString() } }); vars.append({ { "$TRANSPORT_PACKET_MAGIC_HEADER", amneziaWireguarConfig.value(config_key::transportPacketMagicHeader).toString() } }); - // vars.append({ { "$SPECIAL_JUNK_1", amneziaWireguarConfig.value(config_key::specialJunk1).toString() } }); - // vars.append({ { "$SPECIAL_JUNK_2", amneziaWireguarConfig.value(config_key::specialJunk2).toString() } }); - // vars.append({ { "$SPECIAL_JUNK_3", amneziaWireguarConfig.value(config_key::specialJunk3).toString() } }); - // vars.append({ { "$SPECIAL_JUNK_4", amneziaWireguarConfig.value(config_key::specialJunk4).toString() } }); - // vars.append({ { "$SPECIAL_JUNK_5", amneziaWireguarConfig.value(config_key::specialJunk5).toString() } }); - // vars.append({ { "$CONTROLLED_JUNK_1", amneziaWireguarConfig.value(config_key::controlledJunk1).toString() } }); - // vars.append({ { "$CONTROLLED_JUNK_2", amneziaWireguarConfig.value(config_key::controlledJunk2).toString() } }); - // vars.append({ { "$CONTROLLED_JUNK_3", amneziaWireguarConfig.value(config_key::controlledJunk3).toString() } }); - // vars.append({ { "$SPECIAL_HANDSHAKE_TIMEOUT", amneziaWireguarConfig.value(config_key::specialHandshakeTimeout).toString() } }); + + vars.append({ { "$COOKIE_REPLY_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::cookieReplyPacketJunkSize).toString() } }); + vars.append({ { "$TRANSPORT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::transportPacketJunkSize).toString() } }); // Socks5 proxy vars vars.append({ { "$SOCKS5_PROXY_PORT", socks5ProxyConfig.value(config_key::port).toString(protocols::socks5Proxy::defaultPort) } }); diff --git a/client/platforms/macos/daemon/wireguardutilsmacos.cpp b/client/platforms/macos/daemon/wireguardutilsmacos.cpp index fa147090..cce4afab 100644 --- a/client/platforms/macos/daemon/wireguardutilsmacos.cpp +++ b/client/platforms/macos/daemon/wireguardutilsmacos.cpp @@ -138,6 +138,16 @@ bool WireguardUtilsMacos::addInterface(const InterfaceConfig& config) { out << "h4=" << config.m_transportPacketMagicHeader << "\n"; } + for (const QString& key : config.m_specialJunk.keys()) { + out << key.toLower() << "=" << config.m_specialJunk.value(key) << "\n"; + } + for (const QString& key : config.m_controlledJunk.keys()) { + out << key.toLower() << "=" << config.m_controlledJunk.value(key) << "\n"; + } + if (!config.m_specialHandshakeTimeout.isEmpty()) { + out << "itime=" << config.m_specialHandshakeTimeout << "\n"; + } + int err = uapiErrno(uapiCommand(message)); if (err != 0) { logger.error() << "Interface configuration failed:" << strerror(err); diff --git a/client/protocols/protocols_defs.h b/client/protocols/protocols_defs.h index 45696bca..b4cbb6de 100644 --- a/client/protocols/protocols_defs.h +++ b/client/protocols/protocols_defs.h @@ -242,7 +242,7 @@ namespace amnezia constexpr char defaultControlledJunk1[] = ""; constexpr char defaultControlledJunk2[] = ""; constexpr char defaultControlledJunk3[] = ""; - constexpr char defaultSpecialHandshakeTimeout[] = "0"; + constexpr char defaultSpecialHandshakeTimeout[] = ""; } namespace socks5Proxy diff --git a/client/resources.qrc b/client/resources.qrc index 72eb15c7..54b5846c 100644 --- a/client/resources.qrc +++ b/client/resources.qrc @@ -239,6 +239,7 @@ ui/qml/Components/ApiPremV1MigrationDrawer.qml ui/qml/Components/ApiPremV1SubListDrawer.qml ui/qml/Components/OtpCodeDrawer.qml + ui/qml/Components/AwgTextField.qml images/flagKit/ZW.svg diff --git a/client/server_scripts/awg/Dockerfile b/client/server_scripts/awg/Dockerfile index f4174d47..a6118a84 100644 --- a/client/server_scripts/awg/Dockerfile +++ b/client/server_scripts/awg/Dockerfile @@ -1,4 +1,4 @@ -FROM marko1777/awg:latest +FROM amneziavpn/amnezia-wg:latest LABEL maintainer="AmneziaVPN" diff --git a/client/server_scripts/awg/configure_container.sh b/client/server_scripts/awg/configure_container.sh index 0460934f..e327f080 100644 --- a/client/server_scripts/awg/configure_container.sh +++ b/client/server_scripts/awg/configure_container.sh @@ -19,8 +19,6 @@ Jmin = $JUNK_PACKET_MIN_SIZE Jmax = $JUNK_PACKET_MAX_SIZE S1 = $INIT_PACKET_JUNK_SIZE S2 = $RESPONSE_PACKET_JUNK_SIZE -S3 = $COOKIE_REPLY_PACKET_JUNK_SIZE -S4 = $TRANSPORT_PACKET_JUNK_SIZE H1 = $INIT_PACKET_MAGIC_HEADER H2 = $RESPONSE_PACKET_MAGIC_HEADER H3 = $UNDERLOAD_PACKET_MAGIC_HEADER diff --git a/client/server_scripts/awg/template.conf b/client/server_scripts/awg/template.conf index c136bb9e..79932806 100644 --- a/client/server_scripts/awg/template.conf +++ b/client/server_scripts/awg/template.conf @@ -7,8 +7,6 @@ Jmin = $JUNK_PACKET_MIN_SIZE Jmax = $JUNK_PACKET_MAX_SIZE S1 = $INIT_PACKET_JUNK_SIZE S2 = $RESPONSE_PACKET_JUNK_SIZE -S3 = $COOKIE_REPLY_PACKET_JUNK_SIZE -S4 = $TRANSPORT_PACKET_JUNK_SIZE H1 = $INIT_PACKET_MAGIC_HEADER H2 = $RESPONSE_PACKET_MAGIC_HEADER H3 = $UNDERLOAD_PACKET_MAGIC_HEADER diff --git a/client/ui/controllers/api/apiConfigsController.cpp b/client/ui/controllers/api/apiConfigsController.cpp index 0889ae3b..0b0a9b92 100644 --- a/client/ui/controllers/api/apiConfigsController.cpp +++ b/client/ui/controllers/api/apiConfigsController.cpp @@ -162,6 +162,9 @@ namespace auto serverProtocolConfig = container.value(containerName).toObject(); auto clientProtocolConfig = QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object(); + + //TODO looks like this block can be removed after v1 configs EOL + serverProtocolConfig[config_key::junkPacketCount] = clientProtocolConfig.value(config_key::junkPacketCount); serverProtocolConfig[config_key::junkPacketMinSize] = clientProtocolConfig.value(config_key::junkPacketMinSize); serverProtocolConfig[config_key::junkPacketMaxSize] = clientProtocolConfig.value(config_key::junkPacketMaxSize); @@ -184,6 +187,8 @@ namespace serverProtocolConfig[config_key::controlledJunk3] = clientProtocolConfig.value(config_key::controlledJunk3); serverProtocolConfig[config_key::specialHandshakeTimeout] = clientProtocolConfig.value(config_key::specialHandshakeTimeout); + // + container[containerName] = serverProtocolConfig; containers.replace(0, container); newServerConfig[config_key::containers] = containers; diff --git a/client/ui/controllers/importController.cpp b/client/ui/controllers/importController.cpp index ee207d76..ea1d5d8e 100644 --- a/client/ui/controllers/importController.cpp +++ b/client/ui/controllers/importController.cpp @@ -52,8 +52,7 @@ namespace || (config.contains(amneziaConfigPatternHostName) && config.contains(amneziaConfigPatternUserName) && config.contains(amneziaConfigPatternPassword))) { return ConfigTypes::Amnezia; - } else if (config.contains(wireguardConfigPatternSectionInterface) - && config.contains(wireguardConfigPatternSectionPeer)) { + } else if (config.contains(wireguardConfigPatternSectionInterface) && config.contains(wireguardConfigPatternSectionPeer)) { return ConfigTypes::WireGuard; } else if ((config.contains(xrayConfigPatternInbound)) && (config.contains(xrayConfigPatternOutbound))) { return ConfigTypes::Xray; @@ -69,8 +68,7 @@ namespace #endif } // namespace -ImportController::ImportController(const QSharedPointer &serversModel, - const QSharedPointer &containersModel, +ImportController::ImportController(const QSharedPointer &serversModel, const QSharedPointer &containersModel, const std::shared_ptr &settings, QObject *parent) : QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel), m_settings(settings) { @@ -105,42 +103,40 @@ bool ImportController::extractConfigFromData(QString data) if (config.startsWith("vless://")) { m_configType = ConfigTypes::Xray; - m_config = extractXrayConfig(Utils::JsonToString(serialization::vless::Deserialize(config, &prefix, &errormsg), - QJsonDocument::JsonFormat::Compact), - prefix); + m_config = extractXrayConfig( + Utils::JsonToString(serialization::vless::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), + prefix); return m_config.empty() ? false : true; } if (config.startsWith("vmess://") && config.contains("@")) { m_configType = ConfigTypes::Xray; - m_config = - extractXrayConfig(Utils::JsonToString(serialization::vmess_new::Deserialize(config, &prefix, &errormsg), - QJsonDocument::JsonFormat::Compact), - prefix); + m_config = extractXrayConfig( + Utils::JsonToString(serialization::vmess_new::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), + prefix); return m_config.empty() ? false : true; } if (config.startsWith("vmess://")) { m_configType = ConfigTypes::Xray; - m_config = extractXrayConfig(Utils::JsonToString(serialization::vmess::Deserialize(config, &prefix, &errormsg), - QJsonDocument::JsonFormat::Compact), - prefix); + m_config = extractXrayConfig( + Utils::JsonToString(serialization::vmess::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), + prefix); return m_config.empty() ? false : true; } if (config.startsWith("trojan://")) { m_configType = ConfigTypes::Xray; - m_config = extractXrayConfig(Utils::JsonToString(serialization::trojan::Deserialize(config, &prefix, &errormsg), - QJsonDocument::JsonFormat::Compact), - prefix); + m_config = extractXrayConfig( + Utils::JsonToString(serialization::trojan::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), + prefix); return m_config.empty() ? false : true; } if (config.startsWith("ss://") && !config.contains("plugin=")) { m_configType = ConfigTypes::ShadowSocks; - m_config = extractXrayConfig(Utils::JsonToString(serialization::ss::Deserialize(config, &prefix, &errormsg), - QJsonDocument::JsonFormat::Compact), - prefix); + m_config = extractXrayConfig( + Utils::JsonToString(serialization::ss::Deserialize(config, &prefix, &errormsg), QJsonDocument::JsonFormat::Compact), prefix); return m_config.empty() ? false : true; } @@ -158,8 +154,7 @@ bool ImportController::extractConfigFromData(QString data) m_configType = checkConfigFormat(config); if (m_configType == ConfigTypes::Invalid) { config.replace("vpn://", ""); - QByteArray ba = - QByteArray::fromBase64(config.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); + QByteArray ba = QByteArray::fromBase64(config.toUtf8(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); QByteArray baUncompressed = qUncompress(ba); if (!baUncompressed.isEmpty()) { ba = baUncompressed; @@ -276,10 +271,8 @@ void ImportController::processNativeWireGuardConfig() auto containers = m_config.value(config_key::containers).toArray(); if (!containers.isEmpty()) { auto container = containers.at(0).toObject(); - auto serverProtocolConfig = - container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject(); - auto clientProtocolConfig = - QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object(); + auto serverProtocolConfig = container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject(); + auto clientProtocolConfig = QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object(); QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5)); QString junkPacketMinSize = QString::number(10); @@ -289,21 +282,23 @@ void ImportController::processNativeWireGuardConfig() clientProtocolConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize; clientProtocolConfig[config_key::initPacketJunkSize] = "0"; clientProtocolConfig[config_key::responsePacketJunkSize] = "0"; - clientProtocolConfig[config_key::cookieReplyPacketJunkSize] = "0"; - clientProtocolConfig[config_key::transportPacketJunkSize] = "0"; clientProtocolConfig[config_key::initPacketMagicHeader] = "1"; clientProtocolConfig[config_key::responsePacketMagicHeader] = "2"; clientProtocolConfig[config_key::underloadPacketMagicHeader] = "3"; clientProtocolConfig[config_key::transportPacketMagicHeader] = "4"; - clientProtocolConfig[config_key::specialJunk1] = ""; - clientProtocolConfig[config_key::specialJunk2] = ""; - clientProtocolConfig[config_key::specialJunk3] = ""; - clientProtocolConfig[config_key::specialJunk4] = ""; - clientProtocolConfig[config_key::specialJunk5] = ""; - clientProtocolConfig[config_key::controlledJunk1] = ""; - clientProtocolConfig[config_key::controlledJunk2] = ""; - clientProtocolConfig[config_key::controlledJunk3] = ""; - clientProtocolConfig[config_key::specialHandshakeTimeout] = "0"; + + // clientProtocolConfig[config_key::cookieReplyPacketJunkSize] = "0"; + // clientProtocolConfig[config_key::transportPacketJunkSize] = "0"; + + // clientProtocolConfig[config_key::specialJunk1] = ""; + // clientProtocolConfig[config_key::specialJunk2] = ""; + // clientProtocolConfig[config_key::specialJunk3] = ""; + // clientProtocolConfig[config_key::specialJunk4] = ""; + // clientProtocolConfig[config_key::specialJunk5] = ""; + // clientProtocolConfig[config_key::controlledJunk1] = ""; + // clientProtocolConfig[config_key::controlledJunk2] = ""; + // clientProtocolConfig[config_key::controlledJunk3] = ""; + // clientProtocolConfig[config_key::specialHandshakeTimeout] = "0"; clientProtocolConfig[config_key::isObfuscationEnabled] = true; @@ -427,8 +422,7 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data) lastConfig[config_key::hostName] = hostName; lastConfig[config_key::port] = port.toInt(); - if (!configMap.value("PrivateKey").isEmpty() && !configMap.value("Address").isEmpty() - && !configMap.value("PublicKey").isEmpty()) { + if (!configMap.value("PrivateKey").isEmpty() && !configMap.value("Address").isEmpty() && !configMap.value("PublicKey").isEmpty()) { lastConfig[config_key::client_priv_key] = configMap.value("PrivateKey"); lastConfig[config_key::client_ip] = configMap.value("Address"); @@ -465,17 +459,12 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data) config_key::responsePacketMagicHeader, config_key::underloadPacketMagicHeader, config_key::transportPacketMagicHeader }; - const QStringList optionalJunkFields = { config_key::cookieReplyPacketJunkSize, - config_key::transportPacketJunkSize, - config_key::specialJunk1, - config_key::specialJunk2, - config_key::specialJunk3, - config_key::specialJunk4, - config_key::specialJunk5, - config_key::controlledJunk1, - config_key::controlledJunk2, - config_key::controlledJunk3, - config_key::specialHandshakeTimeout }; + const QStringList optionalJunkFields = { // config_key::cookieReplyPacketJunkSize, + // config_key::transportPacketJunkSize, + config_key::specialJunk1, config_key::specialJunk2, config_key::specialJunk3, + config_key::specialJunk4, config_key::specialJunk5, config_key::controlledJunk1, + config_key::controlledJunk2, config_key::controlledJunk3, config_key::specialHandshakeTimeout + }; bool hasAllRequiredFields = std::all_of(requiredJunkFields.begin(), requiredJunkFields.end(), [&configMap](const QString &field) { return !configMap.value(field).isEmpty(); }); @@ -497,8 +486,7 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data) if (!configMap.value("MTU").isEmpty()) { lastConfig[config_key::mtu] = configMap.value("MTU"); } else { - lastConfig[config_key::mtu] = - protocolName == "awg" ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu; + lastConfig[config_key::mtu] = protocolName == "awg" ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu; } QJsonObject wireguardConfig; @@ -699,23 +687,14 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig) || (containerName == ContainerProps::containerToString(DockerContainer::Cloak)) || (containerName == ContainerProps::containerToString(DockerContainer::ShadowSocks))) { - QString protocolConfig = containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)] - .toObject()[config_key::last_config] - .toString(); - QString protocolConfigJson = - QJsonDocument::fromJson(protocolConfig.toUtf8()).object()[config_key::config].toString(); + QString protocolConfig = + containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)].toObject()[config_key::last_config].toString(); + QString protocolConfigJson = QJsonDocument::fromJson(protocolConfig.toUtf8()).object()[config_key::config].toString(); // https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/script-options.rst - QStringList dangerousTags { "up", - "tls-verify", - "ipchange", - "client-connect", - "route-up", - "route-pre-down", - "client-disconnect", - "down", - "learn-address", - "auth-user-pass-verify" }; + QStringList dangerousTags { + "up", "tls-verify", "ipchange", "client-connect", "route-up", "route-pre-down", "client-disconnect", "down", "learn-address", "auth-user-pass-verify" + }; QStringList maliciousStrings; QStringList lines = protocolConfigJson.split('\n', Qt::SkipEmptyParts); @@ -729,13 +708,11 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig) } } - m_maliciousWarningText = - tr("This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious " - "scripts, so only add it if you fully trust the provider of this config. "); + m_maliciousWarningText = tr("This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious " + "scripts, so only add it if you fully trust the provider of this config. "); if (!maliciousStrings.isEmpty()) { - m_maliciousWarningText.push_back( - tr("
In the imported configuration, potentially dangerous lines were found:")); + m_maliciousWarningText.push_back(tr("
In the imported configuration, potentially dangerous lines were found:")); for (const auto &string : maliciousStrings) { m_maliciousWarningText.push_back(QString("
%1").arg(string)); } @@ -758,8 +735,8 @@ void ImportController::processAmneziaConfig(QJsonObject &config) } QJsonObject jsonConfig = QJsonDocument::fromJson(protocolConfig.toUtf8()).object(); - jsonConfig[config_key::mtu] = dockerContainer == DockerContainer::Awg ? protocols::awg::defaultMtu - : protocols::wireguard::defaultMtu; + jsonConfig[config_key::mtu] = + dockerContainer == DockerContainer::Awg ? protocols::awg::defaultMtu : protocols::wireguard::defaultMtu; containerConfig[config_key::last_config] = QString(QJsonDocument(jsonConfig).toJson()); diff --git a/client/ui/controllers/installController.cpp b/client/ui/controllers/installController.cpp index b7f806b8..d7f9dfbc 100755 --- a/client/ui/controllers/installController.cpp +++ b/client/ui/controllers/installController.cpp @@ -37,8 +37,7 @@ namespace } } -InstallController::InstallController(const QSharedPointer &serversModel, - const QSharedPointer &containersModel, +InstallController::InstallController(const QSharedPointer &serversModel, const QSharedPointer &containersModel, const QSharedPointer &protocolsModel, const QSharedPointer &clientManagementModel, const std::shared_ptr &settings, QObject *parent) @@ -71,8 +70,7 @@ void InstallController::install(DockerContainer container, int port, TransportPr if (protocol == mainProto) { containerConfig.insert(config_key::port, QString::number(port)); - containerConfig.insert(config_key::transport_proto, - ProtocolProps::transportProtoToString(transportProto, protocol)); + containerConfig.insert(config_key::transport_proto, ProtocolProps::transportProtoToString(transportProto, protocol)); if (container == DockerContainer::Awg) { QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5)); @@ -81,37 +79,36 @@ void InstallController::install(DockerContainer container, int port, TransportPr int s1 = QRandomGenerator::global()->bounded(15, 150); int s2 = QRandomGenerator::global()->bounded(15, 150); - int s3 = QRandomGenerator::global()->bounded(15, 150); - int s4 = QRandomGenerator::global()->bounded(15, 150); + // int s3 = QRandomGenerator::global()->bounded(15, 150); + // int s4 = QRandomGenerator::global()->bounded(15, 150); // Ensure all values are unique and don't create equal packet sizes QSet usedValues; usedValues.insert(s1); - while (usedValues.contains(s2) - || s1 + AwgConstant::messageInitiationSize == s2 + AwgConstant::messageResponseSize) { + while (usedValues.contains(s2) || s1 + AwgConstant::messageInitiationSize == s2 + AwgConstant::messageResponseSize) { s2 = QRandomGenerator::global()->bounded(15, 150); } usedValues.insert(s2); - while (usedValues.contains(s3) - || s1 + AwgConstant::messageInitiationSize == s3 + AwgConstant::messageCookieReplySize - || s2 + AwgConstant::messageResponseSize == s3 + AwgConstant::messageCookieReplySize) { - s3 = QRandomGenerator::global()->bounded(15, 150); - } - usedValues.insert(s3); + // while (usedValues.contains(s3) + // || s1 + AwgConstant::messageInitiationSize == s3 + AwgConstant::messageCookieReplySize + // || s2 + AwgConstant::messageResponseSize == s3 + AwgConstant::messageCookieReplySize) { + // s3 = QRandomGenerator::global()->bounded(15, 150); + // } + // usedValues.insert(s3); - while (usedValues.contains(s4) - || s1 + AwgConstant::messageInitiationSize == s4 + AwgConstant::messageTransportSize - || s2 + AwgConstant::messageResponseSize == s4 + AwgConstant::messageTransportSize - || s3 + AwgConstant::messageCookieReplySize == s4 + AwgConstant::messageTransportSize) { - s4 = QRandomGenerator::global()->bounded(15, 150); - } + // while (usedValues.contains(s4) + // || s1 + AwgConstant::messageInitiationSize == s4 + AwgConstant::messageTransportSize + // || s2 + AwgConstant::messageResponseSize == s4 + AwgConstant::messageTransportSize + // || s3 + AwgConstant::messageCookieReplySize == s4 + AwgConstant::messageTransportSize) { + // s4 = QRandomGenerator::global()->bounded(15, 150); + // } QString initPacketJunkSize = QString::number(s1); QString responsePacketJunkSize = QString::number(s2); - QString cookieReplyPacketJunkSize = QString::number(s3); - QString transportPacketJunkSize = QString::number(s4); + // QString cookieReplyPacketJunkSize = QString::number(s3); + // QString transportPacketJunkSize = QString::number(s4); QSet headersValue; while (headersValue.size() != 4) { @@ -131,14 +128,15 @@ void InstallController::install(DockerContainer container, int port, TransportPr containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize; containerConfig[config_key::initPacketJunkSize] = initPacketJunkSize; containerConfig[config_key::responsePacketJunkSize] = responsePacketJunkSize; - containerConfig[config_key::cookieReplyPacketJunkSize] = cookieReplyPacketJunkSize; - containerConfig[config_key::transportPacketJunkSize] = transportPacketJunkSize; containerConfig[config_key::initPacketMagicHeader] = initPacketMagicHeader; containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader; containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader; containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader; // TODO: + // containerConfig[config_key::cookieReplyPacketJunkSize] = cookieReplyPacketJunkSize; + // containerConfig[config_key::transportPacketJunkSize] = transportPacketJunkSize; + // containerConfig[config_key::specialJunk1] = specialJunk1; // containerConfig[config_key::specialJunk2] = specialJunk2; // containerConfig[config_key::specialJunk3] = specialJunk3; @@ -170,8 +168,7 @@ void InstallController::install(DockerContainer container, int port, TransportPr serverCredentials = m_processedServerCredentials; } else { int serverIndex = m_serversModel->getProcessedServerIndex(); - serverCredentials = - qvariant_cast(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole)); + serverCredentials = qvariant_cast(m_serversModel->data(serverIndex, ServersModel::Roles::CredentialsRole)); } QSharedPointer serverController(new ServerController(m_settings)); @@ -197,8 +194,7 @@ void InstallController::install(DockerContainer container, int port, TransportPr installedContainers.insert(container, config); finishMessage = tr("%1 installed successfully. ").arg(ContainerProps::containerHumanNames().value(container)); } else { - finishMessage = - tr("%1 is already installed on the server. ").arg(ContainerProps::containerHumanNames().value(container)); + finishMessage = tr("%1 is already installed on the server. ").arg(ContainerProps::containerHumanNames().value(container)); } if (errorCode) { @@ -213,10 +209,9 @@ void InstallController::install(DockerContainer container, int port, TransportPr } } -void InstallController::installServer(const DockerContainer container, - const QMap &installedContainers, - const ServerCredentials &serverCredentials, - const QSharedPointer &serverController, QString &finishMessage) +void InstallController::installServer(const DockerContainer container, const QMap &installedContainers, + const ServerCredentials &serverCredentials, const QSharedPointer &serverController, + QString &finishMessage) { if (installedContainers.size() > 1) { finishMessage += tr("\nAdded containers that were already installed on the server"); @@ -235,8 +230,8 @@ void InstallController::installServer(const DockerContainer container, auto containerConfig = iterator.value(); if (ContainerProps::isSupportedByCurrentPlatform(container)) { - auto errorCode = vpnConfigurationController.createProtocolConfigForContainer( - m_processedServerCredentials, iterator.key(), containerConfig); + auto errorCode = vpnConfigurationController.createProtocolConfigForContainer(m_processedServerCredentials, iterator.key(), + containerConfig); if (errorCode) { emit installationErrorOccurred(errorCode); return; @@ -244,8 +239,7 @@ void InstallController::installServer(const DockerContainer container, containerConfigs.append(containerConfig); errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig, - QString("Admin [%1]").arg(QSysInfo::prettyProductName()), - serverController); + QString("Admin [%1]").arg(QSysInfo::prettyProductName()), serverController); if (errorCode) { emit installationErrorOccurred(errorCode); return; @@ -263,8 +257,7 @@ void InstallController::installServer(const DockerContainer container, emit installServerFinished(finishMessage); } -void InstallController::installContainer(const DockerContainer container, - const QMap &installedContainers, +void InstallController::installContainer(const DockerContainer container, const QMap &installedContainers, const ServerCredentials &serverCredentials, const QSharedPointer &serverController, QString &finishMessage) { @@ -277,17 +270,16 @@ void InstallController::installContainer(const DockerContainer container, containerConfig = iterator.value(); if (ContainerProps::isSupportedByCurrentPlatform(container)) { - auto errorCode = vpnConfigurationController.createProtocolConfigForContainer( - serverCredentials, iterator.key(), containerConfig); + auto errorCode = + vpnConfigurationController.createProtocolConfigForContainer(serverCredentials, iterator.key(), containerConfig); if (errorCode) { emit installationErrorOccurred(errorCode); return; } m_serversModel->addContainerConfig(iterator.key(), containerConfig); - errorCode = m_clientManagementModel->appendClient( - iterator.key(), serverCredentials, containerConfig, - QString("Admin [%1]").arg(QSysInfo::prettyProductName()), serverController); + errorCode = m_clientManagementModel->appendClient(iterator.key(), serverCredentials, containerConfig, + QString("Admin [%1]").arg(QSysInfo::prettyProductName()), serverController); if (errorCode) { emit installationErrorOccurred(errorCode); return; @@ -315,8 +307,7 @@ bool InstallController::isServerAlreadyExists() auto modelIndex = m_serversModel->index(i); const ServerCredentials credentials = qvariant_cast(m_serversModel->data(modelIndex, ServersModel::Roles::CredentialsRole)); - if (m_processedServerCredentials.hostName == credentials.hostName - && m_processedServerCredentials.port == credentials.port) { + if (m_processedServerCredentials.hostName == credentials.hostName && m_processedServerCredentials.port == credentials.port) { emit serverAlreadyExists(i); return true; } @@ -345,17 +336,17 @@ void InstallController::scanServerForInstalledContainers() containerConfig = iterator.value(); if (ContainerProps::isSupportedByCurrentPlatform(container)) { - auto errorCode = vpnConfigurationController.createProtocolConfigForContainer( - serverCredentials, container, containerConfig); + auto errorCode = + vpnConfigurationController.createProtocolConfigForContainer(serverCredentials, container, containerConfig); if (errorCode) { emit installationErrorOccurred(errorCode); return; } m_serversModel->addContainerConfig(container, containerConfig); - errorCode = m_clientManagementModel->appendClient( - container, serverCredentials, containerConfig, - QString("Admin [%1]").arg(QSysInfo::prettyProductName()), serverController); + errorCode = m_clientManagementModel->appendClient(container, serverCredentials, containerConfig, + QString("Admin [%1]").arg(QSysInfo::prettyProductName()), + serverController); if (errorCode) { emit installationErrorOccurred(errorCode); return; @@ -419,8 +410,8 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia containerConfig.insert(config_key::transport_proto, transportProto); if (protocol == Proto::Awg) { - QString serverConfig = serverController->getTextFileFromContainer( - container, credentials, protocols::awg::serverConfigPath, errorCode); + QString serverConfig = serverController->getTextFileFromContainer(container, credentials, + protocols::awg::serverConfigPath, errorCode); QMap serverConfigMap; auto serverConfigLines = serverConfig.split("\n"); @@ -438,40 +429,33 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia containerConfig[config_key::subnet_address] = serverConfigMap.value("Address").remove("/24"); containerConfig[config_key::junkPacketCount] = serverConfigMap.value(config_key::junkPacketCount); - containerConfig[config_key::junkPacketMinSize] = - serverConfigMap.value(config_key::junkPacketMinSize); - containerConfig[config_key::junkPacketMaxSize] = - serverConfigMap.value(config_key::junkPacketMaxSize); - containerConfig[config_key::initPacketJunkSize] = - serverConfigMap.value(config_key::initPacketJunkSize); - containerConfig[config_key::responsePacketJunkSize] = - serverConfigMap.value(config_key::responsePacketJunkSize); - containerConfig[config_key::cookieReplyPacketJunkSize] = - serverConfigMap.value(config_key::cookieReplyPacketJunkSize); - containerConfig[config_key::transportPacketJunkSize] = - serverConfigMap.value(config_key::transportPacketJunkSize); - containerConfig[config_key::initPacketMagicHeader] = - serverConfigMap.value(config_key::initPacketMagicHeader); - containerConfig[config_key::responsePacketMagicHeader] = - serverConfigMap.value(config_key::responsePacketMagicHeader); + containerConfig[config_key::junkPacketMinSize] = serverConfigMap.value(config_key::junkPacketMinSize); + containerConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize); + containerConfig[config_key::initPacketJunkSize] = serverConfigMap.value(config_key::initPacketJunkSize); + containerConfig[config_key::responsePacketJunkSize] = serverConfigMap.value(config_key::responsePacketJunkSize); + containerConfig[config_key::initPacketMagicHeader] = serverConfigMap.value(config_key::initPacketMagicHeader); + containerConfig[config_key::responsePacketMagicHeader] = serverConfigMap.value(config_key::responsePacketMagicHeader); containerConfig[config_key::underloadPacketMagicHeader] = serverConfigMap.value(config_key::underloadPacketMagicHeader); containerConfig[config_key::transportPacketMagicHeader] = serverConfigMap.value(config_key::transportPacketMagicHeader); - containerConfig[config_key::specialJunk1] = serverConfigMap.value(config_key::specialJunk1); - containerConfig[config_key::specialJunk2] = serverConfigMap.value(config_key::specialJunk2); - containerConfig[config_key::specialJunk3] = serverConfigMap.value(config_key::specialJunk3); - containerConfig[config_key::specialJunk4] = serverConfigMap.value(config_key::specialJunk4); - containerConfig[config_key::specialJunk5] = serverConfigMap.value(config_key::specialJunk5); - containerConfig[config_key::controlledJunk1] = serverConfigMap.value(config_key::controlledJunk1); - containerConfig[config_key::controlledJunk2] = serverConfigMap.value(config_key::controlledJunk2); - containerConfig[config_key::controlledJunk3] = serverConfigMap.value(config_key::controlledJunk3); - containerConfig[config_key::specialHandshakeTimeout] = - serverConfigMap.value(config_key::specialHandshakeTimeout); + + // containerConfig[config_key::cookieReplyPacketJunkSize] = serverConfigMap.value(config_key::cookieReplyPacketJunkSize); + // containerConfig[config_key::transportPacketJunkSize] = serverConfigMap.value(config_key::transportPacketJunkSize); + + // containerConfig[config_key::specialJunk1] = serverConfigMap.value(config_key::specialJunk1); + // containerConfig[config_key::specialJunk2] = serverConfigMap.value(config_key::specialJunk2); + // containerConfig[config_key::specialJunk3] = serverConfigMap.value(config_key::specialJunk3); + // containerConfig[config_key::specialJunk4] = serverConfigMap.value(config_key::specialJunk4); + // containerConfig[config_key::specialJunk5] = serverConfigMap.value(config_key::specialJunk5); + // containerConfig[config_key::controlledJunk1] = serverConfigMap.value(config_key::controlledJunk1); + // containerConfig[config_key::controlledJunk2] = serverConfigMap.value(config_key::controlledJunk2); + // containerConfig[config_key::controlledJunk3] = serverConfigMap.value(config_key::controlledJunk3); + // containerConfig[config_key::specialHandshakeTimeout] = serverConfigMap.value(config_key::specialHandshakeTimeout); } else if (protocol == Proto::WireGuard) { - QString serverConfig = serverController->getTextFileFromContainer( - container, credentials, protocols::wireguard::serverConfigPath, errorCode); + QString serverConfig = serverController->getTextFileFromContainer(container, credentials, + protocols::wireguard::serverConfigPath, errorCode); QMap serverConfigMap; auto serverConfigLines = serverConfig.split("\n"); @@ -491,8 +475,7 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia stdOut.clear(); script = QString("sudo docker inspect --format '{{.Config.Cmd}}' %1").arg(name); - ErrorCode errorCode = - serverController->runScript(credentials, script, cbReadStdOut, cbReadStdErr); + ErrorCode errorCode = serverController->runScript(credentials, script, cbReadStdOut, cbReadStdErr); if (errorCode != ErrorCode::NoError) { return errorCode; } @@ -509,8 +492,8 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia containerConfig.insert(config_key::userName, userName); containerConfig.insert(config_key::password, password); } else if (protocol == Proto::Socks5Proxy) { - QString proxyConfig = serverController->getTextFileFromContainer( - container, credentials, protocols::socks5Proxy::proxyConfigPath, errorCode); + QString proxyConfig = serverController->getTextFileFromContainer(container, credentials, + protocols::socks5Proxy::proxyConfigPath, errorCode); const static QRegularExpression usernameAndPasswordRegExp("users (\\w+):CL:(\\w+)"); QRegularExpressionMatch usernameAndPasswordMatch = usernameAndPasswordRegExp.match(proxyConfig); @@ -595,8 +578,7 @@ ErrorCode InstallController::getAlreadyInstalledContainers(const ServerCredentia stdOut.clear(); script = QString("sudo docker exec -i %1 sh -c 'cat /var/lib/tor/hidden_service/hostname'").arg(name); - ErrorCode errorCode = - serverController->runScript(credentials, script, cbReadStdOut, cbReadStdErr); + ErrorCode errorCode = serverController->runScript(credentials, script, cbReadStdOut, cbReadStdErr); if (errorCode != ErrorCode::NoError) { return errorCode; } @@ -635,8 +617,7 @@ void InstallController::updateContainer(QJsonObject config) if (isUpdateDockerContainerRequired(container, oldContainerConfig, config)) { QSharedPointer serverController(new ServerController(m_settings)); connect(serverController.get(), &ServerController::serverIsBusy, this, &InstallController::serverIsBusy); - connect(this, &InstallController::cancelInstallation, serverController.get(), - &ServerController::cancelInstallation); + connect(this, &InstallController::cancelInstallation, serverController.get(), &ServerController::cancelInstallation); errorCode = serverController->updateContainer(serverCredentials, container, oldContainerConfig, config); clearCachedProfile(serverController); @@ -646,8 +627,7 @@ void InstallController::updateContainer(QJsonObject config) m_serversModel->updateContainerConfig(container, config); m_protocolModel->updateModel(config); - auto defaultContainer = qvariant_cast( - m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole)); + auto defaultContainer = qvariant_cast(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole)); if ((serverIndex == m_serversModel->getDefaultServerIndex()) && (container == defaultContainer)) { emit currentContainerUpdated(); } else { @@ -709,8 +689,7 @@ void InstallController::removeProcessedContainer() ErrorCode errorCode = m_serversModel->removeContainer(serverController, container); if (errorCode == ErrorCode::NoError) { - emit removeProcessedContainerFinished( - tr("%1 has been removed from the server '%2'").arg(containerName, serverName)); + emit removeProcessedContainerFinished(tr("%1 has been removed from the server '%2'").arg(containerName, serverName)); return; } emit installationErrorOccurred(errorCode); @@ -754,8 +733,7 @@ QRegularExpression InstallController::ipAddressRegExp() return NetworkUtilities::ipAddressRegExp(); } -void InstallController::setProcessedServerCredentials(const QString &hostName, const QString &userName, - const QString &secretData) +void InstallController::setProcessedServerCredentials(const QString &hostName, const QString &userName, const QString &secretData) { m_processedServerCredentials.hostName = hostName; if (m_processedServerCredentials.hostName.contains(":")) { @@ -790,8 +768,7 @@ void InstallController::mountSftpDrive(const QString &port, const QString &passw cmd = "C:\\Program Files\\SSHFS-Win\\bin\\sshfs.exe"; #elif defined AMNEZIA_DESKTOP - mountPath = - QString("%1/sftp:%2:%3").arg(QStandardPaths::writableLocation(QStandardPaths::HomeLocation), hostname, port); + mountPath = QString("%1/sftp:%2:%3").arg(QStandardPaths::writableLocation(QStandardPaths::HomeLocation), hostname, port); QDir dir(mountPath); if (!dir.exists()) { dir.mkpath(mountPath); @@ -855,8 +832,7 @@ bool InstallController::checkSshConnection(QSharedPointer serv ErrorCode errorCode = ErrorCode::NoError; m_privateKeyPassphrase = ""; - if (m_processedServerCredentials.secretData.contains("BEGIN") - && m_processedServerCredentials.secretData.contains("PRIVATE KEY")) { + if (m_processedServerCredentials.secretData.contains("BEGIN") && m_processedServerCredentials.secretData.contains("PRIVATE KEY")) { auto passphraseCallback = [this]() { emit passphraseRequestStarted(); QEventLoop loop; @@ -867,8 +843,7 @@ bool InstallController::checkSshConnection(QSharedPointer serv }; QString decryptedPrivateKey; - errorCode = serverController->getDecryptedPrivateKey(m_processedServerCredentials, decryptedPrivateKey, - passphraseCallback); + errorCode = serverController->getDecryptedPrivateKey(m_processedServerCredentials, decryptedPrivateKey, passphraseCallback); if (errorCode == ErrorCode::NoError) { m_processedServerCredentials.secretData = decryptedPrivateKey; } else { @@ -929,8 +904,7 @@ bool InstallController::isConfigValid() return false; } - DockerContainer container = - qvariant_cast(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole)); + DockerContainer container = qvariant_cast(m_serversModel->data(serverIndex, ServersModel::Roles::DefaultContainerRole)); if (container == DockerContainer::None) { emit installationErrorOccurred(ErrorCode::NoInstalledContainersError); @@ -950,10 +924,8 @@ bool InstallController::isConfigValid() auto isProtocolConfigExists = [](const QJsonObject &containerConfig, const DockerContainer container) { for (Proto protocol : ContainerProps::protocolsForContainer(container)) { - QString protocolConfig = containerConfig.value(ProtocolProps::protoToString(protocol)) - .toObject() - .value(config_key::last_config) - .toString(); + QString protocolConfig = + containerConfig.value(ProtocolProps::protoToString(protocol)).toObject().value(config_key::last_config).toString(); if (protocolConfig.isEmpty()) { return false; @@ -964,16 +936,14 @@ bool InstallController::isConfigValid() if (!isProtocolConfigExists(containerConfig, container)) { VpnConfigurationsController vpnConfigurationController(m_settings, serverController); - errorCode = - vpnConfigurationController.createProtocolConfigForContainer(credentials, container, containerConfig); + errorCode = vpnConfigurationController.createProtocolConfigForContainer(credentials, container, containerConfig); if (errorCode != ErrorCode::NoError) { return errorCode; } m_serversModel->updateContainerConfig(container, containerConfig); errorCode = m_clientManagementModel->appendClient(container, credentials, containerConfig, - QString("Admin [%1]").arg(QSysInfo::prettyProductName()), - serverController); + QString("Admin [%1]").arg(QSysInfo::prettyProductName()), serverController); if (errorCode != ErrorCode::NoError) { return errorCode; } diff --git a/client/ui/models/protocols/awgConfigModel.cpp b/client/ui/models/protocols/awgConfigModel.cpp index f8f5f097..e14a3152 100644 --- a/client/ui/models/protocols/awgConfigModel.cpp +++ b/client/ui/models/protocols/awgConfigModel.cpp @@ -25,67 +25,34 @@ bool AwgConfigModel::setData(const QModelIndex &index, const QVariant &value, in case Roles::PortRole: m_serverProtocolConfig.insert(config_key::port, value.toString()); break; case Roles::ClientMtuRole: m_clientProtocolConfig.insert(config_key::mtu, value.toString()); break; - case Roles::ClientJunkPacketCountRole: - m_clientProtocolConfig.insert(config_key::junkPacketCount, value.toString()); - break; - case Roles::ClientJunkPacketMinSizeRole: - m_clientProtocolConfig.insert(config_key::junkPacketMinSize, value.toString()); - break; - case Roles::ClientJunkPacketMaxSizeRole: - m_clientProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString()); - break; - case Roles::ClientSpecialJunk1Role: - m_clientProtocolConfig.insert(config_key::specialJunk1, value.toString()); - break; - case Roles::ClientSpecialJunk2Role: - m_clientProtocolConfig.insert(config_key::specialJunk2, value.toString()); - break; - case Roles::ClientSpecialJunk3Role: - m_clientProtocolConfig.insert(config_key::specialJunk3, value.toString()); - break; - case Roles::ClientSpecialJunk4Role: - m_clientProtocolConfig.insert(config_key::specialJunk4, value.toString()); - break; - case Roles::ClientSpecialJunk5Role: - m_clientProtocolConfig.insert(config_key::specialJunk5, value.toString()); - break; - case Roles::ClientControlledJunk1Role: - m_clientProtocolConfig.insert(config_key::controlledJunk1, value.toString()); - break; - case Roles::ClientControlledJunk2Role: - m_clientProtocolConfig.insert(config_key::controlledJunk2, value.toString()); - break; - case Roles::ClientControlledJunk3Role: - m_clientProtocolConfig.insert(config_key::controlledJunk3, value.toString()); - break; + case Roles::ClientJunkPacketCountRole: m_clientProtocolConfig.insert(config_key::junkPacketCount, value.toString()); break; + case Roles::ClientJunkPacketMinSizeRole: m_clientProtocolConfig.insert(config_key::junkPacketMinSize, value.toString()); break; + case Roles::ClientJunkPacketMaxSizeRole: m_clientProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString()); break; + case Roles::ClientSpecialJunk1Role: m_clientProtocolConfig.insert(config_key::specialJunk1, value.toString()); break; + case Roles::ClientSpecialJunk2Role: m_clientProtocolConfig.insert(config_key::specialJunk2, value.toString()); break; + case Roles::ClientSpecialJunk3Role: m_clientProtocolConfig.insert(config_key::specialJunk3, value.toString()); break; + case Roles::ClientSpecialJunk4Role: m_clientProtocolConfig.insert(config_key::specialJunk4, value.toString()); break; + case Roles::ClientSpecialJunk5Role: m_clientProtocolConfig.insert(config_key::specialJunk5, value.toString()); break; + case Roles::ClientControlledJunk1Role: m_clientProtocolConfig.insert(config_key::controlledJunk1, value.toString()); break; + case Roles::ClientControlledJunk2Role: m_clientProtocolConfig.insert(config_key::controlledJunk2, value.toString()); break; + case Roles::ClientControlledJunk3Role: m_clientProtocolConfig.insert(config_key::controlledJunk3, value.toString()); break; case Roles::ClientSpecialHandshakeTimeoutRole: m_clientProtocolConfig.insert(config_key::specialHandshakeTimeout, value.toString()); break; - - case Roles::ServerJunkPacketCountRole: - m_serverProtocolConfig.insert(config_key::junkPacketCount, value.toString()); - break; - case Roles::ServerJunkPacketMinSizeRole: - m_serverProtocolConfig.insert(config_key::junkPacketMinSize, value.toString()); - break; - case Roles::ServerJunkPacketMaxSizeRole: - m_serverProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString()); - break; - case Roles::ServerInitPacketJunkSizeRole: - m_serverProtocolConfig.insert(config_key::initPacketJunkSize, value.toString()); - break; + case Roles::ServerJunkPacketCountRole: m_serverProtocolConfig.insert(config_key::junkPacketCount, value.toString()); break; + case Roles::ServerJunkPacketMinSizeRole: m_serverProtocolConfig.insert(config_key::junkPacketMinSize, value.toString()); break; + case Roles::ServerJunkPacketMaxSizeRole: m_serverProtocolConfig.insert(config_key::junkPacketMaxSize, value.toString()); break; + case Roles::ServerInitPacketJunkSizeRole: m_serverProtocolConfig.insert(config_key::initPacketJunkSize, value.toString()); break; case Roles::ServerResponsePacketJunkSizeRole: m_serverProtocolConfig.insert(config_key::responsePacketJunkSize, value.toString()); break; - case Roles::ServerCookieReplyPacketJunkSizeRole: - m_serverProtocolConfig.insert(config_key::cookieReplyPacketJunkSize, value.toString()); - break; - case Roles::ServerTransportPacketJunkSizeRole: - m_serverProtocolConfig.insert(config_key::transportPacketJunkSize, value.toString()); - break; - case Roles::ServerInitPacketMagicHeaderRole: - m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString()); - break; + // case Roles::ServerCookieReplyPacketJunkSizeRole: + // m_serverProtocolConfig.insert(config_key::cookieReplyPacketJunkSize, value.toString()); + // break; + // case Roles::ServerTransportPacketJunkSizeRole: + // m_serverProtocolConfig.insert(config_key::transportPacketJunkSize, value.toString()); + // break; + case Roles::ServerInitPacketMagicHeaderRole: m_serverProtocolConfig.insert(config_key::initPacketMagicHeader, value.toString()); break; case Roles::ServerResponsePacketMagicHeaderRole: m_serverProtocolConfig.insert(config_key::responsePacketMagicHeader, value.toString()); break; @@ -123,26 +90,19 @@ QVariant AwgConfigModel::data(const QModelIndex &index, int role) const case Roles::ClientControlledJunk1Role: return m_clientProtocolConfig.value(config_key::controlledJunk1); case Roles::ClientControlledJunk2Role: return m_clientProtocolConfig.value(config_key::controlledJunk2); case Roles::ClientControlledJunk3Role: return m_clientProtocolConfig.value(config_key::controlledJunk3); - case Roles::ClientSpecialHandshakeTimeoutRole: - return m_clientProtocolConfig.value(config_key::specialHandshakeTimeout); + case Roles::ClientSpecialHandshakeTimeoutRole: return m_clientProtocolConfig.value(config_key::specialHandshakeTimeout); case Roles::ServerJunkPacketCountRole: return m_serverProtocolConfig.value(config_key::junkPacketCount); case Roles::ServerJunkPacketMinSizeRole: return m_serverProtocolConfig.value(config_key::junkPacketMinSize); case Roles::ServerJunkPacketMaxSizeRole: return m_serverProtocolConfig.value(config_key::junkPacketMaxSize); case Roles::ServerInitPacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::initPacketJunkSize); - case Roles::ServerResponsePacketJunkSizeRole: - return m_serverProtocolConfig.value(config_key::responsePacketJunkSize); - case Roles::ServerCookieReplyPacketJunkSizeRole: - return m_serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize); - case Roles::ServerTransportPacketJunkSizeRole: - return m_serverProtocolConfig.value(config_key::transportPacketJunkSize); + case Roles::ServerResponsePacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::responsePacketJunkSize); + // case Roles::ServerCookieReplyPacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize); + // case Roles::ServerTransportPacketJunkSizeRole: return m_serverProtocolConfig.value(config_key::transportPacketJunkSize); case Roles::ServerInitPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::initPacketMagicHeader); - case Roles::ServerResponsePacketMagicHeaderRole: - return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader); - case Roles::ServerUnderloadPacketMagicHeaderRole: - return m_serverProtocolConfig.value(config_key::underloadPacketMagicHeader); - case Roles::ServerTransportPacketMagicHeaderRole: - return m_serverProtocolConfig.value(config_key::transportPacketMagicHeader); + case Roles::ServerResponsePacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::responsePacketMagicHeader); + case Roles::ServerUnderloadPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::underloadPacketMagicHeader); + case Roles::ServerTransportPacketMagicHeaderRole: return m_serverProtocolConfig.value(config_key::transportPacketMagicHeader); } return QVariant(); @@ -157,15 +117,13 @@ void AwgConfigModel::updateModel(const QJsonObject &config) QJsonObject serverProtocolConfig = config.value(config_key::awg).toObject(); - auto defaultTransportProto = - ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(Proto::Awg), Proto::Awg); + auto defaultTransportProto = ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(Proto::Awg), Proto::Awg); m_serverProtocolConfig.insert(config_key::transport_proto, serverProtocolConfig.value(config_key::transport_proto).toString(defaultTransportProto)); m_serverProtocolConfig[config_key::last_config] = serverProtocolConfig.value(config_key::last_config); m_serverProtocolConfig[config_key::subnet_address] = serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress); - m_serverProtocolConfig[config_key::port] = - serverProtocolConfig.value(config_key::port).toString(protocols::awg::defaultPort); + m_serverProtocolConfig[config_key::port] = serverProtocolConfig.value(config_key::port).toString(protocols::awg::defaultPort); m_serverProtocolConfig[config_key::junkPacketCount] = serverProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount); m_serverProtocolConfig[config_key::junkPacketMinSize] = @@ -175,39 +133,29 @@ void AwgConfigModel::updateModel(const QJsonObject &config) m_serverProtocolConfig[config_key::initPacketJunkSize] = serverProtocolConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize); m_serverProtocolConfig[config_key::responsePacketJunkSize] = - serverProtocolConfig.value(config_key::responsePacketJunkSize) - .toString(protocols::awg::defaultResponsePacketJunkSize); - m_serverProtocolConfig[config_key::cookieReplyPacketJunkSize] = - serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize) - .toString(protocols::awg::defaultCookieReplyPacketJunkSize); - m_serverProtocolConfig[config_key::transportPacketJunkSize] = - serverProtocolConfig.value(config_key::transportPacketJunkSize) - .toString(protocols::awg::defaultTransportPacketJunkSize); + serverProtocolConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize); + // m_serverProtocolConfig[config_key::cookieReplyPacketJunkSize] = + // serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize); + // m_serverProtocolConfig[config_key::transportPacketJunkSize] = + // serverProtocolConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize); m_serverProtocolConfig[config_key::initPacketMagicHeader] = - serverProtocolConfig.value(config_key::initPacketMagicHeader) - .toString(protocols::awg::defaultInitPacketMagicHeader); + serverProtocolConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader); m_serverProtocolConfig[config_key::responsePacketMagicHeader] = - serverProtocolConfig.value(config_key::responsePacketMagicHeader) - .toString(protocols::awg::defaultResponsePacketMagicHeader); + serverProtocolConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader); m_serverProtocolConfig[config_key::underloadPacketMagicHeader] = - serverProtocolConfig.value(config_key::underloadPacketMagicHeader) - .toString(protocols::awg::defaultUnderloadPacketMagicHeader); + serverProtocolConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader); m_serverProtocolConfig[config_key::transportPacketMagicHeader] = - serverProtocolConfig.value(config_key::transportPacketMagicHeader) - .toString(protocols::awg::defaultTransportPacketMagicHeader); + serverProtocolConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader); auto lastConfig = m_serverProtocolConfig.value(config_key::last_config).toString(); QJsonObject clientProtocolConfig = QJsonDocument::fromJson(lastConfig.toUtf8()).object(); m_clientProtocolConfig[config_key::mtu] = clientProtocolConfig[config_key::mtu].toString(protocols::awg::defaultMtu); m_clientProtocolConfig[config_key::junkPacketCount] = - clientProtocolConfig.value(config_key::junkPacketCount) - .toString(m_serverProtocolConfig[config_key::junkPacketCount].toString()); + clientProtocolConfig.value(config_key::junkPacketCount).toString(m_serverProtocolConfig[config_key::junkPacketCount].toString()); m_clientProtocolConfig[config_key::junkPacketMinSize] = - clientProtocolConfig.value(config_key::junkPacketMinSize) - .toString(m_serverProtocolConfig[config_key::junkPacketMinSize].toString()); + clientProtocolConfig.value(config_key::junkPacketMinSize).toString(m_serverProtocolConfig[config_key::junkPacketMinSize].toString()); m_clientProtocolConfig[config_key::junkPacketMaxSize] = - clientProtocolConfig.value(config_key::junkPacketMaxSize) - .toString(m_serverProtocolConfig[config_key::junkPacketMaxSize].toString()); + clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(m_serverProtocolConfig[config_key::junkPacketMaxSize].toString()); m_clientProtocolConfig[config_key::specialJunk1] = clientProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1); m_clientProtocolConfig[config_key::specialJunk2] = @@ -225,8 +173,7 @@ void AwgConfigModel::updateModel(const QJsonObject &config) m_clientProtocolConfig[config_key::controlledJunk3] = clientProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3); m_clientProtocolConfig[config_key::specialHandshakeTimeout] = - clientProtocolConfig.value(config_key::specialHandshakeTimeout) - .toString(protocols::awg::defaultSpecialHandshakeTimeout); + clientProtocolConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout); endResetModel(); } @@ -266,17 +213,22 @@ bool AwgConfigModel::isHeadersEqual(const QString &h1, const QString &h2, const return (h1 == h2) || (h1 == h3) || (h1 == h4) || (h2 == h3) || (h2 == h4) || (h3 == h4); } -bool AwgConfigModel::isPacketSizeEqual(const int s1, const int s2, const int s3, const int s4) +bool AwgConfigModel::isPacketSizeEqual(const int s1, const int s2) { - int initSize = AwgConstant::messageInitiationSize + s1; - int responseSize = AwgConstant::messageResponseSize + s2; - int cookieSize = AwgConstant::messageCookieReplySize + s3; - int transportSize = AwgConstant::messageTransportSize + s4; - - return (initSize == responseSize || initSize == cookieSize || initSize == transportSize - || responseSize == cookieSize || responseSize == transportSize || cookieSize == transportSize); + return (AwgConstant::messageInitiationSize + s1 == AwgConstant::messageResponseSize + s2); } +// bool AwgConfigModel::isPacketSizeEqual(const int s1, const int s2, const int s3, const int s4) +// { +// int initSize = AwgConstant::messageInitiationSize + s1; +// int responseSize = AwgConstant::messageResponseSize + s2; +// int cookieSize = AwgConstant::messageCookieReplySize + s3; +// int transportSize = AwgConstant::messageTransportSize + s4; + +// return (initSize == responseSize || initSize == cookieSize || initSize == transportSize || responseSize == cookieSize +// || responseSize == transportSize || cookieSize == transportSize); +// } + bool AwgConfigModel::isServerSettingsEqual() { const AwgConfig oldConfig(m_fullConfig.value(config_key::awg).toObject()); @@ -327,67 +279,49 @@ AwgConfig::AwgConfig(const QJsonObject &serverProtocolConfig) auto lastConfig = serverProtocolConfig.value(config_key::last_config).toString(); QJsonObject clientProtocolConfig = QJsonDocument::fromJson(lastConfig.toUtf8()).object(); clientMtu = clientProtocolConfig[config_key::mtu].toString(protocols::awg::defaultMtu); - clientJunkPacketCount = - clientProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount); - clientJunkPacketMinSize = - clientProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize); - clientJunkPacketMaxSize = - clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize); - clientSpecialJunk1 = - clientProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1); - clientSpecialJunk2 = - clientProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2); - clientSpecialJunk3 = - clientProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3); - clientSpecialJunk4 = - clientProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4); - clientSpecialJunk5 = - clientProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5); - clientControlledJunk1 = - clientProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1); - clientControlledJunk2 = - clientProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2); - clientControlledJunk3 = - clientProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3); - clientSpecialHandshakeTimeout = clientProtocolConfig.value(config_key::specialHandshakeTimeout) - .toString(protocols::awg::defaultSpecialHandshakeTimeout); + clientJunkPacketCount = clientProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount); + clientJunkPacketMinSize = clientProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize); + clientJunkPacketMaxSize = clientProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize); + clientSpecialJunk1 = clientProtocolConfig.value(config_key::specialJunk1).toString(protocols::awg::defaultSpecialJunk1); + clientSpecialJunk2 = clientProtocolConfig.value(config_key::specialJunk2).toString(protocols::awg::defaultSpecialJunk2); + clientSpecialJunk3 = clientProtocolConfig.value(config_key::specialJunk3).toString(protocols::awg::defaultSpecialJunk3); + clientSpecialJunk4 = clientProtocolConfig.value(config_key::specialJunk4).toString(protocols::awg::defaultSpecialJunk4); + clientSpecialJunk5 = clientProtocolConfig.value(config_key::specialJunk5).toString(protocols::awg::defaultSpecialJunk5); + clientControlledJunk1 = clientProtocolConfig.value(config_key::controlledJunk1).toString(protocols::awg::defaultControlledJunk1); + clientControlledJunk2 = clientProtocolConfig.value(config_key::controlledJunk2).toString(protocols::awg::defaultControlledJunk2); + clientControlledJunk3 = clientProtocolConfig.value(config_key::controlledJunk3).toString(protocols::awg::defaultControlledJunk3); + clientSpecialHandshakeTimeout = + clientProtocolConfig.value(config_key::specialHandshakeTimeout).toString(protocols::awg::defaultSpecialHandshakeTimeout); - subnetAddress = - serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress); + subnetAddress = serverProtocolConfig.value(config_key::subnet_address).toString(protocols::wireguard::defaultSubnetAddress); port = serverProtocolConfig.value(config_key::port).toString(protocols::awg::defaultPort); - serverJunkPacketCount = - serverProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount); - serverJunkPacketMinSize = - serverProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize); - serverJunkPacketMaxSize = - serverProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize); - serverInitPacketJunkSize = - serverProtocolConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize); - serverResponsePacketJunkSize = serverProtocolConfig.value(config_key::responsePacketJunkSize) - .toString(protocols::awg::defaultResponsePacketJunkSize); - serverCookieReplyPacketJunkSize = serverProtocolConfig.value(config_key::responsePacketJunkSize) - .toString(protocols::awg::defaultCookieReplyPacketJunkSize); - serverTransportPacketJunkSize = serverProtocolConfig.value(config_key::responsePacketJunkSize) - .toString(protocols::awg::defaultTransportPacketJunkSize); - serverInitPacketMagicHeader = serverProtocolConfig.value(config_key::initPacketMagicHeader) - .toString(protocols::awg::defaultInitPacketMagicHeader); - serverResponsePacketMagicHeader = serverProtocolConfig.value(config_key::responsePacketMagicHeader) - .toString(protocols::awg::defaultResponsePacketMagicHeader); - serverUnderloadPacketMagicHeader = serverProtocolConfig.value(config_key::underloadPacketMagicHeader) - .toString(protocols::awg::defaultUnderloadPacketMagicHeader); - serverTransportPacketMagicHeader = serverProtocolConfig.value(config_key::transportPacketMagicHeader) - .toString(protocols::awg::defaultTransportPacketMagicHeader); + serverJunkPacketCount = serverProtocolConfig.value(config_key::junkPacketCount).toString(protocols::awg::defaultJunkPacketCount); + serverJunkPacketMinSize = serverProtocolConfig.value(config_key::junkPacketMinSize).toString(protocols::awg::defaultJunkPacketMinSize); + serverJunkPacketMaxSize = serverProtocolConfig.value(config_key::junkPacketMaxSize).toString(protocols::awg::defaultJunkPacketMaxSize); + serverInitPacketJunkSize = serverProtocolConfig.value(config_key::initPacketJunkSize).toString(protocols::awg::defaultInitPacketJunkSize); + serverResponsePacketJunkSize = + serverProtocolConfig.value(config_key::responsePacketJunkSize).toString(protocols::awg::defaultResponsePacketJunkSize); + // serverCookieReplyPacketJunkSize = + // serverProtocolConfig.value(config_key::cookieReplyPacketJunkSize).toString(protocols::awg::defaultCookieReplyPacketJunkSize); + // serverTransportPacketJunkSize = + // serverProtocolConfig.value(config_key::transportPacketJunkSize).toString(protocols::awg::defaultTransportPacketJunkSize); + serverInitPacketMagicHeader = + serverProtocolConfig.value(config_key::initPacketMagicHeader).toString(protocols::awg::defaultInitPacketMagicHeader); + serverResponsePacketMagicHeader = + serverProtocolConfig.value(config_key::responsePacketMagicHeader).toString(protocols::awg::defaultResponsePacketMagicHeader); + serverUnderloadPacketMagicHeader = + serverProtocolConfig.value(config_key::underloadPacketMagicHeader).toString(protocols::awg::defaultUnderloadPacketMagicHeader); + serverTransportPacketMagicHeader = + serverProtocolConfig.value(config_key::transportPacketMagicHeader).toString(protocols::awg::defaultTransportPacketMagicHeader); } bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const { if (subnetAddress != other.subnetAddress || port != other.port || serverJunkPacketCount != other.serverJunkPacketCount - || serverJunkPacketMinSize != other.serverJunkPacketMinSize - || serverJunkPacketMaxSize != other.serverJunkPacketMaxSize - || serverInitPacketJunkSize != other.serverInitPacketJunkSize - || serverResponsePacketJunkSize != other.serverResponsePacketJunkSize - || serverCookieReplyPacketJunkSize != other.serverCookieReplyPacketJunkSize - || serverTransportPacketJunkSize != other.serverTransportPacketJunkSize + || serverJunkPacketMinSize != other.serverJunkPacketMinSize || serverJunkPacketMaxSize != other.serverJunkPacketMaxSize + || serverInitPacketJunkSize != other.serverInitPacketJunkSize || serverResponsePacketJunkSize != other.serverResponsePacketJunkSize + // || serverCookieReplyPacketJunkSize != other.serverCookieReplyPacketJunkSize + // || serverTransportPacketJunkSize != other.serverTransportPacketJunkSize || serverInitPacketMagicHeader != other.serverInitPacketMagicHeader || serverResponsePacketMagicHeader != other.serverResponsePacketMagicHeader || serverUnderloadPacketMagicHeader != other.serverUnderloadPacketMagicHeader @@ -400,12 +334,11 @@ bool AwgConfig::hasEqualServerSettings(const AwgConfig &other) const bool AwgConfig::hasEqualClientSettings(const AwgConfig &other) const { if (clientMtu != other.clientMtu || clientJunkPacketCount != other.clientJunkPacketCount - || clientJunkPacketMinSize != other.clientJunkPacketMinSize - || clientJunkPacketMaxSize != other.clientJunkPacketMaxSize || clientSpecialJunk1 != other.clientSpecialJunk1 - || clientSpecialJunk2 != other.clientSpecialJunk2 || clientSpecialJunk3 != other.clientSpecialJunk3 - || clientSpecialJunk4 != other.clientSpecialJunk4 || clientSpecialJunk5 != other.clientSpecialJunk5 - || clientControlledJunk1 != other.clientControlledJunk1 || clientControlledJunk2 != other.clientControlledJunk2 - || clientControlledJunk3 != other.clientControlledJunk3 + || clientJunkPacketMinSize != other.clientJunkPacketMinSize || clientJunkPacketMaxSize != other.clientJunkPacketMaxSize + || clientSpecialJunk1 != other.clientSpecialJunk1 || clientSpecialJunk2 != other.clientSpecialJunk2 + || clientSpecialJunk3 != other.clientSpecialJunk3 || clientSpecialJunk4 != other.clientSpecialJunk4 + || clientSpecialJunk5 != other.clientSpecialJunk5 || clientControlledJunk1 != other.clientControlledJunk1 + || clientControlledJunk2 != other.clientControlledJunk2 || clientControlledJunk3 != other.clientControlledJunk3 || clientSpecialHandshakeTimeout != other.clientSpecialHandshakeTimeout) { return false; } diff --git a/client/ui/models/protocols/awgConfigModel.h b/client/ui/models/protocols/awgConfigModel.h index f32f4de6..0c2374fc 100644 --- a/client/ui/models/protocols/awgConfigModel.h +++ b/client/ui/models/protocols/awgConfigModel.h @@ -100,7 +100,7 @@ public slots: QJsonObject getConfig(); bool isHeadersEqual(const QString &h1, const QString &h2, const QString &h3, const QString &h4); - bool isPacketSizeEqual(const int s1, const int s2, const int s3, const int s4); + bool isPacketSizeEqual(const int s1, const int s2/*, const int s3, const int s4*/); bool isServerSettingsEqual(); diff --git a/client/ui/qml/Components/AwgTextField.qml b/client/ui/qml/Components/AwgTextField.qml new file mode 100644 index 00000000..87b023d9 --- /dev/null +++ b/client/ui/qml/Components/AwgTextField.qml @@ -0,0 +1,15 @@ +pragma ComponentBehavior: Bound + +import QtQuick +import QtQuick.Layouts + +import "../Controls2" + +TextFieldWithHeaderType { + Layout.fillWidth: true + Layout.topMargin: 16 + + textField.validator: IntValidator { bottom: 0 } + + checkEmptyText: true +} diff --git a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml index 3206c4b9..d97d09e8 100644 --- a/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml +++ b/client/ui/qml/Pages2/PageProtocolAwgClientSettings.qml @@ -115,14 +115,10 @@ PageType { KeyNavigation.tab: junkPacketCountTextField.textField } - TextFieldWithHeaderType { + AwgTextField { id: junkPacketCountTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: "Jc - Junk packet count" textField.text: clientJunkPacketCount - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== clientJunkPacketCount) { @@ -130,19 +126,13 @@ PageType { } } - checkEmptyText: true - KeyNavigation.tab: junkPacketMinSizeTextField.textField } - TextFieldWithHeaderType { + AwgTextField { id: junkPacketMinSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: "Jmin - Junk packet minimum size" textField.text: clientJunkPacketMinSize - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== clientJunkPacketMinSize) { @@ -150,36 +140,27 @@ PageType { } } - checkEmptyText: true - KeyNavigation.tab: junkPacketMaxSizeTextField.textField } - TextFieldWithHeaderType { + AwgTextField { id: junkPacketMaxSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: "Jmax - Junk packet maximum size" textField.text: clientJunkPacketMaxSize - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== clientJunkPacketMaxSize) { clientJunkPacketMaxSize = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: specialJunk1TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("I1 - First special junk packet") textField.text: clientSpecialJunk1 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientSpecialJunk1) { @@ -188,13 +169,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: specialJunk2TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("I2 - Second special junk packet") textField.text: clientSpecialJunk2 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientSpecialJunk2) { @@ -203,13 +183,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: specialJunk3TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("I3 - Third special junk packet") textField.text: clientSpecialJunk3 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientSpecialJunk3) { @@ -218,13 +197,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: specialJunk4TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("I4 - Fourth special junk packet") textField.text: clientSpecialJunk4 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientSpecialJunk4) { @@ -233,13 +211,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: specialJunk5TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("I5 - Fifth special junk packet") textField.text: clientSpecialJunk5 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientSpecialJunk5 ) { @@ -248,13 +225,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: controlledJunk1TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("J1 - First controlled junk packet") textField.text: clientControlledJunk1 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientControlledJunk1) { @@ -263,13 +239,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: controlledJunk2TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("J2 - Second controlled junk packet") textField.text: clientControlledJunk2 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientControlledJunk2) { @@ -278,13 +253,12 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: controlledJunk3TextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("J3 - Third controlled junk packet") textField.text: clientControlledJunk3 + textField.validator: null + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientControlledJunk3) { @@ -293,14 +267,11 @@ PageType { } } - TextFieldWithHeaderType { + AwgTextField { id: iTimeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("Itime - Special handshake timeout") textField.text: clientSpecialHandshakeTimeout - textField.validator: IntValidator { bottom: 0 } + checkEmptyText: false textField.onEditingFinished: { if (textField.text !== clientSpecialHandshakeTimeout) { @@ -316,99 +287,72 @@ PageType { text: qsTr("Server settings") } - TextFieldWithHeaderType { + AwgTextField { id: portTextField - Layout.fillWidth: true - Layout.topMargin: 8 - enabled: false headerText: qsTr("Port") textField.text: port } - TextFieldWithHeaderType { + AwgTextField { id: initPacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - enabled: false headerText: "S1 - Init packet junk size" textField.text: serverInitPacketJunkSize } - TextFieldWithHeaderType { + AwgTextField { id: responsePacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - enabled: false headerText: "S2 - Response packet junk size" textField.text: serverResponsePacketJunkSize } - TextFieldWithHeaderType { - id: cookieReplyPacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 + // AwgTextField { + // id: cookieReplyPacketJunkSizeTextField + // enabled: false - enabled: false + // headerText: "S3 - Cookie Reply packet junk size" + // textField.text: serverCookieReplyPacketJunkSize + // } - headerText: "S3 - Cookie Reply packet junk size" - textField.text: serverCookieReplyPacketJunkSize - } + // AwgTextField { + // id: transportPacketJunkSizeTextField + // enabled: false - TextFieldWithHeaderType { - id: transportPacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 + // headerText: "S4 - Transport packet junk size" + // textField.text: serverTransportPacketJunkSize + // } - enabled: false - - headerText: "S4 - Transport packet junk size" - textField.text: serverTransportPacketJunkSize - } - - TextFieldWithHeaderType { + AwgTextField { id: initPacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - enabled: false headerText: "H1 - Init packet magic header" textField.text: serverInitPacketMagicHeader } - TextFieldWithHeaderType { + AwgTextField { id: responsePacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - enabled: false headerText: "H2 - Response packet magic header" textField.text: serverResponsePacketMagicHeader } - TextFieldWithHeaderType { + AwgTextField { id: underloadPacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - enabled: false headerText: "H3 - Underload packet magic header" textField.text: serverUnderloadPacketMagicHeader } - TextFieldWithHeaderType { + AwgTextField { id: transportPacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - enabled: false headerText: "H4 - Transport packet magic header" diff --git a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml index a9e8b28a..699ae724 100644 --- a/client/ui/qml/Pages2/PageProtocolAwgSettings.qml +++ b/client/ui/qml/Pages2/PageProtocolAwgSettings.qml @@ -138,230 +138,136 @@ PageType { checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: junkPacketCountTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("Jc - Junk packet count") textField.text: serverJunkPacketCount - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { - if (textField.text === "") { - textField.text = "0" - } - if (textField.text !== serverJunkPacketCount) { serverJunkPacketCount = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: junkPacketMinSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("Jmin - Junk packet minimum size") textField.text: serverJunkPacketMinSize - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverJunkPacketMinSize) { serverJunkPacketMinSize = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: junkPacketMaxSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("Jmax - Junk packet maximum size") textField.text: serverJunkPacketMaxSize - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverJunkPacketMaxSize) { serverJunkPacketMaxSize = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: initPacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("S1 - Init packet junk size") textField.text: serverInitPacketJunkSize - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverInitPacketJunkSize) { serverInitPacketJunkSize = textField.text } } - - checkEmptyText: true - - onActiveFocusChanged: { - if(activeFocus) { - listview.positionViewAtEnd() - } - } } - TextFieldWithHeaderType { + AwgTextField { id: responsePacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("S2 - Response packet junk size") textField.text: serverResponsePacketJunkSize - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverResponsePacketJunkSize) { serverResponsePacketJunkSize = textField.text } } - - checkEmptyText: true - - onActiveFocusChanged: { - if(activeFocus) { - listview.positionViewAtEnd() - } - } } - TextFieldWithHeaderType { - id: cookieReplyPacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 + // AwgTextField { + // id: cookieReplyPacketJunkSizeTextField + // headerText: qsTr("S3 - Cookie reply packet junk size") + // textField.text: serverCookieReplyPacketJunkSize - headerText: qsTr("S3 - Cookie reply packet junk size") - textField.text: serverCookieReplyPacketJunkSize - textField.validator: IntValidator { bottom: 0 } + // textField.onEditingFinished: { + // if (textField.text !== serverCookieReplyPacketJunkSize) { + // serverCookieReplyPacketJunkSize = textField.text + // } + // } + // } - textField.onEditingFinished: { - if (textField.text !== serverCookieReplyPacketJunkSize) { - serverCookieReplyPacketJunkSize = textField.text - } - } + // AwgTextField { + // id: transportPacketJunkSizeTextField + // headerText: qsTr("S4 - Transport packet junk size") + // textField.text: serverTransportPacketJunkSize - checkEmptyText: true + // textField.onEditingFinished: { + // if (textField.text !== serverTransportPacketJunkSize) { + // serverTransportPacketJunkSize = textField.text + // } + // } + // } - onActiveFocusChanged: { - if(activeFocus) { - listview.positionViewAtEnd() - } - } - } - - TextFieldWithHeaderType { - id: transportPacketJunkSizeTextField - Layout.fillWidth: true - Layout.topMargin: 16 - - headerText: qsTr("S4 - Transport packet junk size") - textField.text: serverTransportPacketJunkSize - textField.validator: IntValidator { bottom: 0 } - - textField.onEditingFinished: { - if (textField.text !== serverTransportPacketJunkSize) { - serverTransportPacketJunkSize = textField.text - } - } - - checkEmptyText: true - - onActiveFocusChanged: { - if(activeFocus) { - listview.positionViewAtEnd() - } - } - } - - TextFieldWithHeaderType { + AwgTextField { id: initPacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("H1 - Init packet magic header") textField.text: serverInitPacketMagicHeader - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverInitPacketMagicHeader) { serverInitPacketMagicHeader = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: responsePacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("H2 - Response packet magic header") textField.text: serverResponsePacketMagicHeader - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverResponsePacketMagicHeader) { serverResponsePacketMagicHeader = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: underloadPacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("H3 - Underload packet magic header") textField.text: serverUnderloadPacketMagicHeader - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverUnderloadPacketMagicHeader) { serverUnderloadPacketMagicHeader = textField.text } } - - checkEmptyText: true } - TextFieldWithHeaderType { + AwgTextField { id: transportPacketMagicHeaderTextField - Layout.fillWidth: true - Layout.topMargin: 16 - headerText: qsTr("H4 - Transport packet magic header") textField.text: serverTransportPacketMagicHeader - textField.validator: IntValidator { bottom: 0 } textField.onEditingFinished: { if (textField.text !== serverTransportPacketMagicHeader) { serverTransportPacketMagicHeader = textField.text } } - - checkEmptyText: true } @@ -377,21 +283,12 @@ PageType { responsePacketMagicHeaderTextField.errorText === "" && initPacketMagicHeaderTextField.errorText === "" && responsePacketJunkSizeTextField.errorText === "" && - cookieReplyHeaderJunkTextField.errorText === "" && - transportHeaderJunkTextField.errorText === "" && + // cookieReplyHeaderJunkTextField.errorText === "" && + // transportHeaderJunkTextField.errorText === "" && initPacketJunkSizeTextField.errorText === "" && junkPacketMaxSizeTextField.errorText === "" && junkPacketMinSizeTextField.errorText === "" && junkPacketCountTextField.errorText === "" && - // specialJunk1TextField.errorText === "" && - // specialJunk2TextField.errorText === "" && - // specialJunk3TextField.errorText === "" && - // specialJunk4TextField.errorText === "" && - // specialJunk5TextField.errorText === "" && - // controlledJunk1TextField.errorText === "" && - // controlledJunk2TextField.errorText === "" && - // controlledJunk3TextField.errorText === "" && - // iTimeTextField.errorText === "" && portTextField.errorText === "" && vpnAddressSubnetTextField.errorText === "" @@ -416,12 +313,17 @@ PageType { } if (AwgConfigModel.isPacketSizeEqual(parseInt(initPacketJunkSizeTextField.textField.text), - parseInt(responsePacketJunkSizeTextField.textField.text), - parseInt(cookieReplyPacketJunkSizeTextField.textField.text), - parseInt(transportPacketJunkSizeTextField.textField.text))) { - PageController.showErrorMessage(qsTr("The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92) + S3 + cookie reply size (64) + S4 + transport packet size (32)")) + parseInt(responsePacketJunkSizeTextField.textField.text))) { + PageController.showErrorMessage(qsTr("The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92)")) return } + // if (AwgConfigModel.isPacketSizeEqual(parseInt(initPacketJunkSizeTextField.textField.text), + // parseInt(responsePacketJunkSizeTextField.textField.text), + // parseInt(cookieReplyPacketJunkSizeTextField.textField.text), + // parseInt(transportPacketJunkSizeTextField.textField.text))) { + // PageController.showErrorMessage(qsTr("The value of the field S1 + message initiation size (148) must not equal S2 + message response size (92) + S3 + cookie reply size (64) + S4 + transport packet size (32)")) + // return + // } } var headerText = qsTr("Save settings?")