diff --git a/client/configurators/openvpn_configurator.cpp b/client/configurators/openvpn_configurator.cpp index cf58e951..722cfc59 100644 --- a/client/configurators/openvpn_configurator.cpp +++ b/client/configurators/openvpn_configurator.cpp @@ -100,8 +100,11 @@ QString OpenVpnConfigurator::genOpenVpnConfig(const ServerCredentials &credentia return QJsonDocument(jConfig).toJson(); } -QString OpenVpnConfigurator::processConfigWithLocalSettings(QString config) +QString OpenVpnConfigurator::processConfigWithLocalSettings(QString jsonConfig) { + QJsonObject json = QJsonDocument::fromJson(jsonConfig.toUtf8()).object(); + QString config = json[config_key::config].toString(); + if (m_settings().routeMode() != Settings::VpnAllSites) { config.replace("redirect-gateway def1 bypass-dhcp", ""); } @@ -111,7 +114,7 @@ QString OpenVpnConfigurator::processConfigWithLocalSettings(QString config) } } -#if defined Q_OS_MAC || defined(Q_OS_LINUX) +#if (defined Q_OS_MAC || defined(Q_OS_LINUX)) && !defined(Q_OS_ANDROID) config.replace("block-outside-dns", ""); QString dnsConf = QString( "\nscript-security 2\n" @@ -122,20 +125,25 @@ QString OpenVpnConfigurator::processConfigWithLocalSettings(QString config) config.append(dnsConf); #endif - return config; + json[config_key::config] = config; + return QJsonDocument(json).toJson(); } -QString OpenVpnConfigurator::processConfigWithExportSettings(QString config) +QString OpenVpnConfigurator::processConfigWithExportSettings(QString jsonConfig) { + QJsonObject json = QJsonDocument::fromJson(jsonConfig.toUtf8()).object(); + QString config = json[config_key::config].toString(); + if(!config.contains("redirect-gateway def1 bypass-dhcp")) { config.append("redirect-gateway def1 bypass-dhcp\n"); } -#if defined Q_OS_MAC || defined(Q_OS_LINUX) +#if (defined Q_OS_MAC || defined(Q_OS_LINUX)) && !defined(Q_OS_ANDROID) config.replace("block-outside-dns", ""); #endif - return config; + json[config_key::config] = config; + return QJsonDocument(json).toJson(); } ErrorCode OpenVpnConfigurator::signCert(DockerContainer container, diff --git a/client/configurators/openvpn_configurator.h b/client/configurators/openvpn_configurator.h index 807ac6a0..99c4efa6 100644 --- a/client/configurators/openvpn_configurator.h +++ b/client/configurators/openvpn_configurator.h @@ -25,8 +25,8 @@ public: static QString genOpenVpnConfig(const ServerCredentials &credentials, DockerContainer container, const QJsonObject &containerConfig, ErrorCode *errorCode = nullptr); - static QString processConfigWithLocalSettings(QString config); - static QString processConfigWithExportSettings(QString config); + static QString processConfigWithLocalSettings(QString jsonConfig); + static QString processConfigWithExportSettings(QString jsonConfig); static ErrorCode signCert(DockerContainer container, const ServerCredentials &credentials, QString clientId);