diff --git a/client/configurators/cloak_configurator.cpp b/client/configurators/cloak_configurator.cpp index 6206d141..09f50140 100644 --- a/client/configurators/cloak_configurator.cpp +++ b/client/configurators/cloak_configurator.cpp @@ -42,11 +42,8 @@ QString CloakConfigurator::genCloakConfig(const ServerCredentials &credentials, config.insert("NumConn", 4); config.insert("BrowserSig", "chrome"); config.insert("StreamTimeout", 300); - - // transfer params to protocol runner - config.insert(config_key::transport_proto, "tcp"); - config.insert(config_key::remote, credentials.hostName); - config.insert(config_key::port, "$CLOAK_SERVER_PORT"); + config.insert("RemoteHost", credentials.hostName); + config.insert("RemotePort", "$CLOAK_SERVER_PORT"); QString textCfg = serverController.replaceVars(QJsonDocument(config).toJson(), serverController.genVarsForScript(credentials, container, containerConfig)); diff --git a/client/protocols/openvpnovercloakprotocol.cpp b/client/protocols/openvpnovercloakprotocol.cpp index 55939895..c40999f6 100644 --- a/client/protocols/openvpnovercloakprotocol.cpp +++ b/client/protocols/openvpnovercloakprotocol.cpp @@ -18,10 +18,7 @@ OpenVpnOverCloakProtocol::~OpenVpnOverCloakProtocol() { qDebug() << "OpenVpnOverCloakProtocol::~OpenVpnOverCloakProtocol"; OpenVpnOverCloakProtocol::stop(); - QThread::msleep(200); -#ifndef Q_OS_IOS m_ckProcess.close(); -#endif } ErrorCode OpenVpnOverCloakProtocol::start() @@ -30,11 +27,17 @@ ErrorCode OpenVpnOverCloakProtocol::start() setLastError(ErrorCode::CloakExecutableMissing); return lastError(); } -#ifndef Q_OS_IOS + if (Utils::processIsRunning(Utils::executable("ck-client", false))) { Utils::killProcessByName(Utils::executable("ck-client", false)); } + // workaround for desktop releases >= 3.0.7 + if (!m_cloakConfig.contains("RemoteHost") && m_cloakConfig.contains(config_key::remote)) { + m_cloakConfig["RemoteHost"] = m_cloakConfig.value(config_key::remote); + m_cloakConfig["RemotePort"] = m_cloakConfig.value(config_key::port); + } + #ifdef QT_DEBUG m_cloakCfgFile.setAutoRemove(false); #endif @@ -43,15 +46,8 @@ ErrorCode OpenVpnOverCloakProtocol::start() m_cloakCfgFile.close(); QStringList args = QStringList() << "-c" << m_cloakCfgFile.fileName() - << "-s" << m_cloakConfig.value(config_key::remote).toString() - << "-p" << m_cloakConfig.value(config_key::port).toString(amnezia::protocols::cloak::defaultPort) << "-l" << amnezia::protocols::openvpn::defaultPort; - ProtocolEnumNS::TransportProto tp = ProtocolProps::transportProtoFromString(m_cloakConfig.value(config_key::transport_proto).toString()); - if (tp == ProtocolEnumNS::TransportProto::Udp) { - args << "-u"; - } - qDebug().noquote() << "OpenVpnOverCloakProtocol::start()" << cloakExecPath() << args.join(" "); @@ -86,7 +82,6 @@ ErrorCode OpenVpnOverCloakProtocol::start() return OpenVpnProtocol::start(); } else return ErrorCode::CloakExecutableMissing; -#endif } void OpenVpnOverCloakProtocol::stop() @@ -100,9 +95,12 @@ void OpenVpnOverCloakProtocol::stop() Utils::signalCtrl(m_ckProcess.processId(), CTRL_C_EVENT); #endif -#ifndef Q_OS_IOS m_ckProcess.terminate(); -#endif + + if (Utils::processIsRunning(Utils::executable("ck-client", false))) { + QThread::msleep(1000); + Utils::killProcessByName(Utils::executable("ck-client", false)); + } } QString OpenVpnOverCloakProtocol::cloakExecPath() diff --git a/client/utilities.cpp b/client/utilities.cpp index a83b3077..41fde2f6 100644 --- a/client/utilities.cpp +++ b/client/utilities.cpp @@ -83,7 +83,7 @@ bool Utils::processIsRunning(const QString& fileName) QProcess process; process.setReadChannel(QProcess::StandardOutput); process.setProcessChannelMode(QProcess::MergedChannels); - process.start(QString("wmic.exe /OUTPUT:STDOUT PROCESS get %1").arg("Caption")); + process.start("wmic.exe", QStringList() << "/OUTPUT:STDOUT" << "PROCESS" << "get" << "Caption"); process.waitForStarted(); process.waitForFinished(); QString processData(process.readAll()); @@ -165,9 +165,8 @@ bool Utils::checkIpSubnetFormat(const QString &ip) void Utils::killProcessByName(const QString &name) { qDebug().noquote() << "Kill process" << name; - qDebug() << "Hello"; #ifdef Q_OS_WIN - QProcess::execute(QString("taskkill /im %1 /f").arg(name)); + QProcess::execute("taskkill", QStringList() << "/IM" << name << "/F"); #elif defined Q_OS_IOS return; #else