Merge pull request #241 from amnezia-vpn/bugfix/cloak_for_desktops_fix

Fixes for Cloak proto
This commit is contained in:
pokamest 2023-05-23 08:00:15 -07:00 committed by GitHub
commit f722576bf2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 22 deletions

View file

@ -42,11 +42,8 @@ QString CloakConfigurator::genCloakConfig(const ServerCredentials &credentials,
config.insert("NumConn", 4); config.insert("NumConn", 4);
config.insert("BrowserSig", "chrome"); config.insert("BrowserSig", "chrome");
config.insert("StreamTimeout", 300); config.insert("StreamTimeout", 300);
config.insert("RemoteHost", credentials.hostName);
// transfer params to protocol runner config.insert("RemotePort", "$CLOAK_SERVER_PORT");
config.insert(config_key::transport_proto, "tcp");
config.insert(config_key::remote, credentials.hostName);
config.insert(config_key::port, "$CLOAK_SERVER_PORT");
QString textCfg = serverController.replaceVars(QJsonDocument(config).toJson(), QString textCfg = serverController.replaceVars(QJsonDocument(config).toJson(),
serverController.genVarsForScript(credentials, container, containerConfig)); serverController.genVarsForScript(credentials, container, containerConfig));

View file

@ -18,10 +18,7 @@ OpenVpnOverCloakProtocol::~OpenVpnOverCloakProtocol()
{ {
qDebug() << "OpenVpnOverCloakProtocol::~OpenVpnOverCloakProtocol"; qDebug() << "OpenVpnOverCloakProtocol::~OpenVpnOverCloakProtocol";
OpenVpnOverCloakProtocol::stop(); OpenVpnOverCloakProtocol::stop();
QThread::msleep(200);
#ifndef Q_OS_IOS
m_ckProcess.close(); m_ckProcess.close();
#endif
} }
ErrorCode OpenVpnOverCloakProtocol::start() ErrorCode OpenVpnOverCloakProtocol::start()
@ -30,11 +27,17 @@ ErrorCode OpenVpnOverCloakProtocol::start()
setLastError(ErrorCode::CloakExecutableMissing); setLastError(ErrorCode::CloakExecutableMissing);
return lastError(); return lastError();
} }
#ifndef Q_OS_IOS
if (Utils::processIsRunning(Utils::executable("ck-client", false))) { if (Utils::processIsRunning(Utils::executable("ck-client", false))) {
Utils::killProcessByName(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 #ifdef QT_DEBUG
m_cloakCfgFile.setAutoRemove(false); m_cloakCfgFile.setAutoRemove(false);
#endif #endif
@ -43,15 +46,8 @@ ErrorCode OpenVpnOverCloakProtocol::start()
m_cloakCfgFile.close(); m_cloakCfgFile.close();
QStringList args = QStringList() << "-c" << m_cloakCfgFile.fileName() 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; << "-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()" qDebug().noquote() << "OpenVpnOverCloakProtocol::start()"
<< cloakExecPath() << args.join(" "); << cloakExecPath() << args.join(" ");
@ -86,7 +82,6 @@ ErrorCode OpenVpnOverCloakProtocol::start()
return OpenVpnProtocol::start(); return OpenVpnProtocol::start();
} }
else return ErrorCode::CloakExecutableMissing; else return ErrorCode::CloakExecutableMissing;
#endif
} }
void OpenVpnOverCloakProtocol::stop() void OpenVpnOverCloakProtocol::stop()
@ -100,9 +95,12 @@ void OpenVpnOverCloakProtocol::stop()
Utils::signalCtrl(m_ckProcess.processId(), CTRL_C_EVENT); Utils::signalCtrl(m_ckProcess.processId(), CTRL_C_EVENT);
#endif #endif
#ifndef Q_OS_IOS
m_ckProcess.terminate(); 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() QString OpenVpnOverCloakProtocol::cloakExecPath()

View file

@ -83,7 +83,7 @@ bool Utils::processIsRunning(const QString& fileName)
QProcess process; QProcess process;
process.setReadChannel(QProcess::StandardOutput); process.setReadChannel(QProcess::StandardOutput);
process.setProcessChannelMode(QProcess::MergedChannels); 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.waitForStarted();
process.waitForFinished(); process.waitForFinished();
QString processData(process.readAll()); QString processData(process.readAll());
@ -165,9 +165,8 @@ bool Utils::checkIpSubnetFormat(const QString &ip)
void Utils::killProcessByName(const QString &name) void Utils::killProcessByName(const QString &name)
{ {
qDebug().noquote() << "Kill process" << name; qDebug().noquote() << "Kill process" << name;
qDebug() << "Hello";
#ifdef Q_OS_WIN #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 #elif defined Q_OS_IOS
return; return;
#else #else