mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-23 02:00:20 +07:00
Fix AmneziaWG settings
This commit is contained in:
@@ -281,6 +281,15 @@ Proto ContainerProps::defaultProtocol(DockerContainer c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ContainerProps::containerTypeToProtocolString(DockerContainer c)
|
||||||
|
{
|
||||||
|
if (c == DockerContainer::None)
|
||||||
|
return "none";
|
||||||
|
|
||||||
|
Proto p = defaultProtocol(c);
|
||||||
|
return ProtocolProps::protoToString(p);
|
||||||
|
}
|
||||||
|
|
||||||
bool ContainerProps::isSupportedByCurrentPlatform(DockerContainer c)
|
bool ContainerProps::isSupportedByCurrentPlatform(DockerContainer c)
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_WINDOWS
|
#ifdef Q_OS_WINDOWS
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ namespace amnezia
|
|||||||
Q_INVOKABLE static amnezia::DockerContainer containerFromString(const QString &container);
|
Q_INVOKABLE static amnezia::DockerContainer containerFromString(const QString &container);
|
||||||
Q_INVOKABLE static QString containerToString(amnezia::DockerContainer container);
|
Q_INVOKABLE static QString containerToString(amnezia::DockerContainer container);
|
||||||
Q_INVOKABLE static QString containerTypeToString(amnezia::DockerContainer c);
|
Q_INVOKABLE static QString containerTypeToString(amnezia::DockerContainer c);
|
||||||
|
Q_INVOKABLE static QString containerTypeToProtocolString(amnezia::DockerContainer c);
|
||||||
|
|
||||||
Q_INVOKABLE static QList<amnezia::DockerContainer> allContainers();
|
Q_INVOKABLE static QList<amnezia::DockerContainer> allContainers();
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ namespace
|
|||||||
return ErrorCode::ApiConfigEmptyError;
|
return ErrorCode::ApiConfigEmptyError;
|
||||||
}
|
}
|
||||||
auto container = containers.at(0).toObject();
|
auto container = containers.at(0).toObject();
|
||||||
QString containerName = ContainerProps::containerTypeToString(DockerContainer::Awg);
|
QString containerName = ContainerProps::containerTypeToProtocolString(DockerContainer::Awg);
|
||||||
auto serverProtocolConfig = container.value(containerName).toObject();
|
auto serverProtocolConfig = container.value(containerName).toObject();
|
||||||
auto clientProtocolConfig =
|
auto clientProtocolConfig =
|
||||||
QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object();
|
QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object();
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ void ImportController::processNativeWireGuardConfig()
|
|||||||
auto containers = m_config.value(config_key::containers).toArray();
|
auto containers = m_config.value(config_key::containers).toArray();
|
||||||
if (!containers.isEmpty()) {
|
if (!containers.isEmpty()) {
|
||||||
auto container = containers.at(0).toObject();
|
auto container = containers.at(0).toObject();
|
||||||
auto serverProtocolConfig = container.value(ContainerProps::containerTypeToString(DockerContainer::WireGuard)).toObject();
|
auto serverProtocolConfig = container.value(ContainerProps::containerTypeToProtocolString(DockerContainer::WireGuard)).toObject();
|
||||||
auto clientProtocolConfig = QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object();
|
auto clientProtocolConfig = QJsonDocument::fromJson(serverProtocolConfig.value(config_key::last_config).toString().toUtf8()).object();
|
||||||
|
|
||||||
QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5));
|
QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(2, 5));
|
||||||
@@ -728,7 +728,7 @@ void ImportController::processAmneziaConfig(QJsonObject &config)
|
|||||||
auto container = containers.at(i).toObject();
|
auto container = containers.at(i).toObject();
|
||||||
auto dockerContainer = ContainerProps::containerFromString(container.value(config_key::container).toString());
|
auto dockerContainer = ContainerProps::containerFromString(container.value(config_key::container).toString());
|
||||||
if (dockerContainer == DockerContainer::Awg || dockerContainer == DockerContainer::AwgLegacy || dockerContainer == DockerContainer::WireGuard) {
|
if (dockerContainer == DockerContainer::Awg || dockerContainer == DockerContainer::AwgLegacy || dockerContainer == DockerContainer::WireGuard) {
|
||||||
auto containerConfig = container.value(ContainerProps::containerTypeToString(dockerContainer)).toObject();
|
auto containerConfig = container.value(ContainerProps::containerTypeToProtocolString(dockerContainer)).toObject();
|
||||||
auto protocolConfig = containerConfig.value(config_key::last_config).toString();
|
auto protocolConfig = containerConfig.value(config_key::last_config).toString();
|
||||||
if (protocolConfig.isEmpty()) {
|
if (protocolConfig.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
@@ -740,7 +740,7 @@ void ImportController::processAmneziaConfig(QJsonObject &config)
|
|||||||
|
|
||||||
containerConfig[config_key::last_config] = QString(QJsonDocument(jsonConfig).toJson());
|
containerConfig[config_key::last_config] = QString(QJsonDocument(jsonConfig).toJson());
|
||||||
|
|
||||||
container[ContainerProps::containerTypeToString(dockerContainer)] = containerConfig;
|
container[ContainerProps::containerTypeToProtocolString(dockerContainer)] = containerConfig;
|
||||||
containers.replace(i, container);
|
containers.replace(i, container);
|
||||||
config.insert(config_key::containers, containers);
|
config.insert(config_key::containers, containers);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,10 +32,8 @@ QVariant ContainersModel::data(const QModelIndex &index, int role) const
|
|||||||
return m_containers.value(container);
|
return m_containers.value(container);
|
||||||
}
|
}
|
||||||
case IsThirdPartyConfigRole: {
|
case IsThirdPartyConfigRole: {
|
||||||
QJsonObject c = m_containers.value(container);
|
QString protocolKey = ContainerProps::containerTypeToProtocolString(container);
|
||||||
auto p = ContainerProps::defaultProtocol(container);
|
return m_containers.value(container).value(protocolKey).toObject().value(config_key::isThirdPartyConfig).toBool();
|
||||||
QString key = ProtocolProps::protoToString(p);
|
|
||||||
return c.value(key).toObject().value(config_key::isThirdPartyConfig).toBool();
|
|
||||||
}
|
}
|
||||||
case ServiceTypeRole: return ContainerProps::containerService(container);
|
case ServiceTypeRole: return ContainerProps::containerService(container);
|
||||||
case DockerContainerRole: return container;
|
case DockerContainerRole: return container;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ QVariant ProtocolsModel::data(const QModelIndex &index, int role) const
|
|||||||
return static_cast<int>(clientProtocolPage(ProtocolProps::protoFromString(m_content.keys().at(index.row()))));
|
return static_cast<int>(clientProtocolPage(ProtocolProps::protoFromString(m_content.keys().at(index.row()))));
|
||||||
case ProtocolIndexRole: return ProtocolProps::protoFromString(m_content.keys().at(index.row()));
|
case ProtocolIndexRole: return ProtocolProps::protoFromString(m_content.keys().at(index.row()));
|
||||||
case RawConfigRole: {
|
case RawConfigRole: {
|
||||||
auto protocolConfig = m_content.value(ContainerProps::containerTypeToString(m_container)).toObject();
|
auto protocolConfig = m_content.value(ContainerProps::containerTypeToProtocolString(m_container)).toObject();
|
||||||
auto lastConfigJsonDoc =
|
auto lastConfigJsonDoc =
|
||||||
QJsonDocument::fromJson(protocolConfig.value(config_key::last_config).toString().toUtf8());
|
QJsonDocument::fromJson(protocolConfig.value(config_key::last_config).toString().toUtf8());
|
||||||
auto lastConfigJson = lastConfigJsonDoc.object();
|
auto lastConfigJson = lastConfigJsonDoc.object();
|
||||||
@@ -55,7 +55,8 @@ QVariant ProtocolsModel::data(const QModelIndex &index, int role) const
|
|||||||
return rawConfig;
|
return rawConfig;
|
||||||
}
|
}
|
||||||
case IsClientProtocolExistsRole: {
|
case IsClientProtocolExistsRole: {
|
||||||
auto protocolConfig = m_content.value(ContainerProps::containerTypeToString(m_container)).toObject();
|
QString protocolKey = ContainerProps::containerTypeToProtocolString(m_container);
|
||||||
|
auto protocolConfig = m_content.value(protocolKey).toObject();
|
||||||
auto lastConfigJsonDoc =
|
auto lastConfigJsonDoc =
|
||||||
QJsonDocument::fromJson(protocolConfig.value(config_key::last_config).toString().toUtf8());
|
QJsonDocument::fromJson(protocolConfig.value(config_key::last_config).toString().toUtf8());
|
||||||
auto lastConfigJson = lastConfigJsonDoc.object();
|
auto lastConfigJson = lastConfigJsonDoc.object();
|
||||||
|
|||||||
@@ -734,7 +734,7 @@ bool ServersModel::isDefaultServerDefaultContainerHasSplitTunneling()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (defaultContainer == DockerContainer::Awg || defaultContainer == DockerContainer::AwgLegacy || defaultContainer == DockerContainer::WireGuard) {
|
if (defaultContainer == DockerContainer::Awg || defaultContainer == DockerContainer::AwgLegacy || defaultContainer == DockerContainer::WireGuard) {
|
||||||
QJsonObject serverProtocolConfig = container.value(ContainerProps::containerTypeToString(defaultContainer)).toObject();
|
QJsonObject serverProtocolConfig = container.value(ContainerProps::containerTypeToProtocolString(defaultContainer)).toObject();
|
||||||
QString clientProtocolConfigString = serverProtocolConfig.value(config_key::last_config).toString();
|
QString clientProtocolConfigString = serverProtocolConfig.value(config_key::last_config).toString();
|
||||||
QJsonObject clientProtocolConfig = QJsonDocument::fromJson(clientProtocolConfigString.toUtf8()).object();
|
QJsonObject clientProtocolConfig = QJsonDocument::fromJson(clientProtocolConfigString.toUtf8()).object();
|
||||||
return (clientProtocolConfigString.contains("AllowedIPs") && !clientProtocolConfigString.contains("AllowedIPs = 0.0.0.0/0, ::/0"))
|
return (clientProtocolConfigString.contains("AllowedIPs") && !clientProtocolConfigString.contains("AllowedIPs = 0.0.0.0/0, ::/0"))
|
||||||
@@ -742,7 +742,7 @@ bool ServersModel::isDefaultServerDefaultContainerHasSplitTunneling()
|
|||||||
&& !clientProtocolConfig.value(config_key::allowed_ips).toArray().contains("0.0.0.0/0"));
|
&& !clientProtocolConfig.value(config_key::allowed_ips).toArray().contains("0.0.0.0/0"));
|
||||||
} else if (defaultContainer == DockerContainer::Cloak || defaultContainer == DockerContainer::OpenVpn
|
} else if (defaultContainer == DockerContainer::Cloak || defaultContainer == DockerContainer::OpenVpn
|
||||||
|| defaultContainer == DockerContainer::ShadowSocks) {
|
|| defaultContainer == DockerContainer::ShadowSocks) {
|
||||||
auto serverProtocolConfig = container.value(ContainerProps::containerTypeToString(DockerContainer::OpenVpn)).toObject();
|
auto serverProtocolConfig = container.value(ContainerProps::containerTypeToProtocolString(DockerContainer::OpenVpn)).toObject();
|
||||||
QString clientProtocolConfigString = serverProtocolConfig.value(config_key::last_config).toString();
|
QString clientProtocolConfigString = serverProtocolConfig.value(config_key::last_config).toString();
|
||||||
return !clientProtocolConfigString.isEmpty() && !clientProtocolConfigString.contains("redirect-gateway");
|
return !clientProtocolConfigString.isEmpty() && !clientProtocolConfigString.contains("redirect-gateway");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user