From 74da74f217e6488729a007221190a99d08ebef01 Mon Sep 17 00:00:00 2001 From: Restia-Ashbell <107416976+Restia-Ashbell@users.noreply.github.com> Date: Wed, 11 Sep 2024 23:49:25 +0800 Subject: [PATCH] fix: correct Tun Stack settings to match actual behavior --- db/ConfigBuilder.cpp | 2 +- fmt/Preset.hpp | 2 +- main/NekoGui.cpp | 2 +- main/NekoGui_DataStore.hpp | 2 +- ui/dialog_vpn_settings.cpp | 6 ++++-- ui/dialog_vpn_settings.ui | 18 +++--------------- 6 files changed, 11 insertions(+), 21 deletions(-) diff --git a/db/ConfigBuilder.cpp b/db/ConfigBuilder.cpp index 396026f..8db5542 100644 --- a/db/ConfigBuilder.cpp +++ b/db/ConfigBuilder.cpp @@ -486,7 +486,7 @@ namespace NekoGui { inboundObj["auto_route"] = true; inboundObj["endpoint_independent_nat"] = true; inboundObj["mtu"] = dataStore->vpn_mtu; - inboundObj["stack"] = Preset::SingBox::VpnImplementation.value(dataStore->vpn_implementation); + inboundObj["stack"] = dataStore->vpn_implementation; inboundObj["strict_route"] = dataStore->vpn_strict_route; inboundObj["gso"] = dataStore->enable_gso; inboundObj["auto_redirect"] = dataStore->auto_redirect; diff --git a/fmt/Preset.hpp b/fmt/Preset.hpp index ea92d94..9650215 100644 --- a/fmt/Preset.hpp +++ b/fmt/Preset.hpp @@ -2,7 +2,7 @@ namespace Preset { namespace SingBox { - inline QStringList VpnImplementation = {"gvisor", "system", "mixed"}; + inline QStringList VpnImplementation = {"mixed", "system", "gvisor"}; inline QStringList DomainStrategy = {"", "ipv4_only", "ipv6_only", "prefer_ipv4", "prefer_ipv6"}; inline QStringList UtlsFingerPrint = {"", "chrome", "firefox", "edge", "safari", "360", "qq", "ios", "android", "random", "randomized", "chrome_psk", "chrome_psk_shuffle", "chrome_padding_psk_shuffle", "chrome_pq", "chrome_pq_psk"}; inline QStringList ShadowsocksMethods = {"2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "none", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "rc4-md5", "chacha20-ietf", "xchacha20"}; diff --git a/main/NekoGui.cpp b/main/NekoGui.cpp index cd63b84..2b69e7c 100644 --- a/main/NekoGui.cpp +++ b/main/NekoGui.cpp @@ -271,7 +271,7 @@ namespace NekoGui { _add(new configItem("active_routing", &active_routing, itemType::string)); _add(new configItem("mw_size", &mw_size, itemType::string)); _add(new configItem("disable_traffic_stats", &disable_traffic_stats, itemType::boolean)); - _add(new configItem("vpn_impl", &vpn_implementation, itemType::integer)); + _add(new configItem("vpn_impl", &vpn_implementation, itemType::string)); _add(new configItem("vpn_mtu", &vpn_mtu, itemType::integer)); _add(new configItem("vpn_ipv6", &vpn_ipv6, itemType::boolean)); _add(new configItem("vpn_strict_route", &vpn_strict_route, itemType::boolean)); diff --git a/main/NekoGui_DataStore.hpp b/main/NekoGui_DataStore.hpp index 0cd1a42..ddd506b 100644 --- a/main/NekoGui_DataStore.hpp +++ b/main/NekoGui_DataStore.hpp @@ -123,7 +123,7 @@ namespace NekoGui { bool fake_dns = false; bool enable_gso = false; bool auto_redirect = false; - int vpn_implementation = 0; + QString vpn_implementation; int vpn_mtu = 9000; bool vpn_ipv6 = false; bool vpn_strict_route = false; diff --git a/ui/dialog_vpn_settings.cpp b/ui/dialog_vpn_settings.cpp index bdac3a3..bc2992f 100644 --- a/ui/dialog_vpn_settings.cpp +++ b/ui/dialog_vpn_settings.cpp @@ -1,6 +1,7 @@ #include "dialog_vpn_settings.h" #include "ui_dialog_vpn_settings.h" +#include "fmt/Preset.hpp" #include "main/GuiUtils.hpp" #include "main/NekoGui.hpp" #include "ui/mainwindow_interface.h" @@ -11,7 +12,8 @@ DialogVPNSettings::DialogVPNSettings(QWidget *parent) : QDialog(parent), ui(new ui->setupUi(this); ADD_ASTERISK(this); - ui->vpn_implementation->setCurrentIndex(NekoGui::dataStore->vpn_implementation); + ui->vpn_implementation->addItems(Preset::SingBox::VpnImplementation); + ui->vpn_implementation->setCurrentText(NekoGui::dataStore->vpn_implementation); ui->vpn_mtu->setCurrentText(Int2String(NekoGui::dataStore->vpn_mtu)); ui->vpn_ipv6->setChecked(NekoGui::dataStore->vpn_ipv6); ui->gso_enable->setChecked(NekoGui::dataStore->enable_gso); @@ -32,7 +34,7 @@ void DialogVPNSettings::accept() { // auto mtu = ui->vpn_mtu->currentText().toInt(); if (mtu > 10000 || mtu < 1000) mtu = 9000; - NekoGui::dataStore->vpn_implementation = ui->vpn_implementation->currentIndex(); + NekoGui::dataStore->vpn_implementation = ui->vpn_implementation->currentText(); NekoGui::dataStore->vpn_mtu = mtu; NekoGui::dataStore->vpn_ipv6 = ui->vpn_ipv6->isChecked(); NekoGui::dataStore->vpn_strict_route = ui->strict_route->isChecked(); diff --git a/ui/dialog_vpn_settings.ui b/ui/dialog_vpn_settings.ui index 516c919..cd6321e 100644 --- a/ui/dialog_vpn_settings.ui +++ b/ui/dialog_vpn_settings.ui @@ -38,21 +38,9 @@ - - - Mixed - - - - - gVisor - - - - - System - - + + false +