diff --git a/client/containers/containers_defs.cpp b/client/containers/containers_defs.cpp index 22048f0d..91d4b067 100644 --- a/client/containers/containers_defs.cpp +++ b/client/containers/containers_defs.cpp @@ -286,8 +286,8 @@ bool ContainerProps::isSupportedByCurrentPlatform(DockerContainer c) case DockerContainer::OpenVpn: return true; case DockerContainer::Awg: return true; case DockerContainer::Xray: return true; - case DockerContainer::Cloak: - return true; + case DockerContainer::Cloak: return true; + case DockerContainer::SSXray: return true; // case DockerContainer::ShadowSocks: return true; default: return false; } diff --git a/client/platforms/ios/ios_controller.h b/client/platforms/ios/ios_controller.h index 8e13eaa9..85580769 100644 --- a/client/platforms/ios/ios_controller.h +++ b/client/platforms/ios/ios_controller.h @@ -73,6 +73,7 @@ private: bool setupWireGuard(); bool setupAwg(); bool setupXray(); + bool setupSSXray(); bool startOpenVPN(const QString &config); bool startWireGuard(const QString &jsonConfig); diff --git a/client/platforms/ios/ios_controller.mm b/client/platforms/ios/ios_controller.mm index a2819c6c..b335e098 100644 --- a/client/platforms/ios/ios_controller.mm +++ b/client/platforms/ios/ios_controller.mm @@ -219,6 +219,9 @@ bool IosController::connectVpn(amnezia::Proto proto, const QJsonObject& configur if (proto == amnezia::Proto::Xray) { return setupXray(); } + if (proto == amnezia::Proto::SSXray) { + return setupSSXray(); + } return false; } @@ -513,6 +516,15 @@ bool IosController::setupXray() return startXray(xrayConfigStr); } +bool IosController::setupSSXray() +{ + QJsonObject config = m_rawConfig[ProtocolProps::key_proto_config_data(amnezia::Proto::SSXray)].toObject(); + QJsonDocument ssXrayConfigDoc(config); + QString ssXrayConfigStr(ssXrayConfigDoc.toJson(QJsonDocument::Compact)); + + return startXray(ssXrayConfigStr); +} + bool IosController::setupAwg() { QJsonObject config = m_rawConfig[ProtocolProps::key_proto_config_data(amnezia::Proto::Awg)].toObject();