From ef8fb89eb35c99351d77cf96247a48421955e69d Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Mon, 7 Apr 2025 23:30:11 +0800 Subject: [PATCH 1/2] feature: warning when importing openvpn configurations --- client/ui/controllers/importController.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/ui/controllers/importController.cpp b/client/ui/controllers/importController.cpp index 4ca12e21..622d8b3a 100644 --- a/client/ui/controllers/importController.cpp +++ b/client/ui/controllers/importController.cpp @@ -56,7 +56,7 @@ namespace } else if ((config.contains(xrayConfigPatternInbound)) && (config.contains(xrayConfigPatternOutbound))) { return ConfigTypes::Xray; } else if (config.contains(openVpnConfigPatternCli) - && (config.contains(openVpnConfigPatternDriver1) || config.contains(openVpnConfigPatternDriver2))) { + && (config.contains(openVpnConfigPatternDriver1) || config.contains(openVpnConfigPatternDriver2))) { return ConfigTypes::OpenVpn; } return ConfigTypes::Invalid; @@ -658,6 +658,7 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig) if ((containerName == ContainerProps::containerToString(DockerContainer::OpenVpn)) || (containerName == ContainerProps::containerToString(DockerContainer::Cloak)) || (containerName == ContainerProps::containerToString(DockerContainer::ShadowSocks))) { + QString protocolConfig = containerConfig[ProtocolProps::protoToString(Proto::OpenVpn)].toObject()[config_key::last_config].toString(); QString protocolConfigJson = QJsonDocument::fromJson(protocolConfig.toUtf8()).object()[config_key::config].toString(); @@ -679,8 +680,11 @@ void ImportController::checkForMaliciousStrings(const QJsonObject &serverConfig) } } + m_maliciousWarningText = tr("This configuration contains an OpenVPN setup. OpenVPN configurations can include malicious " + "scripts, so only add it if you fully trust the provider of this config. "); + if (maliciousStrings.size() >= dangerousTagsMaxCount) { - m_maliciousWarningText = tr("In the imported configuration, potentially dangerous lines were found:"); + m_maliciousWarningText.push_back(tr("
In the imported configuration, potentially dangerous lines were found:")); for (const auto &string : maliciousStrings) { m_maliciousWarningText.push_back(QString("
%1").arg(string)); } From 27cb17c640c42a59d8846cd2f44b7e5615e2db91 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Mon, 7 Apr 2025 23:35:24 +0800 Subject: [PATCH 2/2] chore: clear warning text before extract --- client/ui/controllers/importController.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/ui/controllers/importController.cpp b/client/ui/controllers/importController.cpp index 622d8b3a..be66d8f3 100644 --- a/client/ui/controllers/importController.cpp +++ b/client/ui/controllers/importController.cpp @@ -94,6 +94,8 @@ bool ImportController::extractConfigFromFile(const QString &fileName) bool ImportController::extractConfigFromData(QString data) { + m_maliciousWarningText.clear(); + QString config = data; QString prefix; QString errormsg;