diff --git a/db/ConfigBuilder.cpp b/db/ConfigBuilder.cpp index 5fe3a49..97daf74 100644 --- a/db/ConfigBuilder.cpp +++ b/db/ConfigBuilder.cpp @@ -642,7 +642,7 @@ namespace NekoGui { if (!status->forTest && dataStore->core_box_clash_api > 0) { QJsonObject clash_api = { - {"external_controller", "127.0.0.1:" + Int2String(dataStore->core_box_clash_api)}, + {"external_controller", NekoGui::dataStore->core_box_clash_listen_addr + ":" + Int2String(dataStore->core_box_clash_api)}, {"secret", dataStore->core_box_clash_api_secret}, {"external_ui", "dashboard"}, }; diff --git a/main/NekoGui.cpp b/main/NekoGui.cpp index 922019c..d3dc499 100644 --- a/main/NekoGui.cpp +++ b/main/NekoGui.cpp @@ -296,6 +296,7 @@ namespace NekoGui { _add(new configItem("splitter_state", &splitter_state, itemType::string)); _add(new configItem("utlsFingerprint", &utlsFingerprint, itemType::string)); _add(new configItem("core_box_clash_api", &core_box_clash_api, itemType::integer)); + _add(new configItem("core_box_clash_listen_addr", &core_box_clash_listen_addr, itemType::string)); _add(new configItem("core_box_clash_api_secret", &core_box_clash_api_secret, itemType::string)); _add(new configItem("core_box_underlying_dns", &core_box_underlying_dns, itemType::string)); _add(new configItem("core_ray_direct_dns", &core_ray_direct_dns, itemType::boolean)); diff --git a/main/NekoGui_DataStore.hpp b/main/NekoGui_DataStore.hpp index 4c91102..7f34fd7 100644 --- a/main/NekoGui_DataStore.hpp +++ b/main/NekoGui_DataStore.hpp @@ -162,6 +162,7 @@ namespace NekoGui { // Core int core_box_clash_api = -9090; + QString core_box_clash_listen_addr = "127.0.0.1"; QString core_box_clash_api_secret = ""; QString core_box_underlying_dns = ""; bool core_ray_direct_dns = false; diff --git a/ui/dialog_basic_settings.cpp b/ui/dialog_basic_settings.cpp index fc6c2f9..56388b4 100644 --- a/ui/dialog_basic_settings.cpp +++ b/ui/dialog_basic_settings.cpp @@ -231,7 +231,7 @@ DialogBasicSettings::DialogBasicSettings(QWidget *parent) // Security - ui->utlsFingerprint->addItems(IS_NEKO_BOX ? Preset::SingBox::UtlsFingerPrint : Preset::Xray::UtlsFingerPrint); + ui->utlsFingerprint->addItems(Preset::SingBox::UtlsFingerPrint); D_LOAD_BOOL(skip_cert) ui->enable_js_hook->setCurrentIndex(NekoGui::dataStore->enable_js_hook); @@ -404,9 +404,7 @@ void DialogBasicSettings::on_core_settings_clicked() { MyLineEdit *core_box_clash_api; MyLineEdit *core_box_clash_api_secret; MyLineEdit *core_box_underlying_dns; - QCheckBox *core_ray_direct_dns; - QCheckBox *core_ray_windows_disable_auto_interface; - QComboBox *core_ray_freedom_domainStrategy; + MyLineEdit *core_box_clash_listen_addr; // auto core_box_underlying_dns_l = new QLabel(tr("Override underlying DNS")); core_box_underlying_dns_l->setToolTip(tr( @@ -419,65 +417,38 @@ void DialogBasicSettings::on_core_settings_clicked() { layout->addWidget(core_box_underlying_dns_l, ++line, 0); layout->addWidget(core_box_underlying_dns, line, 1); // - if (IS_NEKO_BOX) { - auto core_box_enable_clash_api_l = new QLabel("Enable Clash API"); - core_box_enable_clash_api = new QCheckBox; - core_box_enable_clash_api->setChecked(NekoGui::dataStore->core_box_clash_api > 0); - layout->addWidget(core_box_enable_clash_api_l, ++line, 0); - layout->addWidget(core_box_enable_clash_api, line, 1); - // - auto core_box_clash_api_l = new QLabel("Clash API Listen Port"); - core_box_clash_api = new MyLineEdit; - core_box_clash_api->setText(Int2String(std::abs(NekoGui::dataStore->core_box_clash_api))); - layout->addWidget(core_box_clash_api_l, ++line, 0); - layout->addWidget(core_box_clash_api, line, 1); - // - auto core_box_clash_api_secret_l = new QLabel("Clash API Secret"); - core_box_clash_api_secret = new MyLineEdit; - core_box_clash_api_secret->setText(NekoGui::dataStore->core_box_clash_api_secret); - layout->addWidget(core_box_clash_api_secret_l, ++line, 0); - layout->addWidget(core_box_clash_api_secret, line, 1); - } else { - auto core_ray_direct_dns_l = new QLabel("NKR_CORE_RAY_DIRECT_DNS"); - core_ray_direct_dns_l->setToolTip(tr("If you Tun Mode is not working, try to change this option.")); - core_ray_direct_dns = new QCheckBox; - core_ray_direct_dns->setChecked(NekoGui::dataStore->core_ray_direct_dns); - connect(core_ray_direct_dns, &QCheckBox::clicked, this, [&] { CACHE.needRestart = true; }); - layout->addWidget(core_ray_direct_dns_l, ++line, 0); - layout->addWidget(core_ray_direct_dns, line, 1); - // - auto core_ray_freedom_domainStrategy_l = new QLabel("Freedom Strategy"); - core_ray_freedom_domainStrategy = new QComboBox; - core_ray_freedom_domainStrategy->addItems({"", "AsIs", "UseIP", "UseIPv4", "UseIPv6"}); - core_ray_freedom_domainStrategy->setCurrentText(NekoGui::dataStore->core_ray_freedom_domainStrategy); - layout->addWidget(core_ray_freedom_domainStrategy_l, ++line, 0); - layout->addWidget(core_ray_freedom_domainStrategy, line, 1); -#ifdef Q_OS_WIN - auto core_ray_windows_disable_auto_interface_l = new QLabel("NKR_CORE_RAY_WINDOWS_DISABLE_AUTO_INTERFACE"); - core_ray_windows_disable_auto_interface_l->setToolTip(tr("If you Tun Mode is not working, try to change this option.")); - core_ray_windows_disable_auto_interface = new QCheckBox; - core_ray_windows_disable_auto_interface->setChecked(NekoGui::dataStore->core_ray_windows_disable_auto_interface); - connect(core_ray_windows_disable_auto_interface, &QCheckBox::clicked, this, [&] { CACHE.needRestart = true; }); - layout->addWidget(core_ray_windows_disable_auto_interface_l, ++line, 0); - layout->addWidget(core_ray_windows_disable_auto_interface, line, 1); -#endif - } + auto core_box_enable_clash_api_l = new QLabel("Enable Clash API"); + core_box_enable_clash_api = new QCheckBox; + core_box_enable_clash_api->setChecked(NekoGui::dataStore->core_box_clash_api > 0); + layout->addWidget(core_box_enable_clash_api_l, ++line, 0); + layout->addWidget(core_box_enable_clash_api, line, 1); + // + auto core_box_clash_listen_addr_l = new QLabel("Clash Api Listen Address"); + core_box_clash_listen_addr = new MyLineEdit; + core_box_clash_listen_addr->setText(NekoGui::dataStore->core_box_clash_listen_addr); + layout->addWidget(core_box_clash_listen_addr_l, ++line, 0); + layout->addWidget(core_box_clash_listen_addr, line, 1); + // + auto core_box_clash_api_l = new QLabel("Clash API Listen Port"); + core_box_clash_api = new MyLineEdit; + core_box_clash_api->setText(Int2String(std::abs(NekoGui::dataStore->core_box_clash_api))); + layout->addWidget(core_box_clash_api_l, ++line, 0); + layout->addWidget(core_box_clash_api, line, 1); + // + auto core_box_clash_api_secret_l = new QLabel("Clash API Secret"); + core_box_clash_api_secret = new MyLineEdit; + core_box_clash_api_secret->setText(NekoGui::dataStore->core_box_clash_api_secret); + layout->addWidget(core_box_clash_api_secret_l, ++line, 0); + layout->addWidget(core_box_clash_api_secret, line, 1); // auto box = new QDialogButtonBox; box->setOrientation(Qt::Horizontal); box->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); connect(box, &QDialogButtonBox::accepted, w, [=] { NekoGui::dataStore->core_box_underlying_dns = core_box_underlying_dns->text(); - if (IS_NEKO_BOX) { - NekoGui::dataStore->core_box_clash_api = core_box_clash_api->text().toInt() * (core_box_enable_clash_api->isChecked() ? 1 : -1); - NekoGui::dataStore->core_box_clash_api_secret = core_box_clash_api_secret->text(); - } else { - NekoGui::dataStore->core_ray_direct_dns = core_ray_direct_dns->isChecked(); - NekoGui::dataStore->core_ray_freedom_domainStrategy = core_ray_freedom_domainStrategy->currentText(); -#ifdef Q_OS_WIN - NekoGui::dataStore->core_ray_windows_disable_auto_interface = core_ray_windows_disable_auto_interface->isChecked(); -#endif - } + NekoGui::dataStore->core_box_clash_api = core_box_clash_api->text().toInt() * (core_box_enable_clash_api->isChecked() ? 1 : -1); + NekoGui::dataStore->core_box_clash_listen_addr = core_box_clash_listen_addr->text(); + NekoGui::dataStore->core_box_clash_api_secret = core_box_clash_api_secret->text(); MW_dialog_message(Dialog_DialogBasicSettings, "UpdateDataStore"); w->accept(); });