diff --git a/client/mozilla/localsocketcontroller.cpp b/client/mozilla/localsocketcontroller.cpp index b7012dd8..cc1d6688 100644 --- a/client/mozilla/localsocketcontroller.cpp +++ b/client/mozilla/localsocketcontroller.cpp @@ -141,36 +141,63 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) { QJsonArray jsAllowedIPAddesses; - if (splitTunnelType == 0 || splitTunnelType == 2) { - QJsonObject range_ipv4; - range_ipv4.insert("address", "0.0.0.0"); - range_ipv4.insert("range", 0); - range_ipv4.insert("isIpv6", false); - jsAllowedIPAddesses.append(range_ipv4); + QJsonArray plainAllowedIP = wgConfig.value(amnezia::config_key::allowed_ips).toArray(); + QJsonArray defaultAllowedIP = QJsonArray::fromStringList(QString("0.0.0.0/0, ::/0").split(",")); - QJsonObject range_ipv6; - range_ipv6.insert("address", "::"); - range_ipv6.insert("range", 0); - range_ipv6.insert("isIpv6", true); - jsAllowedIPAddesses.append(range_ipv6); - } + if (plainAllowedIP != defaultAllowedIP) { + // Use AllowedIP list from WG config bacouse of higer priority - if (splitTunnelType == 1) { - for (auto v : splitTunnelSites) { - QString ipRange = v.toString(); - qDebug() << "ipRange " << ipRange; - if (ipRange.split('/').size() > 1){ - QJsonObject range; - range.insert("address", ipRange.split('/')[0]); - range.insert("range", atoi(ipRange.split('/')[1].toLocal8Bit())); - range.insert("isIpv6", false); - jsAllowedIPAddesses.append(range); - } else { - QJsonObject range; - range.insert("address",ipRange); - range.insert("range", 32); - range.insert("isIpv6", false); - jsAllowedIPAddesses.append(range); + for (auto v : plainAllowedIP) { + QString ipRange = v.toString(); + qDebug() << "ipRange " << ipRange; + if (ipRange.split('/').size() > 1){ + QJsonObject range; + range.insert("address", ipRange.split('/')[0]); + range.insert("range", atoi(ipRange.split('/')[1].toLocal8Bit())); + range.insert("isIpv6", false); + jsAllowedIPAddesses.append(range); + } else { + QJsonObject range; + range.insert("address",ipRange); + range.insert("range", 32); + range.insert("isIpv6", false); + jsAllowedIPAddesses.append(range); + } + } + } else { + + // Use APP split tunnel + if (splitTunnelType == 0 || splitTunnelType == 2) { + QJsonObject range_ipv4; + range_ipv4.insert("address", "0.0.0.0"); + range_ipv4.insert("range", 0); + range_ipv4.insert("isIpv6", false); + jsAllowedIPAddesses.append(range_ipv4); + + QJsonObject range_ipv6; + range_ipv6.insert("address", "::"); + range_ipv6.insert("range", 0); + range_ipv6.insert("isIpv6", true); + jsAllowedIPAddesses.append(range_ipv6); + } + + if (splitTunnelType == 1) { + for (auto v : splitTunnelSites) { + QString ipRange = v.toString(); + qDebug() << "ipRange " << ipRange; + if (ipRange.split('/').size() > 1){ + QJsonObject range; + range.insert("address", ipRange.split('/')[0]); + range.insert("range", atoi(ipRange.split('/')[1].toLocal8Bit())); + range.insert("isIpv6", false); + jsAllowedIPAddesses.append(range); + } else { + QJsonObject range; + range.insert("address",ipRange); + range.insert("range", 32); + range.insert("isIpv6", false); + jsAllowedIPAddesses.append(range); + } } } } diff --git a/client/ui/controllers/importController.cpp b/client/ui/controllers/importController.cpp index 044ddb37..de8c003e 100644 --- a/client/ui/controllers/importController.cpp +++ b/client/ui/controllers/importController.cpp @@ -263,11 +263,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data) // return QJsonObject(); // } - auto allowedIps = configMap.value("AllowedIPs").split(","); - QJsonArray allowedIpsJsonArray; - for (const auto &allowedIp : allowedIps) { - allowedIpsJsonArray.append(allowedIp); - } + QJsonArray allowedIpsJsonArray = QJsonArray::fromStringList(configMap.value("AllowedIPs").split(",")); + lastConfig[config_key::allowed_ips] = allowedIpsJsonArray; QString protocolName = "wireguard";