refactoring: all protocol models now work with c++ classes
This commit is contained in:
parent
65f60ab922
commit
d766a001e3
25 changed files with 301 additions and 295 deletions
|
@ -40,4 +40,19 @@ QJsonObject CloakProtocolConfig::toJson() const
|
|||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
bool CloakProtocolConfig::hasEqualServerSettings(const CloakProtocolConfig &other) const
|
||||
{
|
||||
if (serverProtocolConfig.port != other.serverProtocolConfig.port ||
|
||||
serverProtocolConfig.cipher != other.serverProtocolConfig.cipher ||
|
||||
serverProtocolConfig.site != other.serverProtocolConfig.site) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void CloakProtocolConfig::clearClientSettings()
|
||||
{
|
||||
clientProtocolConfig = cloak::ClientProtocolConfig();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,9 @@ public:
|
|||
|
||||
QJsonObject toJson() const override;
|
||||
|
||||
bool hasEqualServerSettings(const CloakProtocolConfig &other) const;
|
||||
void clearClientSettings();
|
||||
|
||||
cloak::ServerProtocolConfig serverProtocolConfig;
|
||||
cloak::ClientProtocolConfig clientProtocolConfig;
|
||||
};
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
#include "openvpnProtocolConfig.h"
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include "protocols/protocols_defs.h"
|
||||
#include <QJsonDocument>
|
||||
|
||||
using namespace amnezia;
|
||||
|
||||
OpenVpnProtocolConfig::OpenVpnProtocolConfig(const QJsonObject &protocolConfigObject, const QString &protocolName) : ProtocolConfig(protocolName)
|
||||
OpenVpnProtocolConfig::OpenVpnProtocolConfig(const QJsonObject &protocolConfigObject, const QString &protocolName)
|
||||
: ProtocolConfig(protocolName)
|
||||
{
|
||||
serverProtocolConfig.subnetAddress = protocolConfigObject.value(config_key::subnet_address).toString();
|
||||
serverProtocolConfig.transportProto = protocolConfigObject.value(config_key::transport_proto).toString();
|
||||
serverProtocolConfig.port = protocolConfigObject.value(config_key::port).toString();
|
||||
serverProtocolConfig.ncpDisable = protocolConfigObject.value(config_key::ncp_disable).toString();
|
||||
serverProtocolConfig.ncpDisable = protocolConfigObject.value(config_key::ncp_disable).toBool(protocols::openvpn::defaultNcpDisable);
|
||||
serverProtocolConfig.hash = protocolConfigObject.value(config_key::hash).toString();
|
||||
serverProtocolConfig.cipher = protocolConfigObject.value(config_key::cipher).toString();
|
||||
serverProtocolConfig.tlsAuth = protocolConfigObject.value(config_key::tls_auth).toString();
|
||||
serverProtocolConfig.blockOutsideDns = protocolConfigObject.value(config_key::block_outside_dns).toString();
|
||||
serverProtocolConfig.tlsAuth = protocolConfigObject.value(config_key::tls_auth).toBool(protocols::openvpn::defaultTlsAuth);
|
||||
serverProtocolConfig.blockOutsideDns =
|
||||
protocolConfigObject.value(config_key::block_outside_dns).toBool(protocols::openvpn::defaultBlockOutsideDns);
|
||||
serverProtocolConfig.additionalClientConfig = protocolConfigObject.value(config_key::additional_client_config).toString();
|
||||
serverProtocolConfig.additionalServerConfig = protocolConfigObject.value(config_key::additional_server_config).toString();
|
||||
|
||||
|
@ -42,21 +44,15 @@ QJsonObject OpenVpnProtocolConfig::toJson() const
|
|||
if (!serverProtocolConfig.port.isEmpty()) {
|
||||
json[config_key::port] = serverProtocolConfig.port;
|
||||
}
|
||||
if (!serverProtocolConfig.ncpDisable.isEmpty()) {
|
||||
json[config_key::ncp_disable] = serverProtocolConfig.ncpDisable;
|
||||
}
|
||||
json[config_key::ncp_disable] = serverProtocolConfig.ncpDisable;
|
||||
if (!serverProtocolConfig.hash.isEmpty()) {
|
||||
json[config_key::hash] = serverProtocolConfig.hash;
|
||||
}
|
||||
if (!serverProtocolConfig.cipher.isEmpty()) {
|
||||
json[config_key::cipher] = serverProtocolConfig.cipher;
|
||||
}
|
||||
if (!serverProtocolConfig.tlsAuth.isEmpty()) {
|
||||
json[config_key::tls_auth] = serverProtocolConfig.tlsAuth;
|
||||
}
|
||||
if (!serverProtocolConfig.blockOutsideDns.isEmpty()) {
|
||||
json[config_key::block_outside_dns] = serverProtocolConfig.blockOutsideDns;
|
||||
}
|
||||
json[config_key::tls_auth] = serverProtocolConfig.tlsAuth;
|
||||
json[config_key::block_outside_dns] = serverProtocolConfig.blockOutsideDns;
|
||||
if (!serverProtocolConfig.additionalClientConfig.isEmpty()) {
|
||||
json[config_key::additional_client_config] = serverProtocolConfig.additionalClientConfig;
|
||||
}
|
||||
|
@ -80,4 +76,25 @@ QJsonObject OpenVpnProtocolConfig::toJson() const
|
|||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
}
|
||||
|
||||
bool OpenVpnProtocolConfig::hasEqualServerSettings(const OpenVpnProtocolConfig &other) const
|
||||
{
|
||||
if (serverProtocolConfig.subnetAddress != other.serverProtocolConfig.subnetAddress
|
||||
|| serverProtocolConfig.transportProto != other.serverProtocolConfig.transportProto
|
||||
|| serverProtocolConfig.port != other.serverProtocolConfig.port
|
||||
|| serverProtocolConfig.ncpDisable != other.serverProtocolConfig.ncpDisable
|
||||
|| serverProtocolConfig.hash != other.serverProtocolConfig.hash || serverProtocolConfig.cipher != other.serverProtocolConfig.cipher
|
||||
|| serverProtocolConfig.tlsAuth != other.serverProtocolConfig.tlsAuth
|
||||
|| serverProtocolConfig.blockOutsideDns != other.serverProtocolConfig.blockOutsideDns
|
||||
|| serverProtocolConfig.additionalClientConfig != other.serverProtocolConfig.additionalClientConfig
|
||||
|| serverProtocolConfig.additionalServerConfig != other.serverProtocolConfig.additionalServerConfig) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void OpenVpnProtocolConfig::clearClientSettings()
|
||||
{
|
||||
clientProtocolConfig = openvpn::ClientProtocolConfig();
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@ namespace openvpn
|
|||
QString subnetAddress;
|
||||
QString transportProto;
|
||||
QString port;
|
||||
QString ncpDisable;
|
||||
bool ncpDisable;
|
||||
QString hash;
|
||||
QString cipher;
|
||||
QString tlsAuth;
|
||||
QString blockOutsideDns;
|
||||
bool tlsAuth;
|
||||
bool blockOutsideDns;
|
||||
QString additionalClientConfig;
|
||||
QString additionalServerConfig;
|
||||
};
|
||||
|
@ -39,6 +39,9 @@ public:
|
|||
|
||||
QJsonObject toJson() const override;
|
||||
|
||||
bool hasEqualServerSettings(const OpenVpnProtocolConfig &other) const;
|
||||
void clearClientSettings();
|
||||
|
||||
openvpn::ServerProtocolConfig serverProtocolConfig;
|
||||
openvpn::ClientProtocolConfig clientProtocolConfig;
|
||||
};
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "core/models/protocols/openvpnProtocolConfig.h"
|
||||
#include "core/models/protocols/protocolConfig.h"
|
||||
#include "core/models/protocols/shadowsocksProtocolConfig.h"
|
||||
#include "core/models/protocols/wireguardProtocolConfig.h"
|
||||
#include "core/models/protocols/xrayProtocolConfig.h"
|
||||
#include "protocols/protocols_defs.h"
|
||||
|
||||
|
@ -38,27 +39,27 @@ bool ProtocolConfig::isServerSettingsEqual(const QSharedPointer<ProtocolConfig>
|
|||
case Proto::OpenVpn: {
|
||||
auto thisConfig = qSharedPointerCast<OpenVpnProtocolConfig>(QSharedPointer<ProtocolConfig>(this));
|
||||
auto otherConfig = qSharedPointerCast<OpenVpnProtocolConfig>(other);
|
||||
return false;
|
||||
return thisConfig->hasEqualServerSettings(*otherConfig.data());
|
||||
}
|
||||
case Proto::WireGuard: {
|
||||
auto thisConfig = qSharedPointerCast<WireGuardProtocolConfig>(QSharedPointer<ProtocolConfig>(this));
|
||||
auto otherConfig = qSharedPointerCast<WireGuardProtocolConfig>(other);
|
||||
return false;
|
||||
return thisConfig->hasEqualServerSettings(*otherConfig.data());
|
||||
}
|
||||
case Proto::ShadowSocks: {
|
||||
auto thisConfig = qSharedPointerCast<ShadowsocksProtocolConfig>(QSharedPointer<ProtocolConfig>(this));
|
||||
auto otherConfig = qSharedPointerCast<ShadowsocksProtocolConfig>(other);
|
||||
return false;
|
||||
return thisConfig->hasEqualServerSettings(*otherConfig.data());
|
||||
}
|
||||
case Proto::Cloak: {
|
||||
auto thisConfig = qSharedPointerCast<CloakProtocolConfig>(QSharedPointer<ProtocolConfig>(this));
|
||||
auto otherConfig = qSharedPointerCast<CloakProtocolConfig>(other);
|
||||
return false;
|
||||
return thisConfig->hasEqualServerSettings(*otherConfig.data());
|
||||
}
|
||||
case Proto::Xray: {
|
||||
auto thisConfig = qSharedPointerCast<XrayProtocolConfig>(QSharedPointer<ProtocolConfig>(this));
|
||||
auto otherConfig = qSharedPointerCast<XrayProtocolConfig>(other);
|
||||
return false;
|
||||
return thisConfig->hasEqualServerSettings(*otherConfig.data());
|
||||
}
|
||||
case Proto::Awg: {
|
||||
auto thisConfig = qSharedPointerCast<AwgProtocolConfig>(QSharedPointer<ProtocolConfig>(this));
|
||||
|
|
|
@ -36,4 +36,18 @@ QJsonObject ShadowsocksProtocolConfig::toJson() const
|
|||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
bool ShadowsocksProtocolConfig::hasEqualServerSettings(const ShadowsocksProtocolConfig &other) const
|
||||
{
|
||||
if (serverProtocolConfig.port != other.serverProtocolConfig.port ||
|
||||
serverProtocolConfig.cipher != other.serverProtocolConfig.cipher) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ShadowsocksProtocolConfig::clearClientSettings()
|
||||
{
|
||||
clientProtocolConfig = shadowsocks::ClientProtocolConfig();
|
||||
}
|
||||
|
|
|
@ -27,6 +27,9 @@ public:
|
|||
|
||||
QJsonObject toJson() const override;
|
||||
|
||||
bool hasEqualServerSettings(const ShadowsocksProtocolConfig &other) const;
|
||||
void clearClientSettings();
|
||||
|
||||
shadowsocks::ServerProtocolConfig serverProtocolConfig;
|
||||
shadowsocks::ClientProtocolConfig clientProtocolConfig;
|
||||
};
|
||||
|
|
|
@ -118,3 +118,17 @@ QJsonObject WireGuardProtocolConfig::toJson() const
|
|||
|
||||
return json;
|
||||
}
|
||||
|
||||
bool WireGuardProtocolConfig::hasEqualServerSettings(const WireGuardProtocolConfig &other) const
|
||||
{
|
||||
if (serverProtocolConfig.subnetAddress != other.serverProtocolConfig.subnetAddress ||
|
||||
serverProtocolConfig.port != other.serverProtocolConfig.port) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void WireGuardProtocolConfig::clearClientSettings()
|
||||
{
|
||||
clientProtocolConfig = wireguard::ClientProtocolConfig();
|
||||
}
|
||||
|
|
|
@ -51,6 +51,9 @@ public:
|
|||
|
||||
QJsonObject toJson() const override;
|
||||
|
||||
bool hasEqualServerSettings(const WireGuardProtocolConfig &other) const;
|
||||
void clearClientSettings();
|
||||
|
||||
wireguard::ServerProtocolConfig serverProtocolConfig;
|
||||
wireguard::ClientProtocolConfig clientProtocolConfig;
|
||||
};
|
||||
|
|
|
@ -40,4 +40,19 @@ QJsonObject XrayProtocolConfig::toJson() const
|
|||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
bool XrayProtocolConfig::hasEqualServerSettings(const XrayProtocolConfig &other) const
|
||||
{
|
||||
if (serverProtocolConfig.site != other.serverProtocolConfig.site ||
|
||||
serverProtocolConfig.port != other.serverProtocolConfig.port ||
|
||||
serverProtocolConfig.transportProto != other.serverProtocolConfig.transportProto) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void XrayProtocolConfig::clearClientSettings()
|
||||
{
|
||||
clientProtocolConfig = xray::ClientProtocolConfig();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,9 @@ public:
|
|||
|
||||
QJsonObject toJson() const override;
|
||||
|
||||
bool hasEqualServerSettings(const XrayProtocolConfig &other) const;
|
||||
void clearClientSettings();
|
||||
|
||||
xray::ServerProtocolConfig serverProtocolConfig;
|
||||
xray::ClientProtocolConfig clientProtocolConfig;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue