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