diff --git a/client/configurators/cloak_configurator.cpp b/client/configurators/cloak_configurator.cpp index fb7da82d..a95987bf 100644 --- a/client/configurators/cloak_configurator.cpp +++ b/client/configurators/cloak_configurator.cpp @@ -7,12 +7,10 @@ #include "protocols/protocols_defs.h" QJsonObject CloakConfigurator::genCloakConfig(const ServerCredentials &credentials, - Protocol proto, ErrorCode *errorCode) + DockerContainer container, ErrorCode *errorCode) { ErrorCode e = ErrorCode::NoError; - DockerContainer container = amnezia::containerForProto(proto); - QString cloakPublicKey = ServerController::getTextFileFromContainer(container, credentials, amnezia::protocols::cloak::ckPublicKeyPath, &e); cloakPublicKey.replace("\n", ""); diff --git a/client/configurators/cloak_configurator.h b/client/configurators/cloak_configurator.h index b2dd9d5e..8e298d57 100644 --- a/client/configurators/cloak_configurator.h +++ b/client/configurators/cloak_configurator.h @@ -11,7 +11,7 @@ class CloakConfigurator { public: - static QJsonObject genCloakConfig(const ServerCredentials &credentials, Protocol proto, + static QJsonObject genCloakConfig(const ServerCredentials &credentials, DockerContainer container, ErrorCode *errorCode = nullptr); }; diff --git a/client/configurators/openvpn_configurator.cpp b/client/configurators/openvpn_configurator.cpp index 752dbefd..19ae5fb2 100644 --- a/client/configurators/openvpn_configurator.cpp +++ b/client/configurators/openvpn_configurator.cpp @@ -139,7 +139,7 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::createCertRequest() } OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(const ServerCredentials &credentials, - Protocol proto, ErrorCode *errorCode) + DockerContainer container, ErrorCode *errorCode) { OpenVpnConfigurator::ConnectionData connData = OpenVpnConfigurator::createCertRequest(); connData.host = credentials.hostName; @@ -153,8 +153,6 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::prepareOpenVpnConfig(co arg(amnezia::protocols::openvpn::clientsDirPath). arg(connData.clientId); - DockerContainer container = amnezia::containerForProto(proto); - ErrorCode e = ServerController::uploadTextFileToContainer(container, credentials, connData.request, reqFileName); if (e) { if (errorCode) *errorCode = e; @@ -194,7 +192,7 @@ Settings &OpenVpnConfigurator::m_settings() } QString OpenVpnConfigurator::genOpenVpnConfig(const ServerCredentials &credentials, - Protocol proto, ErrorCode *errorCode) + DockerContainer container, ErrorCode *errorCode) { // QFile configTemplFile; // if (proto == Protocol::OpenVpn) @@ -206,20 +204,20 @@ QString OpenVpnConfigurator::genOpenVpnConfig(const ServerCredentials &credentia // configTemplFile.open(QIODevice::ReadOnly); // QString config = configTemplFile.readAll(); - QString config = amnezia::scriptData(ProtocolScriptType::openvpn_template, proto); + QString config = amnezia::scriptData(ProtocolScriptType::openvpn_template, container); - ConnectionData connData = prepareOpenVpnConfig(credentials, proto, errorCode); + ConnectionData connData = prepareOpenVpnConfig(credentials, container, errorCode); if (errorCode && *errorCode) { return ""; } - if (proto == Protocol::OpenVpn) + if (container == DockerContainer::OpenVpn) config.replace("$PROTO", "udp"); - else if (proto == Protocol::ShadowSocksOverOpenVpn) { + else if (container == DockerContainer::ShadowSocksOverOpenVpn) { config.replace("$PROTO", "tcp"); config.replace("$LOCAL_PROXY_PORT", amnezia::protocols::shadowsocks::ssLocalProxyPort); } - else if (proto == Protocol::OpenVpnOverCloak) { + else if (container == DockerContainer::OpenVpnOverCloak) { config.replace("$PROTO", "tcp"); } diff --git a/client/configurators/openvpn_configurator.h b/client/configurators/openvpn_configurator.h index 4e118888..db9f1ab8 100644 --- a/client/configurators/openvpn_configurator.h +++ b/client/configurators/openvpn_configurator.h @@ -22,7 +22,7 @@ public: QString host; // host ip }; - static QString genOpenVpnConfig(const ServerCredentials &credentials, Protocol proto, + static QString genOpenVpnConfig(const ServerCredentials &credentials, DockerContainer container, ErrorCode *errorCode = nullptr); static QString convertOpenSShKey(const QString &key); @@ -40,7 +40,7 @@ private: static ConnectionData createCertRequest(); static ConnectionData prepareOpenVpnConfig(const ServerCredentials &credentials, - Protocol proto, ErrorCode *errorCode = nullptr); + DockerContainer container, ErrorCode *errorCode = nullptr); static Settings &m_settings(); }; diff --git a/client/core/defs.h b/client/core/defs.h index 9b6f85b8..b3249257 100644 --- a/client/core/defs.h +++ b/client/core/defs.h @@ -10,8 +10,8 @@ Q_NAMESPACE enum class Protocol { Any, OpenVpn, - ShadowSocksOverOpenVpn, - OpenVpnOverCloak, + ShadowSocks, + Cloak, WireGuard }; Q_ENUM_NS(Protocol) @@ -44,18 +44,18 @@ inline QString containerToString(DockerContainer container){ return QVariant::fromValue(container).toString(); } -static DockerContainer containerForProto(Protocol proto) -{ - Q_ASSERT(proto != Protocol::Any); +//static DockerContainer containerForProto(Protocol proto) +//{ +// Q_ASSERT(proto != Protocol::Any); - switch (proto) { - case Protocol::OpenVpn: return DockerContainer::OpenVpn; - case Protocol::OpenVpnOverCloak: return DockerContainer::OpenVpnOverCloak; - case Protocol::ShadowSocksOverOpenVpn: return DockerContainer::ShadowSocksOverOpenVpn; - case Protocol::WireGuard: return DockerContainer::WireGuard; - case Protocol::Any: return DockerContainer::None; - } -} +// switch (proto) { +// case Protocol::OpenVpn: return DockerContainer::OpenVpn; +// case Protocol::OpenVpnOverCloak: return DockerContainer::OpenVpnOverCloak; +// case Protocol::ShadowSocksOverOpenVpn: return DockerContainer::ShadowSocksOverOpenVpn; +// case Protocol::WireGuard: return DockerContainer::WireGuard; +// case Protocol::Any: return DockerContainer::None; +// } +//} struct ServerCredentials { diff --git a/client/core/scripts_registry.cpp b/client/core/scripts_registry.cpp index e73996c2..93b8d1c8 100644 --- a/client/core/scripts_registry.cpp +++ b/client/core/scripts_registry.cpp @@ -4,13 +4,13 @@ #include #include -QString amnezia::scriptFolder(amnezia::Protocol proto) +QString amnezia::scriptFolder(amnezia::DockerContainer container) { - switch (proto) { - case Protocol::OpenVpn: return QLatin1String("openvpn"); - case Protocol::OpenVpnOverCloak: return QLatin1String("openvpn_cloak"); - case Protocol::ShadowSocksOverOpenVpn: return QLatin1String("openvpn_shadowsocks"); - case Protocol::WireGuard: return QLatin1String("wireguard"); + switch (container) { + case DockerContainer::OpenVpn: return QLatin1String("openvpn"); + case DockerContainer::OpenVpnOverCloak: return QLatin1String("openvpn_cloak"); + case DockerContainer::ShadowSocksOverOpenVpn: return QLatin1String("openvpn_shadowsocks"); + case DockerContainer::WireGuard: return QLatin1String("wireguard"); default: return ""; } } @@ -49,9 +49,9 @@ QString amnezia::scriptData(amnezia::SharedScriptType type) return file.readAll(); } -QString amnezia::scriptData(amnezia::ProtocolScriptType type, amnezia::Protocol proto) +QString amnezia::scriptData(amnezia::ProtocolScriptType type, DockerContainer container) { - QString fileName = QString(":/server_scripts/%1/%2").arg(amnezia::scriptFolder(proto), amnezia::scriptName(type)); + QString fileName = QString(":/server_scripts/%1/%2").arg(amnezia::scriptFolder(container), amnezia::scriptName(type)); QFile file(fileName); if (! file.open(QIODevice::ReadOnly)) { qDebug() << "Error opening script" << fileName; diff --git a/client/core/scripts_registry.h b/client/core/scripts_registry.h index 57755e5b..f5d2c951 100644 --- a/client/core/scripts_registry.h +++ b/client/core/scripts_registry.h @@ -25,13 +25,13 @@ enum ProtocolScriptType { }; -QString scriptFolder(Protocol proto); +QString scriptFolder(DockerContainer container); QString scriptName(SharedScriptType type); QString scriptName(ProtocolScriptType type); QString scriptData(SharedScriptType type); -QString scriptData(ProtocolScriptType type, Protocol proto); +QString scriptData(ProtocolScriptType type, DockerContainer container); } #endif // SCRIPTS_REGISTRY_H diff --git a/client/core/servercontroller.cpp b/client/core/servercontroller.cpp index a7d5b362..e161f91c 100644 --- a/client/core/servercontroller.cpp +++ b/client/core/servercontroller.cpp @@ -467,7 +467,7 @@ ErrorCode ServerController::setupOpenVpnOverCloakServer(const ServerCredentials genVarsForScript(credentials, container))); if (e) return e; - uploadFileToHost(credentials, amnezia::scriptData(ProtocolScriptType::dockerfile, Protocol::OpenVpnOverCloak).toUtf8(), + uploadFileToHost(credentials, amnezia::scriptData(ProtocolScriptType::dockerfile, DockerContainer::OpenVpnOverCloak).toUtf8(), amnezia::server::getDockerfileFolder(container) + "/Dockerfile"); @@ -489,12 +489,12 @@ ErrorCode ServerController::setupOpenVpnOverCloakServer(const ServerCredentials runScript(sshParams(credentials), - replaceVars(amnezia::scriptData(ProtocolScriptType::configure_container, Protocol::OpenVpnOverCloak), + replaceVars(amnezia::scriptData(ProtocolScriptType::configure_container, DockerContainer::OpenVpnOverCloak), genVarsForScript(credentials, container))); if (e) return e; uploadTextFileToContainer(DockerContainer::OpenVpnOverCloak, credentials, - replaceVars(amnezia::scriptData(ProtocolScriptType::container_startup, Protocol::OpenVpnOverCloak), + replaceVars(amnezia::scriptData(ProtocolScriptType::container_startup, DockerContainer::OpenVpnOverCloak), genVarsForScript(credentials, container)), "/opt/amnezia/start.sh"); diff --git a/client/protocols/shadowsocksvpnprotocol.cpp b/client/protocols/shadowsocksvpnprotocol.cpp index 0b767d86..0c07bdbb 100644 --- a/client/protocols/shadowsocksvpnprotocol.cpp +++ b/client/protocols/shadowsocksvpnprotocol.cpp @@ -96,7 +96,7 @@ QString ShadowSocksVpnProtocol::shadowSocksExecPath() #endif } -QJsonObject ShadowSocksVpnProtocol::genShadowSocksConfig(const ServerCredentials &credentials, Protocol proto) +QJsonObject ShadowSocksVpnProtocol::genShadowSocksConfig(const ServerCredentials &credentials, DockerContainer container) { QJsonObject ssConfig; ssConfig.insert("server", credentials.hostName); diff --git a/client/protocols/shadowsocksvpnprotocol.h b/client/protocols/shadowsocksvpnprotocol.h index a7545a58..061b5381 100644 --- a/client/protocols/shadowsocksvpnprotocol.h +++ b/client/protocols/shadowsocksvpnprotocol.h @@ -13,7 +13,7 @@ public: ErrorCode start() override; void stop() override; - static QJsonObject genShadowSocksConfig(const ServerCredentials &credentials, Protocol proto = Protocol::ShadowSocksOverOpenVpn); + static QJsonObject genShadowSocksConfig(const ServerCredentials &credentials, DockerContainer container = DockerContainer::ShadowSocksOverOpenVpn); protected: void readShadowSocksConfiguration(const QJsonObject &configuration); diff --git a/client/settings.cpp b/client/settings.cpp index 68a532bc..8198ac6d 100644 --- a/client/settings.cpp +++ b/client/settings.cpp @@ -108,12 +108,12 @@ QJsonObject Settings::protocolConfig(int serverIndex, DockerContainer container, switch (proto) { case Protocol::OpenVpn: return c.value(config_key::openvpn).toObject(); - case Protocol::OpenVpnOverCloak: - return c.value(config_key::openvpn).toObject(); - case Protocol::ShadowSocksOverOpenVpn: - return c.value(config_key::openvpn).toObject(); + case Protocol::ShadowSocks: + return c.value(config_key::shadowsocks).toObject(); + case Protocol::Cloak: + return c.value(config_key::cloak).toObject(); default: - break; + return QJsonObject(); } } diff --git a/client/vpnconnection.cpp b/client/vpnconnection.cpp index 0d05009c..369888ec 100644 --- a/client/vpnconnection.cpp +++ b/client/vpnconnection.cpp @@ -80,11 +80,11 @@ ErrorCode VpnConnection::lastError() const return m_vpnProtocol.data()->lastError(); } -ErrorCode VpnConnection::createVpnConfiguration(const ServerCredentials &credentials, Protocol protocol) +ErrorCode VpnConnection::createVpnConfiguration(const ServerCredentials &credentials, DockerContainer container) { ErrorCode errorCode = ErrorCode::NoError; - if (protocol == Protocol::OpenVpn || protocol == Protocol::ShadowSocksOverOpenVpn || protocol == Protocol::OpenVpnOverCloak) { - QString openVpnConfigData = OpenVpnConfigurator::genOpenVpnConfig(credentials, protocol, &errorCode); + if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocksOverOpenVpn || container == DockerContainer::OpenVpnOverCloak) { + QString openVpnConfigData = OpenVpnConfigurator::genOpenVpnConfig(credentials, container, &errorCode); m_vpnConfiguration.insert(config::key_openvpn_config_data, openVpnConfigData); if (errorCode) { return errorCode; @@ -101,13 +101,13 @@ ErrorCode VpnConnection::createVpnConfiguration(const ServerCredentials &credent } } - if (protocol == Protocol::ShadowSocksOverOpenVpn) { + if (container == DockerContainer::ShadowSocksOverOpenVpn) { QJsonObject ssConfigData = ShadowSocksVpnProtocol::genShadowSocksConfig(credentials); m_vpnConfiguration.insert(config::key_shadowsocks_config_data, ssConfigData); } - if (protocol == Protocol::OpenVpnOverCloak) { - QJsonObject cloakConfigData = CloakConfigurator::genCloakConfig(credentials, Protocol::OpenVpnOverCloak, &errorCode); + if (container == DockerContainer::OpenVpnOverCloak) { + QJsonObject cloakConfigData = CloakConfigurator::genCloakConfig(credentials, DockerContainer::OpenVpnOverCloak, &errorCode); m_vpnConfiguration.insert(config::key_cloak_config_data, cloakConfigData); } @@ -115,13 +115,13 @@ ErrorCode VpnConnection::createVpnConfiguration(const ServerCredentials &credent return ErrorCode::NoError; } -ErrorCode VpnConnection::connectToVpn(const ServerCredentials &credentials, Protocol protocol) +ErrorCode VpnConnection::connectToVpn(const ServerCredentials &credentials, DockerContainer container) { qDebug() << "connectToVpn, CustomRouting is" << m_settings.customRouting(); // qDebug() << "Cred" << m_settings.serverCredentials().hostName << // m_settings.serverCredentials().password; //protocol = Protocol::ShadowSocks; - protocol = Protocol::OpenVpnOverCloak; + container = DockerContainer::OpenVpnOverCloak; // TODO: Try protocols one by one in case of Protocol::Any // TODO: Implement some behavior in case if connection not stable @@ -138,8 +138,8 @@ ErrorCode VpnConnection::connectToVpn(const ServerCredentials &credentials, Prot //qApp->processEvents(); - if (protocol == Protocol::Any || protocol == Protocol::OpenVpn) { - ErrorCode e = createVpnConfiguration(credentials, Protocol::OpenVpn); + if (container == DockerContainer::None || container == DockerContainer::OpenVpn) { + ErrorCode e = createVpnConfiguration(credentials, DockerContainer::OpenVpn); if (e) { emit connectionStateChanged(VpnProtocol::ConnectionState::Error); return e; @@ -152,8 +152,8 @@ ErrorCode VpnConnection::connectToVpn(const ServerCredentials &credentials, Prot return e; } } - else if (protocol == Protocol::ShadowSocksOverOpenVpn) { - ErrorCode e = createVpnConfiguration(credentials, Protocol::ShadowSocksOverOpenVpn); + else if (container == DockerContainer::ShadowSocksOverOpenVpn) { + ErrorCode e = createVpnConfiguration(credentials, DockerContainer::ShadowSocksOverOpenVpn); if (e) { emit connectionStateChanged(VpnProtocol::ConnectionState::Error); return e; @@ -166,8 +166,8 @@ ErrorCode VpnConnection::connectToVpn(const ServerCredentials &credentials, Prot return e; } } - else if (protocol == Protocol::OpenVpnOverCloak) { - ErrorCode e = createVpnConfiguration(credentials, Protocol::OpenVpnOverCloak); + else if (container == DockerContainer::OpenVpnOverCloak) { + ErrorCode e = createVpnConfiguration(credentials, DockerContainer::OpenVpnOverCloak); if (e) { emit connectionStateChanged(VpnProtocol::ConnectionState::Error); return e; diff --git a/client/vpnconnection.h b/client/vpnconnection.h index 2b03cdb5..9d7d5c94 100644 --- a/client/vpnconnection.h +++ b/client/vpnconnection.h @@ -24,9 +24,9 @@ public: static QString bytesPerSecToText(quint64 bytes); ErrorCode lastError() const; - ErrorCode createVpnConfiguration(const ServerCredentials &credentials, Protocol protocol); + ErrorCode createVpnConfiguration(const ServerCredentials &credentials, DockerContainer container); - ErrorCode connectToVpn(const ServerCredentials &credentials, Protocol protocol = Protocol::Any); + ErrorCode connectToVpn(const ServerCredentials &credentials, DockerContainer container = DockerContainer::None); void disconnectFromVpn(); bool isConnected() const;