WG/AWG Desktop AllowedIP from plain WG config

This commit is contained in:
Mykola Baibuz 2023-10-19 14:50:51 -04:00
parent 32c304dc1b
commit 414a47e2f2
2 changed files with 57 additions and 33 deletions

View file

@ -141,36 +141,63 @@ void LocalSocketController::activate(const QJsonObject &rawConfig) {
QJsonArray jsAllowedIPAddesses; QJsonArray jsAllowedIPAddesses;
if (splitTunnelType == 0 || splitTunnelType == 2) { QJsonArray plainAllowedIP = wgConfig.value(amnezia::config_key::allowed_ips).toArray();
QJsonObject range_ipv4; QJsonArray defaultAllowedIP = QJsonArray::fromStringList(QString("0.0.0.0/0, ::/0").split(","));
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; if (plainAllowedIP != defaultAllowedIP) {
range_ipv6.insert("address", "::"); // Use AllowedIP list from WG config bacouse of higer priority
range_ipv6.insert("range", 0);
range_ipv6.insert("isIpv6", true);
jsAllowedIPAddesses.append(range_ipv6);
}
if (splitTunnelType == 1) { for (auto v : plainAllowedIP) {
for (auto v : splitTunnelSites) { QString ipRange = v.toString();
QString ipRange = v.toString(); qDebug() << "ipRange " << ipRange;
qDebug() << "ipRange " << ipRange; if (ipRange.split('/').size() > 1){
if (ipRange.split('/').size() > 1){ QJsonObject range;
QJsonObject range; range.insert("address", ipRange.split('/')[0]);
range.insert("address", ipRange.split('/')[0]); range.insert("range", atoi(ipRange.split('/')[1].toLocal8Bit()));
range.insert("range", atoi(ipRange.split('/')[1].toLocal8Bit())); range.insert("isIpv6", false);
range.insert("isIpv6", false); jsAllowedIPAddesses.append(range);
jsAllowedIPAddesses.append(range); } else {
} else { QJsonObject range;
QJsonObject range; range.insert("address",ipRange);
range.insert("address",ipRange); range.insert("range", 32);
range.insert("range", 32); range.insert("isIpv6", false);
range.insert("isIpv6", false); jsAllowedIPAddesses.append(range);
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);
}
} }
} }
} }

View file

@ -263,11 +263,8 @@ QJsonObject ImportController::extractWireGuardConfig(const QString &data)
// return QJsonObject(); // return QJsonObject();
// } // }
auto allowedIps = configMap.value("AllowedIPs").split(","); QJsonArray allowedIpsJsonArray = QJsonArray::fromStringList(configMap.value("AllowedIPs").split(","));
QJsonArray allowedIpsJsonArray;
for (const auto &allowedIp : allowedIps) {
allowedIpsJsonArray.append(allowedIp);
}
lastConfig[config_key::allowed_ips] = allowedIpsJsonArray; lastConfig[config_key::allowed_ips] = allowedIpsJsonArray;
QString protocolName = "wireguard"; QString protocolName = "wireguard";