diff --git a/main/NekoRay.cpp b/main/NekoRay.cpp index 948085d..9c94442 100644 --- a/main/NekoRay.cpp +++ b/main/NekoRay.cpp @@ -64,6 +64,7 @@ namespace NekoRay { _add(new configItem("check_include_pre", &check_include_pre, itemType::boolean)); _add(new configItem("sp_format", &system_proxy_format, itemType::string)); _add(new configItem("sub_clear", &sub_clear, itemType::boolean)); + _add(new configItem("sub_insecure", &sub_insecure, itemType::boolean)); } void DataStore::UpdateStartedId(int id) { diff --git a/main/NekoRay_DataStore.hpp b/main/NekoRay_DataStore.hpp index 16090ba..de9a56e 100644 --- a/main/NekoRay_DataStore.hpp +++ b/main/NekoRay_DataStore.hpp @@ -81,6 +81,7 @@ namespace NekoRay { QString user_agent = "Nekoray/1.0 (Prefer Clash Format)"; bool sub_use_proxy = false; bool sub_clear = false; + bool sub_insecure = false; // Security bool insecure_hint = true; diff --git a/qv2ray/v2/utils/HTTPRequestHelper.cpp b/qv2ray/v2/utils/HTTPRequestHelper.cpp index 1862209..79b84fa 100644 --- a/qv2ray/v2/utils/HTTPRequestHelper.cpp +++ b/qv2ray/v2/utils/HTTPRequestHelper.cpp @@ -35,7 +35,20 @@ namespace Qv2ray::common::network { // Set attribute request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); request.setHeader(QNetworkRequest::KnownHeaders::UserAgentHeader, NekoRay::dataStore->user_agent); + if (NekoRay::dataStore->sub_insecure) { + QSslConfiguration c; + c.setPeerVerifyMode(QSslSocket::PeerVerifyMode::VerifyNone); + request.setSslConfiguration(c); + } + // auto _reply = accessManager.get(request); + connect(_reply, &QNetworkReply::sslErrors, _reply, [](const QList &errors) { + QStringList error_str; + for (const auto &err: errors) { + error_str << err.errorString(); + } + MW_show_log(QString("SSL Errors: %1 %2").arg(error_str.join(","), NekoRay::dataStore->sub_insecure ? "(Ignored)" : "")); + }); // { QEventLoop loop; @@ -43,8 +56,10 @@ namespace Qv2ray::common::network { loop.exec(); } // - return NekoHTTPResponse{_reply->error() == QNetworkReply::NetworkError::NoError ? "" : _reply->errorString(), - _reply->readAll(), _reply->rawHeaderPairs()}; + auto result = NekoHTTPResponse{_reply->error() == QNetworkReply::NetworkError::NoError ? "" : _reply->errorString(), + _reply->readAll(), _reply->rawHeaderPairs()}; + _reply->deleteLater(); + return result; } QString NetworkRequestHelper::GetHeader(const QList> &header, const QString &name) { diff --git a/translations/zh_CN.ts b/translations/zh_CN.ts index 6349926..86f91b5 100644 --- a/translations/zh_CN.ts +++ b/translations/zh_CN.ts @@ -199,6 +199,10 @@ Clear servers before updating subscription 更新订阅前清除服务器 + + Ignore TLS errors when updating subscription + 更新订阅时忽略 TLS 错误 + DialogEditGroup diff --git a/ui/dialog_basic_settings.cpp b/ui/dialog_basic_settings.cpp index eba2006..52f3001 100644 --- a/ui/dialog_basic_settings.cpp +++ b/ui/dialog_basic_settings.cpp @@ -143,6 +143,7 @@ DialogBasicSettings::DialogBasicSettings(QWidget *parent) ui->user_agent->setText(NekoRay::dataStore->user_agent); D_LOAD_BOOL(sub_use_proxy) D_LOAD_BOOL(sub_clear) + D_LOAD_BOOL(sub_insecure) // Core @@ -266,6 +267,7 @@ void DialogBasicSettings::accept() { NekoRay::dataStore->user_agent = ui->user_agent->text(); D_SAVE_BOOL(sub_use_proxy) D_SAVE_BOOL(sub_clear) + D_SAVE_BOOL(sub_insecure) // Core diff --git a/ui/dialog_basic_settings.ui b/ui/dialog_basic_settings.ui index 382c4fb..e616baf 100644 --- a/ui/dialog_basic_settings.ui +++ b/ui/dialog_basic_settings.ui @@ -407,16 +407,6 @@ Subscription - - - - Use proxy when updating subscription - - - - - - @@ -424,13 +414,30 @@ - + + + + Clear servers before updating subscription + + + + Use proxy when updating subscription + + + + + + + Ignore TLS errors when updating subscription + + + diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp index 7332a7f..c9917e5 100644 --- a/ui/mainwindow.cpp +++ b/ui/mainwindow.cpp @@ -1101,7 +1101,6 @@ void MainWindow::display_qr_link(bool nkrFormat) { } void MainWindow::on_menu_scan_qr_triggered() { - NO_ADD_TO_SUBSCRIPTION_GROUP #ifndef NKR_NO_EXTERNAL using namespace ZXingQt; @@ -1124,6 +1123,8 @@ void MainWindow::on_menu_scan_qr_triggered() { if (text.isEmpty()) { MessageBoxInfo(software_name, tr("QR Code not found")); } else { + show_log_impl("QR Code Result:\n" + text); + NO_ADD_TO_SUBSCRIPTION_GROUP NekoRay::sub::groupUpdater->AsyncUpdate(text); } #endif