+ (imgmaxsect + MIN_FREE_SECT) < dsectors) {
+ add_fit_subimage_device(bdev, slot++, imgmaxsect,
+ dsectors - imgmaxsect, false);
-+ dev_info(dev, "mapped remaing space as /dev/fitrw\n");
++ dev_info(dev, "mapped remaining space as /dev/fitrw\n");
+ }
+
+out_bootconf:
diff --git a/nekoray/.github/workflows/build-nekoray-cmake.yml b/nekoray/.github/workflows/build-nekoray-cmake.yml
index 1a3438572d..78bbf09ae9 100644
--- a/nekoray/.github/workflows/build-nekoray-cmake.yml
+++ b/nekoray/.github/workflows/build-nekoray-cmake.yml
@@ -4,20 +4,20 @@ on:
workflow_dispatch:
inputs:
tag:
- description: 'Release Tag'
+ description: "Release Tag"
required: true
publish:
- description: 'Publish: If want ignore'
+ description: "Publish: If want ignore"
required: false
artifact-pack:
- description: 'artifact-pack: If want ignore'
+ description: "artifact-pack: If want ignore"
required: false
jobs:
build-go:
strategy:
matrix:
- cross_os: [ windows, linux ]
- cross_arch: [ amd64 ]
+ cross_os: [windows, linux]
+ cross_arch: [amd64]
include:
- cross_os: public_res
cross_arch: public_res
@@ -38,7 +38,7 @@ jobs:
if: steps.cache-common.outputs.cache-hit != 'true'
uses: actions/setup-go@v3
with:
- go-version: ^1.21
+ go-version: ^1.22
- name: Build golang parts
if: steps.cache-common.outputs.cache-hit != 'true'
shell: bash
@@ -61,7 +61,7 @@ jobs:
include:
- platform: windows-2022
arch: x64
- qt_version: "6.5"
+ qt_version: "6.7"
- platform: ubuntu-20.04
arch: x64
qt_version: "5.12"
@@ -196,7 +196,7 @@ jobs:
cp -r public_res/* linux64
####
bash ../libs/package_appimage.sh
- mv nekoray-x86_64.AppImage $version_standalone-linux-x64.AppImage
+ mv nekobox-x86_64.AppImage $version_standalone-linux-x64.AppImage
- name: Clean Up
run: |
cd deployment
diff --git a/nekoray/CMakeLists.txt b/nekoray/CMakeLists.txt
index 1a2dba22f3..727aedabf6 100644
--- a/nekoray/CMakeLists.txt
+++ b/nekoray/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.5)
-project(nekoray VERSION 0.1 LANGUAGES CXX)
+project(nekobox VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -238,23 +238,23 @@ set(PROJECT_SOURCES
# Qt exe
if (${QT_VERSION_MAJOR} GREATER_EQUAL 6)
- qt_add_executable(nekoray
+ qt_add_executable(nekobox
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
# Define target properties for Android with Qt 6 as:
- # set_property(TARGET nekoray APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
+ # set_property(TARGET nekobox APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else ()
if (ANDROID)
- add_library(nekoray SHARED
+ add_library(nekobox SHARED
${PROJECT_SOURCES}
)
# Define properties for Android with Qt 5 after find_package() calls as:
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
else ()
- add_executable(nekoray
+ add_executable(nekobox
${PROJECT_SOURCES}
)
endif ()
@@ -262,11 +262,11 @@ endif ()
# Target
-set_property(TARGET nekoray PROPERTY AUTOUIC ON)
-set_property(TARGET nekoray PROPERTY AUTOMOC ON)
-set_property(TARGET nekoray PROPERTY AUTORCC ON)
+set_property(TARGET nekobox PROPERTY AUTOUIC ON)
+set_property(TARGET nekobox PROPERTY AUTOMOC ON)
+set_property(TARGET nekobox PROPERTY AUTORCC ON)
-set_target_properties(nekoray PROPERTIES
+set_target_properties(nekobox PROPERTIES
WIN32_EXECUTABLE TRUE
)
@@ -281,17 +281,17 @@ set(LUPDATE_OPTIONS
-locations none -no-obsolete
)
if (${QT_VERSION_MAJOR} GREATER_EQUAL 6)
- qt_add_lupdate(nekoray TS_FILES ${TS_FILES} OPTIONS ${LUPDATE_OPTIONS})
- qt_add_lrelease(nekoray TS_FILES ${TS_FILES} QM_FILES_OUTPUT_VARIABLE QM_FILES)
+ qt_add_lupdate(nekobox TS_FILES ${TS_FILES} OPTIONS ${LUPDATE_OPTIONS})
+ qt_add_lrelease(nekobox TS_FILES ${TS_FILES} QM_FILES_OUTPUT_VARIABLE QM_FILES)
else ()
qt5_create_translation(QM_FILES ${PROJECT_SOURCES} ${TS_FILES} OPTIONS ${LUPDATE_OPTIONS})
endif ()
configure_file(translations/translations.qrc ${CMAKE_BINARY_DIR} COPYONLY)
-target_sources(nekoray PRIVATE ${CMAKE_BINARY_DIR}/translations.qrc)
+target_sources(nekobox PRIVATE ${CMAKE_BINARY_DIR}/translations.qrc)
# Target Link
-target_link_libraries(nekoray PRIVATE
+target_link_libraries(nekobox PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Svg
Threads::Threads
${NKR_EXTERNAL_TARGETS}
@@ -299,5 +299,5 @@ target_link_libraries(nekoray PRIVATE
)
if (QT_VERSION_MAJOR EQUAL 6)
- qt_finalize_executable(nekoray)
+ qt_finalize_executable(nekobox)
endif ()
diff --git a/nekoray/README.md b/nekoray/README.md
index 64e2dab989..e650503ba9 100644
--- a/nekoray/README.md
+++ b/nekoray/README.md
@@ -64,7 +64,6 @@ https://matsuridayo.github.io
- Trojan
- TUIC ( sing-box )
- NaïveProxy ( Custom Core )
-- Hysteria ( Custom Core or sing-box )
- Hysteria2 ( Custom Core or sing-box )
- Custom Outbound
- Custom Config
diff --git a/nekoray/appdmg.json b/nekoray/appdmg.json
deleted file mode 100644
index d7f1a40063..0000000000
--- a/nekoray/appdmg.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "title": "nekoray",
- "icon": "res/nekoray.icns",
- "contents": [
- {
- "x": 448,
- "y": 344,
- "type": "link",
- "path": "/Applications"
- },
- {
- "x": 192,
- "y": 344,
- "type": "file",
- "path": "build/nekoray.app"
- }
- ]
-}
\ No newline at end of file
diff --git a/nekoray/cmake/windows/windows.cmake b/nekoray/cmake/windows/windows.cmake
index 75bd037979..58595883ce 100644
--- a/nekoray/cmake/windows/windows.cmake
+++ b/nekoray/cmake/windows/windows.cmake
@@ -4,12 +4,12 @@ set(PLATFORM_LIBRARIES wininet wsock32 ws2_32 user32 rasapi32 iphlpapi)
include(cmake/windows/generate_product_version.cmake)
generate_product_version(
QV2RAY_RC
- ICON "${CMAKE_SOURCE_DIR}/res/nekoray.ico"
- NAME "nekoray"
- BUNDLE "nekoray"
- COMPANY_NAME "nekoray"
- COMPANY_COPYRIGHT "nekoray"
- FILE_DESCRIPTION "nekoray"
+ ICON "${CMAKE_SOURCE_DIR}/res/nekobox.ico"
+ NAME "nekobox"
+ BUNDLE "nekobox"
+ COMPANY_NAME "nekobox"
+ COMPANY_COPYRIGHT "nekobox"
+ FILE_DESCRIPTION "nekobox"
)
add_definitions(-DUNICODE -D_UNICODE -DNOMINMAX)
set(GUI_TYPE WIN32)
diff --git a/nekoray/db/ConfigBuilder.cpp b/nekoray/db/ConfigBuilder.cpp
index c28d91a507..092dc0e02a 100644
--- a/nekoray/db/ConfigBuilder.cpp
+++ b/nekoray/db/ConfigBuilder.cpp
@@ -22,7 +22,7 @@ namespace NekoGui {
}
QString genTunName() {
- auto tun_name = "nekoray-tun";
+ auto tun_name = "nekobox-tun";
#ifdef Q_OS_MACOS
tun_name = "utun9";
#endif
@@ -725,8 +725,8 @@ namespace NekoGui {
QString WriteVPNSingBoxConfig() {
// tun user rule
- auto match_out = dataStore->vpn_rule_white ? "nekoray-socks" : "direct";
- auto no_match_out = dataStore->vpn_rule_white ? "direct" : "nekoray-socks";
+ auto match_out = dataStore->vpn_rule_white ? "nekobox-socks" : "direct";
+ auto no_match_out = dataStore->vpn_rule_white ? "direct" : "nekobox-socks";
QString process_name_rule = dataStore->vpn_rule_process.trimmed();
if (!process_name_rule.isEmpty()) {
diff --git a/nekoray/db/Database.cpp b/nekoray/db/Database.cpp
index d99741f5dd..84e69dfebb 100644
--- a/nekoray/db/Database.cpp
+++ b/nekoray/db/Database.cpp
@@ -184,8 +184,6 @@ namespace NekoGui {
bean = new NekoGui_fmt::TrojanVLESSBean(NekoGui_fmt::TrojanVLESSBean::proxy_VLESS);
} else if (type == "naive") {
bean = new NekoGui_fmt::NaiveBean();
- } else if (type == "hysteria") {
- bean = new NekoGui_fmt::QUICBean(NekoGui_fmt::QUICBean::proxy_Hysteria);
} else if (type == "hysteria2") {
bean = new NekoGui_fmt::QUICBean(NekoGui_fmt::QUICBean::proxy_Hysteria2);
} else if (type == "tuic") {
diff --git a/nekoray/docs/Build_Linux.md b/nekoray/docs/Build_Linux.md
index ad97f9114a..966cb77895 100644
--- a/nekoray/docs/Build_Linux.md
+++ b/nekoray/docs/Build_Linux.md
@@ -22,9 +22,9 @@ cmake -GNinja ..
ninja
```
-编译完成后得到 `nekoray`
+编译完成后得到 `nekobox`
-解压 Release 的压缩包,替换其中的 `nekoray`,删除 `launcher` 即可使用。
+解压 Release 的压缩包,替换其中的 `nekobox`,删除 `launcher` 即可使用。
## 复杂编译法
@@ -69,7 +69,7 @@ cmake -GNinja ..
ninja
```
-编译完成后得到 `nekoray`
+编译完成后得到 `nekobox`
### Go 部分编译
diff --git a/nekoray/docs/Build_Windows.md b/nekoray/docs/Build_Windows.md
index a8a7728f99..b8a1469be6 100644
--- a/nekoray/docs/Build_Windows.md
+++ b/nekoray/docs/Build_Windows.md
@@ -55,9 +55,9 @@ cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=D:/path/to/qt/5.15.
ninja
```
-编译完成后得到 `nekoray.exe`
+编译完成后得到 `nekobox.exe`
-最后运行 `windeployqt nekoray.exe` 自动复制所需 DLL 等文件到当前目录
+最后运行 `windeployqt nekobox.exe` 自动复制所需 DLL 等文件到当前目录
### Go 部分编译
diff --git a/nekoray/fmt/Bean2CoreObj_box.cpp b/nekoray/fmt/Bean2CoreObj_box.cpp
index e8307c5a7c..72b6e1e203 100644
--- a/nekoray/fmt/Bean2CoreObj_box.cpp
+++ b/nekoray/fmt/Bean2CoreObj_box.cpp
@@ -191,27 +191,12 @@ namespace NekoGui_fmt {
{"tls", coreTlsObj},
};
- if (proxy_type == proxy_Hysteria) {
- outbound["type"] = "hysteria";
- outbound["obfs"] = obfsPassword;
- outbound["disable_mtu_discovery"] = disableMtuDiscovery;
- outbound["recv_window"] = streamReceiveWindow;
- outbound["recv_window_conn"] = connectionReceiveWindow;
- outbound["up_mbps"] = uploadMbps;
- outbound["down_mbps"] = downloadMbps;
-
- if (!hopPort.trimmed().isEmpty()) {
- outbound["hop_ports"] = hopPort;
- outbound["hop_interval"] = hopInterval;
- }
- if (authPayloadType == hysteria_auth_base64) outbound["auth"] = authPayload;
- if (authPayloadType == hysteria_auth_string) outbound["auth_str"] = authPayload;
- } else if (proxy_type == proxy_Hysteria2) {
+ if (proxy_type == proxy_Hysteria2) {
outbound["type"] = "hysteria2";
outbound["password"] = password;
outbound["up_mbps"] = uploadMbps;
outbound["down_mbps"] = downloadMbps;
-
+
if (!hopPort.trimmed().isEmpty()) {
outbound["hop_ports"] = hopPort;
outbound["hop_interval"] = hopInterval;
diff --git a/nekoray/fmt/Bean2External.cpp b/nekoray/fmt/Bean2External.cpp
index 50de4efb57..caca35d4ac 100644
--- a/nekoray/fmt/Bean2External.cpp
+++ b/nekoray/fmt/Bean2External.cpp
@@ -36,46 +36,26 @@ namespace NekoGui_fmt {
}
int QUICBean::NeedExternal(bool isFirstProfile) {
- auto hysteriaCore = [=] {
+ auto extCore = [=] {
if (isFirstProfile) {
- if (NekoGui::dataStore->spmode_vpn && hyProtocol != hysteria_protocol_facktcp && hopPort.trimmed().isEmpty()) {
+ if (NekoGui::dataStore->spmode_vpn && hopPort.trimmed().isEmpty()) {
return 1;
}
return 2;
} else {
- if (hyProtocol == hysteria_protocol_facktcp || !hopPort.trimmed().isEmpty()) {
+ if (!hopPort.trimmed().isEmpty()) {
return -1;
}
}
return 1;
};
- auto hysteria2Core = [=] {
- if (isFirstProfile) {
- if (NekoGui::dataStore->spmode_vpn) {
- return 1;
- }
- return 2;
- }
- return 1;
- };
-
- auto tuicCore = [=] {
- if (isFirstProfile) {
- if (NekoGui::dataStore->spmode_vpn) {
- return 1;
- }
- return 2;
- }
- return 1;
- };
-
- if (!forceExternal && (proxy_type == proxy_TUIC || hyProtocol == hysteria_protocol_udp)) {
+ if (!forceExternal && (proxy_type == proxy_TUIC || hopPort.trimmed().isEmpty())) {
// sing-box support
return 0;
} else {
- // hysteria core support
- return hysteriaCore();
+ // external core support
+ return extCore();
}
}
@@ -233,68 +213,11 @@ namespace NekoGui_fmt {
WriteTempFile("hysteria2_" + GetRandomString(10) + ".json", result.config_export.toUtf8());
result.arguments = QStringList{"-c", TempFile};
- return result;
-
- } else { // Hysteria
- ExternalBuildResult result{NekoGui::dataStore->extraCore->Get("hysteria")};
-
- QJsonObject config;
-
- // determine server format
- auto is_direct = external_stat == 2;
- auto sniGen = sni;
- if (sni.isEmpty() && !IsIpAddress(serverAddress)) sniGen = serverAddress;
-
- auto server = serverAddress;
- if (!hopPort.trimmed().isEmpty()) {
- server = WrapIPV6Host(server) + ":" + hopPort;
- } else {
- server = WrapIPV6Host(server) + ":" + Int2String(serverPort);
- }
- config["server"] = is_direct ? server : "127.0.0.1:" + Int2String(mapping_port);
-
- // listen
- config["socks5"] = QJsonObject{
- {"listen", "127.0.0.1:" + Int2String(socks_port)},
- };
-
- // misc
-
- config["retry"] = 5;
- config["fast_open"] = true;
- config["lazy_start"] = true;
- config["obfs"] = obfsPassword;
- config["up_mbps"] = uploadMbps;
- config["down_mbps"] = downloadMbps;
-
- if (authPayloadType == hysteria_auth_base64) config["auth"] = authPayload;
- if (authPayloadType == hysteria_auth_string) config["auth_str"] = authPayload;
-
- if (hyProtocol == hysteria_protocol_facktcp) config["protocol"] = "faketcp";
- if (hyProtocol == hysteria_protocol_wechat_video) config["protocol"] = "wechat-video";
-
- if (!sniGen.isEmpty()) config["server_name"] = sniGen;
- if (!alpn.isEmpty()) config["alpn"] = alpn;
-
- if (!caText.trimmed().isEmpty()) {
- WriteTempFile("hysteria_" + GetRandomString(10) + ".crt", caText.toUtf8());
- config["ca"] = TempFile;
- }
-
- if (allowInsecure) config["insecure"] = true;
- if (streamReceiveWindow > 0) config["recv_window_conn"] = streamReceiveWindow;
- if (connectionReceiveWindow > 0) config["recv_window"] = connectionReceiveWindow;
- if (disableMtuDiscovery) config["disable_mtu_discovery"] = true;
- config["hop_interval"] = hopInterval;
-
- //
-
- result.config_export = QJsonObject2QString(config, false);
- WriteTempFile("hysteria_" + GetRandomString(10) + ".json", result.config_export.toUtf8());
- result.arguments = QStringList{"--no-check", "-c", TempFile};
-
return result;
}
+ ExternalBuildResult e;
+ e.error = "unknown type";
+ return e;
}
ExternalBuildResult CustomBean::BuildExternal(int mapping_port, int socks_port, int external_stat) {
diff --git a/nekoray/fmt/Bean2Link.cpp b/nekoray/fmt/Bean2Link.cpp
index 78e8415718..1381690c8e 100644
--- a/nekoray/fmt/Bean2Link.cpp
+++ b/nekoray/fmt/Bean2Link.cpp
@@ -182,29 +182,7 @@ namespace NekoGui_fmt {
QString QUICBean::ToShareLink() {
QUrl url;
- if (proxy_type == proxy_Hysteria) {
- url.setScheme("hysteria");
- url.setHost(serverAddress);
- url.setPort(serverPort);
- QUrlQuery q;
- q.addQueryItem("upmbps", Int2String(uploadMbps));
- q.addQueryItem("downmbps", Int2String(downloadMbps));
- if (!obfsPassword.isEmpty()) {
- q.addQueryItem("obfs", "xplus");
- q.addQueryItem("obfsParam", obfsPassword);
- }
- if (authPayloadType == hysteria_auth_string) q.addQueryItem("auth", authPayload);
- if (hyProtocol == hysteria_protocol_facktcp) q.addQueryItem("protocol", "faketcp");
- if (hyProtocol == hysteria_protocol_wechat_video) q.addQueryItem("protocol", "wechat-video");
- if (!hopPort.trimmed().isEmpty()) q.addQueryItem("mport", hopPort);
- if (allowInsecure) q.addQueryItem("insecure", "1");
- if (!sni.isEmpty()) q.addQueryItem("peer", sni);
- if (!alpn.isEmpty()) q.addQueryItem("alpn", alpn);
- if (connectionReceiveWindow > 0) q.addQueryItem("recv_window", Int2String(connectionReceiveWindow));
- if (streamReceiveWindow > 0) q.addQueryItem("recv_window_conn", Int2String(streamReceiveWindow));
- if (!q.isEmpty()) url.setQuery(q);
- if (!name.isEmpty()) url.setFragment(name);
- } else if (proxy_type == proxy_TUIC) {
+ if (proxy_type == proxy_TUIC) {
url.setScheme("tuic");
url.setUserName(uuid);
url.setPassword(password);
diff --git a/nekoray/fmt/Link2Bean.cpp b/nekoray/fmt/Link2Bean.cpp
index 3bbd279471..f5d9e0d0f0 100644
--- a/nekoray/fmt/Link2Bean.cpp
+++ b/nekoray/fmt/Link2Bean.cpp
@@ -55,7 +55,7 @@ namespace NekoGui_fmt {
// security
- auto type = GetQueryValue(query, "type", "tcp");
+ auto type = GetQueryValue(query, "type", "tcp");
if (type == "h2") {
type = "http";
}
@@ -256,37 +256,7 @@ namespace NekoGui_fmt {
auto query = QUrlQuery(url.query());
if (url.host().isEmpty() || url.port() == -1) return false;
- if (url.scheme() == "hysteria") {
- // https://hysteria.network/docs/uri-scheme/
- if (!query.hasQueryItem("upmbps") || !query.hasQueryItem("downmbps")) return false;
-
- name = url.fragment(QUrl::FullyDecoded);
- serverAddress = url.host();
- serverPort = url.port();
- hopPort = query.queryItemValue("mport");
- obfsPassword = query.queryItemValue("obfsParam");
- allowInsecure = QStringList{"1", "true"}.contains(query.queryItemValue("insecure"));
- uploadMbps = query.queryItemValue("upmbps").toInt();
- downloadMbps = query.queryItemValue("downmbps").toInt();
-
- auto protocolStr = (query.hasQueryItem("protocol") ? query.queryItemValue("protocol") : "udp").toLower();
- if (protocolStr == "faketcp") {
- hyProtocol = NekoGui_fmt::QUICBean::hysteria_protocol_facktcp;
- } else if (protocolStr.startsWith("wechat")) {
- hyProtocol = NekoGui_fmt::QUICBean::hysteria_protocol_wechat_video;
- }
-
- if (query.hasQueryItem("auth")) {
- authPayload = query.queryItemValue("auth");
- authPayloadType = NekoGui_fmt::QUICBean::hysteria_auth_string;
- }
-
- alpn = query.queryItemValue("alpn");
- sni = FIRST_OR_SECOND(query.queryItemValue("peer"), query.queryItemValue("sni"));
-
- connectionReceiveWindow = query.queryItemValue("recv_window").toInt();
- streamReceiveWindow = query.queryItemValue("recv_window_conn").toInt();
- } else if (url.scheme() == "tuic") {
+ if (url.scheme() == "tuic") {
// by daeuniverse
// https://github.com/daeuniverse/dae/discussions/182
diff --git a/nekoray/fmt/QUICBean.hpp b/nekoray/fmt/QUICBean.hpp
index b4650ed215..9a18c63b75 100644
--- a/nekoray/fmt/QUICBean.hpp
+++ b/nekoray/fmt/QUICBean.hpp
@@ -5,32 +5,19 @@
namespace NekoGui_fmt {
class QUICBean : public AbstractBean {
public:
- static constexpr int proxy_Hysteria = 0;
+ // static constexpr int proxy_Hysteria = 0;
static constexpr int proxy_TUIC = 1;
static constexpr int proxy_Hysteria2 = 3;
- int proxy_type = proxy_Hysteria;
+ int proxy_type = proxy_Hysteria2;
bool forceExternal = false;
- // Hysteria 1
-
- static constexpr int hysteria_protocol_udp = 0;
- static constexpr int hysteria_protocol_facktcp = 1;
- static constexpr int hysteria_protocol_wechat_video = 2;
- int hyProtocol = 0;
-
- static constexpr int hysteria_auth_none = 0;
- static constexpr int hysteria_auth_string = 1;
- static constexpr int hysteria_auth_base64 = 2;
- int authPayloadType = 0;
- QString authPayload = "";
-
- // Hysteria 1&2
+ // Hysteria 2
QString obfsPassword = "";
- int uploadMbps = 100;
- int downloadMbps = 100;
+ int uploadMbps = 0;
+ int downloadMbps = 0;
qint64 streamReceiveWindow = 0;
qint64 connectionReceiveWindow = 0;
@@ -62,8 +49,7 @@ namespace NekoGui_fmt {
explicit QUICBean(int _proxy_type) : AbstractBean(0) {
proxy_type = _proxy_type;
- if (proxy_type == proxy_Hysteria || proxy_type == proxy_Hysteria2) {
- _add(new configItem("authPayload", &authPayload, itemType::string));
+ if (proxy_type == proxy_Hysteria2) {
_add(new configItem("obfsPassword", &obfsPassword, itemType::string));
_add(new configItem("uploadMbps", &uploadMbps, itemType::integer));
_add(new configItem("downloadMbps", &downloadMbps, itemType::integer));
@@ -72,14 +58,7 @@ namespace NekoGui_fmt {
_add(new configItem("disableMtuDiscovery", &disableMtuDiscovery, itemType::boolean));
_add(new configItem("hopInterval", &hopInterval, itemType::integer));
_add(new configItem("hopPort", &hopPort, itemType::string));
- if (proxy_type == proxy_Hysteria) { // hy1
- _add(new configItem("authPayloadType", &authPayloadType, itemType::integer));
- _add(new configItem("protocol", &hyProtocol, itemType::integer));
- } else { // hy2
- uploadMbps = 0;
- downloadMbps = 0;
- _add(new configItem("password", &password, itemType::string));
- }
+ _add(new configItem("password", &password, itemType::string));
} else if (proxy_type == proxy_TUIC) {
_add(new configItem("uuid", &uuid, itemType::string));
_add(new configItem("password", &password, itemType::string));
@@ -108,8 +87,6 @@ namespace NekoGui_fmt {
return software_core_name;
} else if (proxy_type == proxy_TUIC) {
return "tuic";
- } else if (proxy_type == proxy_Hysteria) {
- return "hysteria";
} else {
return "hysteria2";
}
@@ -118,8 +95,6 @@ namespace NekoGui_fmt {
QString DisplayType() override {
if (proxy_type == proxy_TUIC) {
return "TUIC";
- } else if (proxy_type == proxy_Hysteria) {
- return "Hysteria1";
} else {
return "Hysteria2";
}
diff --git a/nekoray/go/cmd/updater/launcher_linux.go b/nekoray/go/cmd/updater/launcher_linux.go
index d9ad958550..334708eb58 100644
--- a/nekoray/go/cmd/updater/launcher_linux.go
+++ b/nekoray/go/cmd/updater/launcher_linux.go
@@ -17,7 +17,7 @@ func Launcher() {
_debug := flag.Bool("debug", false, "Debug mode")
flag.Parse()
- cmd := exec.Command("./nekoray", flag.Args()...)
+ cmd := exec.Command("./nekobox", flag.Args()...)
ld_env := "LD_LIBRARY_PATH=" + filepath.Join(wd, "./usr/lib")
qt_plugin_env := "QT_PLUGIN_PATH=" + filepath.Join(wd, "./usr/plugins")
diff --git a/nekoray/go/cmd/updater/main.go b/nekoray/go/cmd/updater/main.go
index 43a63a73a6..1e6ca63f81 100644
--- a/nekoray/go/cmd/updater/main.go
+++ b/nekoray/go/cmd/updater/main.go
@@ -30,9 +30,9 @@ func main() {
time.Sleep(time.Second)
Updater()
// 3. start
- exec.Command("./nekoray.exe").Start()
+ exec.Command("./nekobox.exe").Start()
} else {
- // 1. nekoray stop it self and run "updater.exe"
+ // 1. main prog quit and run "updater.exe"
Copy("./updater.exe", "./updater.old")
exec.Command("./updater.old", os.Args[1:]...).Start()
}
@@ -43,7 +43,7 @@ func main() {
if os.Getenv("NKR_FROM_LAUNCHER") == "1" {
Launcher()
} else {
- exec.Command("./nekoray").Start()
+ exec.Command("./nekobox").Start()
}
}
return
diff --git a/nekoray/go/cmd/updater/updater.go b/nekoray/go/cmd/updater/updater.go
index 5db0b636f9..c71c7756da 100644
--- a/nekoray/go/cmd/updater/updater.go
+++ b/nekoray/go/cmd/updater/updater.go
@@ -71,6 +71,11 @@ func Updater() {
os.RemoveAll("./nekoray_update")
os.RemoveAll("./nekoray.zip")
os.RemoveAll("./nekoray.tar.gz")
+
+ // nekoray -> nekobox
+ os.Remove("./nekoray.exe")
+ os.Remove("./nekoray.png")
+ os.Remove("./nekoray_core.exe")
}
func Exist(path string) bool {
diff --git a/nekoray/go/grpc_server/update.go b/nekoray/go/grpc_server/update.go
index f3acfa64b3..2e7224ed79 100644
--- a/nekoray/go/grpc_server/update.go
+++ b/nekoray/go/grpc_server/update.go
@@ -53,10 +53,6 @@ func (s *BaseServer) Update(ctx context.Context, in *gen.UpdateReq) (*gen.Update
var search string
if runtime.GOOS == "windows" && runtime.GOARCH == "amd64" {
search = "windows64"
- // check Qt5 update after nekoray v3.3
- if _, err := os.Stat("../Qt5Core.dll"); err == nil {
- search = "windows7-x64"
- }
} else if runtime.GOOS == "linux" && runtime.GOARCH == "amd64" {
search = "linux64"
} else if runtime.GOOS == "darwin" {
diff --git a/nekoray/libs/build_go.sh b/nekoray/libs/build_go.sh
index 45a76e8284..966ae18f04 100755
--- a/nekoray/libs/build_go.sh
+++ b/nekoray/libs/build_go.sh
@@ -23,5 +23,5 @@ popd
#### Go: nekobox_core ####
pushd go/cmd/nekobox_core
-go build -v -o $DEST -trimpath -ldflags "-w -s -X $neko_common.Version_neko=$version_standalone" -tags "with_clash_api,with_gvisor,with_quic,with_wireguard,with_utls,with_ech"
+go build -v -o $DEST -trimpath -ldflags "-w -s -X github.com/matsuridayo/libneko/neko_common.Version_neko=$version_standalone" -tags "with_clash_api,with_gvisor,with_quic,with_wireguard,with_utls,with_ech"
popd
diff --git a/nekoray/libs/deploy_linux64.sh b/nekoray/libs/deploy_linux64.sh
index cf9cf8b967..76d0b29b72 100755
--- a/nekoray/libs/deploy_linux64.sh
+++ b/nekoray/libs/deploy_linux64.sh
@@ -7,7 +7,7 @@ rm -rf $DEST
mkdir -p $DEST
#### copy binary ####
-cp $BUILD/nekoray $DEST
+cp $BUILD/nekobox $DEST
#### Download: prebuilt runtime ####
curl -Lso usr.zip https://github.com/MatsuriDayo/nekoray_qt_runtime/releases/download/20220503/20230202-5.12.8-ubuntu20.04-linux64.zip
diff --git a/nekoray/libs/deploy_windows64.sh b/nekoray/libs/deploy_windows64.sh
index 403b899e9d..a513aadd62 100755
--- a/nekoray/libs/deploy_windows64.sh
+++ b/nekoray/libs/deploy_windows64.sh
@@ -2,20 +2,16 @@
set -e
source libs/env_deploy.sh
-if [ "$DL_QT_VER" == "5.15" ]; then
- DEST=$DEPLOYMENT/windows7-x64
-else
- DEST=$DEPLOYMENT/windows64
-fi
+DEST=$DEPLOYMENT/windows64
rm -rf $DEST
mkdir -p $DEST
#### copy exe ####
-cp $BUILD/nekoray.exe $DEST
+cp $BUILD/nekobox.exe $DEST
#### deploy qt & DLL runtime ####
pushd $DEST
-windeployqt nekoray.exe --no-compiler-runtime --no-system-d3d-compiler --no-opengl-sw --verbose 2
+windeployqt nekobox.exe --no-compiler-runtime --no-system-d3d-compiler --no-opengl-sw --verbose 2
rm -rf translations
rm -rf libEGL.dll libGLESv2.dll Qt6Pdf.dll
diff --git a/nekoray/libs/download_qtsdk_win.sh b/nekoray/libs/download_qtsdk_win.sh
index 690fdecab0..f683210f36 100644
--- a/nekoray/libs/download_qtsdk_win.sh
+++ b/nekoray/libs/download_qtsdk_win.sh
@@ -3,7 +3,7 @@ cd qtsdk
if [ "$DL_QT_VER" == "5.15" ]; then
curl -LSO https://github.com/MatsuriDayo/nekoray_qt_runtime/releases/download/20220503/Qt5.15.7-Windows-x86_64-VS2019-16.11.20-20221103.7z
else
- curl -LSO https://github.com/MatsuriDayo/nekoray_qt_runtime/releases/download/20220503/Qt6.5.2-Windows-x86_64-VS2022-17.6.5-20230803.7z
+ curl -LSO https://github.com/MatsuriDayo/nekoray_qt_runtime/releases/download/20220503/Qt6.7.2-Windows-x86_64-VS2022-17.10.3-20240621.7z
fi
7z x *.7z
rm *.7z
diff --git a/nekoray/libs/env_deploy.sh b/nekoray/libs/env_deploy.sh
index 5c174ff0b1..9682533a16 100644
--- a/nekoray/libs/env_deploy.sh
+++ b/nekoray/libs/env_deploy.sh
@@ -1,4 +1,4 @@
SRC_ROOT="$PWD"
DEPLOYMENT="$SRC_ROOT/deployment"
BUILD="$SRC_ROOT/build"
-version_standalone="nekoray-"$(cat nekoray_version.txt)
+version_standalone="nekoray-"$(cat nekoray_version.txt) # 下次改
diff --git a/nekoray/libs/package_appimage.sh b/nekoray/libs/package_appimage.sh
index 79b3cad1b3..c6c38827d0 100644
--- a/nekoray/libs/package_appimage.sh
+++ b/nekoray/libs/package_appimage.sh
@@ -2,37 +2,37 @@
sudo apt-get install fuse -y
-cp -r linux64 nekoray.AppDir
+cp -r linux64 nekobox.AppDir
# The file for Appimage
-rm nekoray.AppDir/launcher
+rm nekobox.AppDir/launcher
-cat >nekoray.AppDir/nekoray.desktop <<-EOF
+cat >nekobox.AppDir/nekobox.desktop <<-EOF
[Desktop Entry]
-Name=nekoray
-Exec=echo "NekoRay started"
-Icon=nekoray
+Name=nekobox
+Exec=echo "nekobox started"
+Icon=nekobox
Type=Application
Categories=Network
EOF
-cat >nekoray.AppDir/AppRun <<-EOF
+cat >nekobox.AppDir/AppRun <<-EOF
#!/bin/bash
echo "PATH: \${PATH}"
-echo "NekoRay runing on: \$APPDIR"
-LD_LIBRARY_PATH=\${APPDIR}/usr/lib QT_PLUGIN_PATH=\${APPDIR}/usr/plugins \${APPDIR}/nekoray -appdata "\$@"
+echo "nekobox runing on: \$APPDIR"
+LD_LIBRARY_PATH=\${APPDIR}/usr/lib QT_PLUGIN_PATH=\${APPDIR}/usr/plugins \${APPDIR}/nekobox -appdata "\$@"
EOF
-chmod +x nekoray.AppDir/AppRun
+chmod +x nekobox.AppDir/AppRun
# build
curl -fLSO https://github.com/AppImage/AppImageKit/releases/latest/download/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
-./appimagetool-x86_64.AppImage nekoray.AppDir
+./appimagetool-x86_64.AppImage nekobox.AppDir
# clean
rm appimagetool-x86_64.AppImage
-rm -rf nekoray.AppDir
+rm -rf nekobox.AppDir
diff --git a/nekoray/libs/package_debian.sh b/nekoray/libs/package_debian.sh
index d1b7eaf168..491aa7d0e6 100644
--- a/nekoray/libs/package_debian.sh
+++ b/nekoray/libs/package_debian.sh
@@ -25,8 +25,8 @@ if [ ! -s /usr/share/applications/nekoray.desktop ]; then
[Desktop Entry]
Name=nekoray
Comment=Qt based cross-platform GUI proxy configuration manager (backend: sing-box)
-Exec=sh -c "PATH=/opt/nekoray:\$PATH /opt/nekoray/nekoray -appdata"
-Icon=/opt/nekoray/nekoray.png
+Exec=sh -c "PATH=/opt/nekoray:\$PATH /opt/nekoray/nekobox -appdata"
+Icon=/opt/nekoray/nekobox.png
Terminal=false
Type=Application
Categories=Network;Application;
diff --git a/nekoray/main/Const.hpp b/nekoray/main/Const.hpp
index 440c84744c..38d328c42e 100644
--- a/nekoray/main/Const.hpp
+++ b/nekoray/main/Const.hpp
@@ -18,7 +18,7 @@ namespace NekoGui {
namespace CoreType {
enum CoreType {
- V2RAY,
+ V2RAY, // DO NOT USE
SING_BOX,
};
}
diff --git a/nekoray/main/main.cpp b/nekoray/main/main.cpp
index c88dc924dd..b14f04f0e0 100644
--- a/nekoray/main/main.cpp
+++ b/nekoray/main/main.cpp
@@ -140,7 +140,7 @@ int main(int argc, char* argv[]) {
return 0;
}
// Some Bad System
- QMessageBox::warning(nullptr, "NekoRay", "RunGuard disallow to run, use -many to force start.");
+ QMessageBox::warning(nullptr, "NekoGui", "RunGuard disallow to run, use -many to force start.");
return 0;
}
MF_release_runguard = [&] { guard.release(); };
@@ -148,7 +148,7 @@ int main(int argc, char* argv[]) {
// icons
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
QIcon::setFallbackSearchPaths(QStringList{
- ":/nekoray",
+ ":/neko",
":/icon",
});
#endif
@@ -177,9 +177,6 @@ int main(int argc, char* argv[]) {
// Load dataStore
switch (NekoGui::coreType) {
- case NekoGui::CoreType::V2RAY:
- NekoGui::dataStore->fn = "groups/nekoray.json";
- break;
case NekoGui::CoreType::SING_BOX:
NekoGui::dataStore->fn = "groups/nekobox.json";
break;
diff --git a/nekoray/nekoray_version.txt b/nekoray/nekoray_version.txt
index 7cd4543340..9ec0f95188 100644
--- a/nekoray/nekoray_version.txt
+++ b/nekoray/nekoray_version.txt
@@ -1 +1 @@
-4.0-beta1-2024-07-02
+4.0-beta2-2024-07-05
diff --git a/nekoray/res/dashboard-notice.html b/nekoray/res/dashboard-notice.html
index e42e34bc5d..cfea1c7820 100644
--- a/nekoray/res/dashboard-notice.html
+++ b/nekoray/res/dashboard-notice.html
@@ -4,7 +4,7 @@
-
Please put your clash dashboard files to "nekoray/config/dashboard" dir.
+ Please put your clash dashboard files to "./config/dashboard" dir.
For example, you can download from the following URL.
Download Yacd-meta
diff --git a/nekoray/res/neko.qrc b/nekoray/res/neko.qrc
index 6e1c3f2693..10e97e101f 100644
--- a/nekoray/res/neko.qrc
+++ b/nekoray/res/neko.qrc
@@ -16,7 +16,6 @@
public/nekobox.png
- public/nekoray.png
neko.css
vpn/vpn-run-root.sh
vpn/sing-box-vpn.json
diff --git a/nekoray/res/nekoray.ico b/nekoray/res/nekobox.ico
similarity index 100%
rename from nekoray/res/nekoray.ico
rename to nekoray/res/nekobox.ico
diff --git a/nekoray/res/nekoray.icns b/nekoray/res/nekoray.icns
deleted file mode 100644
index 18c4bfcb66..0000000000
Binary files a/nekoray/res/nekoray.icns and /dev/null differ
diff --git a/nekoray/res/public/nekoray.png b/nekoray/res/public/nekoray.png
deleted file mode 100644
index c20aa7dd8e..0000000000
Binary files a/nekoray/res/public/nekoray.png and /dev/null differ
diff --git a/nekoray/sub/GroupUpdater.cpp b/nekoray/sub/GroupUpdater.cpp
index ef3b2277a1..6ad7eb1fac 100644
--- a/nekoray/sub/GroupUpdater.cpp
+++ b/nekoray/sub/GroupUpdater.cpp
@@ -122,14 +122,6 @@ namespace NekoGui_sub {
if (!ok) return;
}
- // Hysteria1
- if (str.startsWith("hysteria://")) {
- needFix = false;
- ent = NekoGui::ProfileManager::NewProxyEntity("hysteria");
- auto ok = ent->QUICBean()->TryParseLink(str);
- if (!ok) return;
- }
-
// Hysteria2
if (str.startsWith("hysteria2://") || str.startsWith("hy2://")) {
needFix = false;
@@ -200,7 +192,7 @@ namespace NekoGui_sub {
try {
return n.as();
} catch (const YAML::Exception &ex2) {
- ex2.what();
+ qDebug() << ex2.what();
}
qDebug() << ex.what();
return def;
@@ -413,37 +405,6 @@ namespace NekoGui_sub {
break;
}
}
- } else if (type == "hysteria") {
- auto bean = ent->QUICBean();
-
- bean->hopPort = Node2QString(proxy["ports"]);
-
- bean->allowInsecure = Node2Bool(proxy["skip-cert-verify"]);
- auto alpn = Node2QStringList(proxy["alpn"]);
- bean->caText = Node2QString(proxy["ca-str"]);
- if (!alpn.isEmpty()) bean->alpn = alpn[0];
- bean->sni = Node2QString(proxy["sni"]);
-
- auto auth_str = FIRST_OR_SECOND(Node2QString(proxy["auth_str"]), Node2QString(proxy["auth-str"]));
- auto auth = Node2QString(proxy["auth"]);
- if (!auth_str.isEmpty()) {
- bean->authPayloadType = NekoGui_fmt::QUICBean::hysteria_auth_string;
- bean->authPayload = auth_str;
- }
- if (!auth.isEmpty()) {
- bean->authPayloadType = NekoGui_fmt::QUICBean::hysteria_auth_base64;
- bean->authPayload = auth;
- }
- bean->obfsPassword = Node2QString(proxy["obfs"]);
-
- if (Node2Bool(proxy["disable_mtu_discovery"]) || Node2Bool(proxy["disable-mtu-discovery"])) bean->disableMtuDiscovery = true;
- bean->streamReceiveWindow = Node2Int(proxy["recv-window"]);
- bean->connectionReceiveWindow = Node2Int(proxy["recv-window-conn"]);
-
- auto upMbps = Node2QString(proxy["up"]).split(" ")[0].toInt();
- auto downMbps = Node2QString(proxy["down"]).split(" ")[0].toInt();
- if (upMbps > 0) bean->uploadMbps = upMbps;
- if (downMbps > 0) bean->downloadMbps = downMbps;
} else if (type == "hysteria2") {
auto bean = ent->QUICBean();
diff --git a/nekoray/translations/fa_IR.ts b/nekoray/translations/fa_IR.ts
index d757f54b73..8790d9c94e 100644
--- a/nekoray/translations/fa_IR.ts
+++ b/nekoray/translations/fa_IR.ts
@@ -857,14 +857,6 @@ This needs to be run NekoBox with administrator privileges.
Certificate
گواهی
-
- Auth Type
-
-
-
- Protocol
- پروتکل
-
Download (Mbps)
دانلود (مگابیت بر ثانیه)
@@ -897,10 +889,6 @@ This needs to be run NekoBox with administrator privileges.
SNI
-
- Auth Payload
-
-
Disable SNI
diff --git a/nekoray/translations/ru_RU.ts b/nekoray/translations/ru_RU.ts
index 395e18e865..c65759f1ab 100644
--- a/nekoray/translations/ru_RU.ts
+++ b/nekoray/translations/ru_RU.ts
@@ -856,14 +856,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun
EditQUIC
-
- Auth Type
- Тип авторизации
-
-
- Protocol
- Протокол
-
Download (Mbps)
Скорость приема (Mbps)
@@ -900,10 +892,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun
SNI
SNI
-
- Auth Payload
- Полезная нагрузка в режиме авторизации
-
Disable SNI
Отключить SNI
diff --git a/nekoray/translations/zh_CN.ts b/nekoray/translations/zh_CN.ts
index c55d4cd8b7..491d360f81 100644
--- a/nekoray/translations/zh_CN.ts
+++ b/nekoray/translations/zh_CN.ts
@@ -861,14 +861,6 @@ This needs to be run NekoBox with administrator privileges.
Certificate
证书
-
- Auth Type
- 认证类型
-
-
- Protocol
- 协议
-
Download (Mbps)
下载速度 (Mbps)
@@ -901,10 +893,6 @@ This needs to be run NekoBox with administrator privileges.
SNI
SNI
-
- Auth Payload
- 认证有效载荷
-
Generate UUID
生成 UUID
@@ -1222,10 +1210,6 @@ This needs to be run NekoBox with administrator privileges.
Testing
正在测试
-
- Http inbound is not enabled, can't set system proxy.
- HTTP 入站未启用,无法设置系统代理。
-
Update
更新
@@ -1296,10 +1280,6 @@ End: %2
Remove Unavailable
删除不可用的配置
-
- Settings
- 设置
-
New profile
手动输入配置
diff --git a/nekoray/ui/dialog_basic_settings.cpp b/nekoray/ui/dialog_basic_settings.cpp
index 853fdda672..e468e3405b 100644
--- a/nekoray/ui/dialog_basic_settings.cpp
+++ b/nekoray/ui/dialog_basic_settings.cpp
@@ -159,7 +159,6 @@ DialogBasicSettings::DialogBasicSettings(QWidget *parent)
//
CACHE.extraCore = QString2QJsonObject(NekoGui::dataStore->extraCore->core_map);
if (!CACHE.extraCore.contains("naive")) CACHE.extraCore.insert("naive", "");
- if (!CACHE.extraCore.contains("hysteria")) CACHE.extraCore.insert("hysteria", "");
if (!CACHE.extraCore.contains("hysteria2")) CACHE.extraCore.insert("hysteria2", "");
if (!CACHE.extraCore.contains("tuic")) CACHE.extraCore.insert("tuic", "");
//
diff --git a/nekoray/ui/edit/dialog_edit_profile.cpp b/nekoray/ui/edit/dialog_edit_profile.cpp
index bcdb481497..47d3faf10b 100644
--- a/nekoray/ui/edit/dialog_edit_profile.cpp
+++ b/nekoray/ui/edit/dialog_edit_profile.cpp
@@ -114,7 +114,6 @@ DialogEditProfile::DialogEditProfile(const QString &_type, int profileOrGroupId,
LOAD_TYPE("vmess")
LOAD_TYPE("vless")
LOAD_TYPE("naive")
- LOAD_TYPE("hysteria")
LOAD_TYPE("hysteria2")
LOAD_TYPE("tuic")
ui->type->addItem(tr("Custom (%1 outbound)").arg(software_core_name), "internal");
@@ -172,7 +171,7 @@ void DialogEditProfile::typeSelected(const QString &newType) {
auto _innerWidget = new EditNaive(this);
innerWidget = _innerWidget;
innerEditor = _innerWidget;
- } else if (type == "hysteria" || type == "hysteria2" || type == "tuic") {
+ } else if (type == "hysteria2" || type == "tuic") {
auto _innerWidget = new EditQUIC(this);
innerWidget = _innerWidget;
innerEditor = _innerWidget;
diff --git a/nekoray/ui/edit/edit_custom.cpp b/nekoray/ui/edit/edit_custom.cpp
index d8a669d725..be7685ded1 100644
--- a/nekoray/ui/edit/edit_custom.cpp
+++ b/nekoray/ui/edit/edit_custom.cpp
@@ -40,7 +40,6 @@ void EditCustom::onStart(std::shared_ptr _ent) {
// load known core
auto core_map = QString2QJsonObject(NekoGui::dataStore->extraCore->core_map);
for (const auto &key: core_map.keys()) {
- if (key == "naive" || key == "hysteria") continue;
ui->core->addItem(key);
}
if (preset_core == "internal") {
diff --git a/nekoray/ui/edit/edit_quic.cpp b/nekoray/ui/edit/edit_quic.cpp
index 1c7c7902ba..aa869eaea1 100644
--- a/nekoray/ui/edit/edit_quic.cpp
+++ b/nekoray/ui/edit/edit_quic.cpp
@@ -25,13 +25,10 @@ void EditQUIC::onStart(std::shared_ptr _ent) {
P_LOAD_INT(downloadMbps);
P_LOAD_BOOL(disableMtuDiscovery)
P_LOAD_STRING(obfsPassword);
- P_LOAD_STRING(authPayload);
P_LOAD_INT(streamReceiveWindow);
P_LOAD_INT(connectionReceiveWindow);
P_LOAD_BOOL(forceExternal);
- P_LOAD_COMBO_INT(hyProtocol);
- P_LOAD_COMBO_INT(authPayloadType);
P_LOAD_STRING(uuid);
P_LOAD_STRING(password);
@@ -48,7 +45,7 @@ void EditQUIC::onStart(std::shared_ptr _ent) {
P_LOAD_BOOL(allowInsecure);
P_LOAD_BOOL(disableSni);
- if (bean->proxy_type == NekoGui_fmt::QUICBean::proxy_Hysteria || bean->proxy_type == NekoGui_fmt::QUICBean::proxy_Hysteria2) {
+ if (bean->proxy_type == NekoGui_fmt::QUICBean::proxy_Hysteria2) {
ui->uuid->hide();
ui->uuid_l->hide();
ui->uuidgen->hide();
@@ -61,27 +58,14 @@ void EditQUIC::onStart(std::shared_ptr _ent) {
ui->heartbeat_l->hide();
ui->uos->hide();
- if (bean->proxy_type == NekoGui_fmt::QUICBean::proxy_Hysteria) { // hy1
- ui->password->hide();
- ui->password_l->hide();
- } else { // hy2
- ui->hyProtocol->hide();
- ui->hyProtocol_l->hide();
- ui->hyProtocol->hide();
- ui->hyProtocol_l->hide();
- ui->authPayload->hide();
- ui->authPayload_l->hide();
- ui->authPayloadType->hide();
- ui->authPayloadType_l->hide();
- ui->alpn->hide();
- ui->alpn_l->hide();
- ui->TLS->removeItem(ui->alpn_sp);
- ui->disableMtuDiscovery->hide();
- ui->connectionReceiveWindow->hide();
- ui->connectionReceiveWindow_l->hide();
- ui->streamReceiveWindow->hide();
- ui->streamReceiveWindow_l->hide();
- }
+ ui->alpn->hide();
+ ui->alpn_l->hide();
+ ui->TLS->removeItem(ui->alpn_sp);
+ ui->disableMtuDiscovery->hide();
+ ui->connectionReceiveWindow->hide();
+ ui->connectionReceiveWindow_l->hide();
+ ui->streamReceiveWindow->hide();
+ ui->streamReceiveWindow_l->hide();
} else if (bean->proxy_type == NekoGui_fmt::QUICBean::proxy_TUIC) {
ui->hopPort->hide();
ui->hopPort_l->hide();
@@ -91,15 +75,9 @@ void EditQUIC::onStart(std::shared_ptr _ent) {
ui->uploadMbps_l->hide();
ui->downloadMbps->hide();
ui->downloadMbps_l->hide();
- ui->hyProtocol->hide();
- ui->hyProtocol_l->hide();
ui->disableMtuDiscovery->hide();
ui->obfsPassword->hide();
ui->obfsPassword_l->hide();
- ui->authPayload->hide();
- ui->authPayload_l->hide();
- ui->authPayloadType->hide();
- ui->authPayloadType_l->hide();
ui->streamReceiveWindow->hide();
ui->streamReceiveWindow_l->hide();
ui->connectionReceiveWindow->hide();
@@ -113,16 +91,13 @@ bool EditQUIC::onEnd() {
P_SAVE_BOOL(forceExternal);
- // Hysteria
+ // Hysteria 2
P_SAVE_STRING(hopPort);
P_SAVE_INT(hopInterval);
P_SAVE_INT(uploadMbps);
P_SAVE_INT(downloadMbps);
- P_SAVE_COMBO_INT(hyProtocol);
P_SAVE_BOOL(disableMtuDiscovery)
P_SAVE_STRING(obfsPassword);
- P_SAVE_COMBO_INT(authPayloadType);
- P_SAVE_STRING(authPayload);
P_SAVE_INT(streamReceiveWindow);
P_SAVE_INT(connectionReceiveWindow);
diff --git a/nekoray/ui/edit/edit_quic.ui b/nekoray/ui/edit/edit_quic.ui
index 385beeabaa..3416d893bf 100644
--- a/nekoray/ui/edit/edit_quic.ui
+++ b/nekoray/ui/edit/edit_quic.ui
@@ -16,6 +16,48 @@
-
+
-
+
+
-
+
+
+ Download (Mbps)
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Hop Port
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Hop Interval (s)
+
+
+
+ -
+
+
+
+
-
-
@@ -37,20 +79,27 @@
- -
-
+
-
+
-
-
+
- Hop Port
+ Upload (Mbps)
-
-
+
+ -
+
+
+ Zero Rtt Handshake
+
+
+
-
-
@@ -81,48 +130,6 @@
- -
-
-
-
-
-
- Download (Mbps)
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Hop Interval (s)
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Upload (Mbps)
-
-
-
- -
-
-
-
-
-
-
@@ -148,14 +155,18 @@
- -
-
+
+
+ -
+
+
-
+
- Zero Rtt Handshake
+ Force use external core
- -
+
-
Requires sing-box server
@@ -165,10 +176,16 @@
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
- Force use external core
+ Disable MTU Discovery
@@ -176,93 +193,38 @@
-
-
-
+
-
+
+
+ -
Obfs Password
- -
-
-
- Protocol
-
-
-
- -
-
-
-
-
-
-
-
- QUIC
-
-
- -
-
- FakeTCP
-
-
- -
-
- wechat-video
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Disable MTU Discovery
-
-
-
-
-
- -
-
-
-
-
-
-
+
-
+
+
+ Generate UUID
+
+
-
-
-
-
- 0
- 0
-
-
+
- Auth Type
+ UUID
+ -
+
+
-
-
-
-
- 0
- 0
-
-
-
- Auth Payload
-
-
-
- -
@@ -275,44 +237,8 @@
- -
-
-
- UUID
-
-
-
- -
-
-
- Generate UUID
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
- NONE
-
-
- -
-
- STRING
-
-
- -
-
- BASE64
-
-
-
+
@@ -428,11 +354,8 @@
zeroRttHandshake
forceExternal
uos
- hyProtocol
disableMtuDiscovery
obfsPassword
- authPayloadType
- authPayload
uuid
uuidgen
password
diff --git a/openwrt-packages/luci-app-amlogic/Makefile b/openwrt-packages/luci-app-amlogic/Makefile
index c8b96c1401..3f2adbf67b 100644
--- a/openwrt-packages/luci-app-amlogic/Makefile
+++ b/openwrt-packages/luci-app-amlogic/Makefile
@@ -16,7 +16,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-amlogic
-PKG_VERSION:=3.1.236
+PKG_VERSION:=3.1.237
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0 License
diff --git a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip
index 7299c6cd5e..d4977fdc6b 100755
--- a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip
+++ b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip
@@ -206,6 +206,14 @@ case $MYDEVICE_NAME in
fi
SOC="rock5c"
;;
+ "Radxa E52C")
+ if [ -n "${CURRENT_FDTFILE}" ]; then
+ MYDTB_FDTFILE="${CURRENT_FDTFILE}"
+ else
+ MYDTB_FDTFILE="rk3588s-radxa-e52c.dtb"
+ fi
+ SOC="e52c"
+ ;;
*) #default
if [ -f "/etc/flippy-openwrt-release" ]; then
source /etc/flippy-openwrt-release 2>/dev/null
diff --git a/openwrt-packages/luci-app-filebrowser/po/cs/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/cs/filebrowser.po
new file mode 100644
index 0000000000..df69d7fd6e
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/cs/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: cs\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/da/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/da/filebrowser.po
new file mode 100644
index 0000000000..99a6069a6c
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/da/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: da\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/de/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/de/filebrowser.po
new file mode 100644
index 0000000000..5206b6de19
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/de/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: de\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/fi/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/fi/filebrowser.po
new file mode 100644
index 0000000000..3d9de26e5b
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/fi/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: fi\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/fr/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/fr/filebrowser.po
new file mode 100644
index 0000000000..15ae1de90e
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/fr/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: fr\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/hu/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/hu/filebrowser.po
new file mode 100644
index 0000000000..cc040c2aaf
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/hu/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: hu\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/it/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/it/filebrowser.po
new file mode 100644
index 0000000000..d683dd4e3f
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/it/filebrowser.po
@@ -0,0 +1,20 @@
+msgid ""
+msgstr ""
+"PO-Revision-Date: 2024-06-30 15:21+0000\n"
+"Last-Translator: moreno matassini \n"
+"Language-Team: Italian \n"
+"Language: it\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 5.7-dev\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr "esplora file"
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr "Concedi l'accesso a esplora file"
diff --git a/openwrt-packages/luci-app-filebrowser/po/ja/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/ja/filebrowser.po
new file mode 100644
index 0000000000..45a5f9cbc4
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/ja/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: ja\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/nl/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/nl/filebrowser.po
new file mode 100644
index 0000000000..68ccd43658
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/nl/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: nl\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/pt/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/pt/filebrowser.po
new file mode 100644
index 0000000000..73ec1003b4
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/pt/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: pt\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/pt_BR/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/pt_BR/filebrowser.po
new file mode 100644
index 0000000000..4cf22c4b4b
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/pt_BR/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: pt_BR\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/ro/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/ro/filebrowser.po
new file mode 100644
index 0000000000..2d00f892c2
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/ro/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: ro\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/vi/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/vi/filebrowser.po
new file mode 100644
index 0000000000..adbbe2cb61
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/vi/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: vi\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-filebrowser/po/zh_Hant/filebrowser.po b/openwrt-packages/luci-app-filebrowser/po/zh_Hant/filebrowser.po
new file mode 100644
index 0000000000..7b89b4deba
--- /dev/null
+++ b/openwrt-packages/luci-app-filebrowser/po/zh_Hant/filebrowser.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+"Language: zh_Hant\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-filebrowser/htdocs/luci-static/resources/view/system/filebrowser.js:16
+#: applications/luci-app-filebrowser/root/usr/share/luci/menu.d/luci-app-filebrowser.json:3
+msgid "File Browser"
+msgstr ""
+
+#: applications/luci-app-filebrowser/root/usr/share/rpcd/acl.d/luci-app-filebrowser.json:3
+msgid "Grant access to File Browser"
+msgstr ""
diff --git a/openwrt-packages/luci-app-quickstart/Makefile b/openwrt-packages/luci-app-quickstart/Makefile
index 2f8280206f..e0ea141268 100644
--- a/openwrt-packages/luci-app-quickstart/Makefile
+++ b/openwrt-packages/luci-app-quickstart/Makefile
@@ -9,7 +9,7 @@ LUCI_TITLE:=LuCI support for quickstart
LUCI_DEPENDS:=+quickstart +luci-app-store
LUCI_PKGARCH:=all
-PKG_VERSION:=0.8.13-1
+PKG_VERSION:=0.8.13-2
# PKG_RELEASE MUST be empty for luci.mk
PKG_RELEASE:=
diff --git a/openwrt-packages/luci-app-quickstart/luasrc/controller/quickstart.lua b/openwrt-packages/luci-app-quickstart/luasrc/controller/quickstart.lua
index 4e10d70c14..7d7a2ef840 100644
--- a/openwrt-packages/luci-app-quickstart/luasrc/controller/quickstart.lua
+++ b/openwrt-packages/luci-app-quickstart/luasrc/controller/quickstart.lua
@@ -30,12 +30,21 @@ function redirect_fallback()
luci.http.redirect(luci.dispatcher.build_url("admin", "status"))
end
+local function vue_lang()
+ local i18n = require("luci.i18n")
+ local lang = i18n.translate("quickstart_vue_lang")
+ if lang == "quickstart_vue_lang" or lang == "" then
+ lang = "en"
+ end
+ return lang
+end
+
function quickstart_index(param)
- luci.template.render("quickstart/main", {prefix=luci.dispatcher.build_url(unpack(param.index))})
+ luci.template.render("quickstart/main", {prefix=luci.dispatcher.build_url(unpack(param.index)),lang=vue_lang()})
end
function quickstart_dev(param)
- luci.template.render("quickstart/main_dev", {prefix=luci.dispatcher.build_url(unpack(param.index))})
+ luci.template.render("quickstart/main_dev", {prefix=luci.dispatcher.build_url(unpack(param.index)),lang=vue_lang()})
end
function auto_setup()
diff --git a/openwrt-packages/luci-app-quickstart/luasrc/view/quickstart/main.htm b/openwrt-packages/luci-app-quickstart/luasrc/view/quickstart/main.htm
index e0c94633a8..1421cfa99c 100644
--- a/openwrt-packages/luci-app-quickstart/luasrc/view/quickstart/main.htm
+++ b/openwrt-packages/luci-app-quickstart/luasrc/view/quickstart/main.htm
@@ -31,6 +31,8 @@
window.token = "<%=token%>";
var vue_prefix="<%=prefix%>";
window.vue_base = vue_prefix + '/';
+ window.vue_lang_data = '/luci-static/quickstart/i18n/<%=lang%>.json<%# ?v=PKG_VERSION %>';
+ window.vue_lang = '<%=lang%>';
window.quickstart_features = <%=jsonc.stringify(features)%>;
window.quickstart_configs = <%=jsonc.stringify(configs)%>;
if (location.pathname != vue_prefix && !location.pathname.startsWith(window.vue_base)) {
diff --git a/openwrt-packages/luci-app-quickstart/po/zh-cn/quickstart.po b/openwrt-packages/luci-app-quickstart/po/zh-cn/quickstart.po
index e57dfd9d5a..50f50a8713 100644
--- a/openwrt-packages/luci-app-quickstart/po/zh-cn/quickstart.po
+++ b/openwrt-packages/luci-app-quickstart/po/zh-cn/quickstart.po
@@ -9,3 +9,6 @@ msgstr "磁盘阵列"
msgid "NetworkPort"
msgstr "网口配置"
+
+msgid "quickstart_vue_lang"
+msgstr "zh-cn"
diff --git a/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj b/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj
index 81cc41f906..ad9438950c 100644
--- a/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj
+++ b/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj
@@ -9,7 +9,7 @@
-
+
all
diff --git a/v2rayn/v2rayN/v2rayN/App.xaml.cs b/v2rayn/v2rayN/v2rayN/App.xaml.cs
index d5b510b3c8..406cd3ac71 100644
--- a/v2rayn/v2rayN/v2rayN/App.xaml.cs
+++ b/v2rayn/v2rayN/v2rayN/App.xaml.cs
@@ -43,6 +43,7 @@ namespace v2rayN
Init();
Logging.LoggingEnabled(_config.guiItem.enableLog);
Logging.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}");
+ Logging.SaveLog($"{Environment.OSVersion} - {(Environment.Is64BitOperatingSystem ? 64 : 32)}");
Logging.ClearLogs();
Thread.CurrentThread.CurrentUICulture = new(_config.uiItem.currentLanguage);
diff --git a/v2rayn/v2rayN/v2rayN/Global.cs b/v2rayn/v2rayN/v2rayN/Global.cs
index 7dda772e26..ec1d0d2634 100644
--- a/v2rayn/v2rayN/v2rayN/Global.cs
+++ b/v2rayn/v2rayN/v2rayN/Global.cs
@@ -23,8 +23,7 @@ namespace v2rayN
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
public const string JuicityCoreUrl = "https://github.com/juicity/juicity/releases";
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
- public const string SingboxRulesetUrlGeosite = @"https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/{0}.srs";
- public const string SingboxRulesetUrlGeoip = @"https://raw.githubusercontent.com/Loyalsoldier/geoip/release/srs/{0}.srs";
+ public const string SingboxRulesetUrl = @"https://raw.githubusercontent.com/2dust/sing-box-rules/rule-set-{0}/{1}.srs";
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
public const string ConfigFileName = "guiNConfig.json";
diff --git a/v2rayn/v2rayN/v2rayN/Handler/CoreConfig/CoreConfigSingbox.cs b/v2rayn/v2rayN/v2rayN/Handler/CoreConfig/CoreConfigSingbox.cs
index 2a5ea1191d..d80ddeef8d 100644
--- a/v2rayn/v2rayN/v2rayN/Handler/CoreConfig/CoreConfigSingbox.cs
+++ b/v2rayn/v2rayN/v2rayN/Handler/CoreConfig/CoreConfigSingbox.cs
@@ -983,9 +983,7 @@ namespace v2rayN.Handler.CoreConfig
type = "remote",
format = "binary",
tag = item,
- url = item.StartsWith(geosite) ?
- string.Format(Global.SingboxRulesetUrlGeosite, item) :
- string.Format(Global.SingboxRulesetUrlGeoip, item.Replace($"{geoip}-", "")),
+ url = string.Format(Global.SingboxRulesetUrl, item.StartsWith(geosite) ? geosite : geoip, item),
download_detour = Global.ProxyTag
});
}
diff --git a/v2rayn/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayn/v2rayN/v2rayN/Handler/DownloadHandle.cs
index 8500e9f7b7..b2e004db81 100644
--- a/v2rayn/v2rayN/v2rayN/Handler/DownloadHandle.cs
+++ b/v2rayn/v2rayN/v2rayN/Handler/DownloadHandle.cs
@@ -297,7 +297,7 @@ namespace v2rayN.Handler
});
await client.GetAsync(url, cts.Token);
- responseTime = timer.Elapsed.Milliseconds;
+ responseTime = (int)timer.Elapsed.TotalMilliseconds;
}
catch //(Exception ex)
{
diff --git a/v2rayn/v2rayN/v2rayN/Handler/ProxySetting.cs b/v2rayn/v2rayN/v2rayN/Handler/ProxySetting.cs
index a6ce24542d..061ab88749 100644
--- a/v2rayn/v2rayN/v2rayN/Handler/ProxySetting.cs
+++ b/v2rayn/v2rayN/v2rayN/Handler/ProxySetting.cs
@@ -29,15 +29,23 @@ namespace v2rayN.Handler
/// true: one of connection is successfully updated proxy settings
public static bool SetProxy(string? strProxy, string? exceptions, int type)
{
- // set proxy for LAN
- bool result = SetConnectionProxy(null, strProxy, exceptions, type);
- // set proxy for dial up connections
- var connections = EnumerateRasEntries();
- foreach (var connection in connections)
+ try
{
- result |= SetConnectionProxy(connection, strProxy, exceptions, type);
+ // set proxy for LAN
+ bool result = SetConnectionProxy(null, strProxy, exceptions, type);
+ // set proxy for dial up connections
+ var connections = EnumerateRasEntries();
+ foreach (var connection in connections)
+ {
+ result |= SetConnectionProxy(connection, strProxy, exceptions, type);
+ }
+ return result;
+ }
+ catch (Exception ex)
+ {
+ Logging.SaveLog(ex.Message, ex);
+ return false;
}
- return result;
}
private static bool SetConnectionProxy(string? connectionName, string? strProxy, string? exceptions, int type)
diff --git a/v2rayn/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayn/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
index f89515050c..c399c7f28c 100644
--- a/v2rayn/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
+++ b/v2rayn/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
@@ -389,7 +389,7 @@ namespace v2rayN.Handler
clientSocket.EndConnect(result);
timer.Stop();
- responseTime = timer.Elapsed.Milliseconds;
+ responseTime = (int)timer.Elapsed.TotalMilliseconds;
}
catch (Exception ex)
{
diff --git a/v2rayn/v2rayN/v2rayN/Handler/SysProxyHandle.cs b/v2rayn/v2rayN/v2rayN/Handler/SysProxyHandle.cs
index 679c3aa5cd..6bd261f914 100644
--- a/v2rayn/v2rayN/v2rayN/Handler/SysProxyHandle.cs
+++ b/v2rayn/v2rayN/v2rayN/Handler/SysProxyHandle.cs
@@ -6,30 +6,7 @@ namespace v2rayN.Handler
{
public static class SysProxyHandle
{
- //private const string _userWininetConfigFile = "user-wininet.json";
-
- //private static string _queryStr;
-
- // In general, this won't change
- // format:
- //
- //
- //
- //
-
- private enum RET_ERRORS : int
- {
- RET_NO_ERROR = 0,
- INVALID_FORMAT = 1,
- NO_PERMISSION = 2,
- SYSCALL_FAILED = 3,
- NO_MEMORY = 4,
- INVAILD_OPTION_COUNT = 5,
- };
-
- static SysProxyHandle()
- {
- }
+ private const string _regPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
public static bool UpdateSysProxy(Config config, bool forceDisable)
{
@@ -65,11 +42,17 @@ namespace v2rayN.Handler
.Replace("{http_port}", port.ToString())
.Replace("{socks_port}", portSocks.ToString());
}
- ProxySetting.SetProxy(strProxy, strExceptions, 2); // set a named proxy
+ if (!ProxySetting.SetProxy(strProxy, strExceptions, 2))
+ {
+ SetProxy(strProxy, strExceptions, 2);
+ }
}
else if (type == ESysProxyType.ForcedClear)
{
- ProxySetting.UnsetProxy(); // set to no proxy
+ if (!ProxySetting.UnsetProxy())
+ {
+ UnsetProxy();
+ }
}
else if (type == ESysProxyType.Unchanged)
{
@@ -78,7 +61,10 @@ namespace v2rayN.Handler
{
PacHandler.Start(Utils.GetConfigPath(), port, portPac);
var strProxy = $"{Global.HttpProtocol}{Global.Loopback}:{portPac}/pac?t={DateTime.Now.Ticks}";
- ProxySetting.SetProxy(strProxy, "", 4); // use pac script url for auto-config proxy
+ if (!ProxySetting.SetProxy(strProxy, "", 4))
+ {
+ SetProxy(strProxy, "", 4);
+ }
}
if (type != ESysProxyType.Pac)
@@ -95,14 +81,38 @@ namespace v2rayN.Handler
public static void ResetIEProxy4WindowsShutDown()
{
- try
+ SetProxy(null, null, 1);
+ }
+
+ private static void UnsetProxy()
+ {
+ SetProxy(null, null, 1);
+ }
+
+ private static bool SetProxy(string? strProxy, string? exceptions, int type)
+ {
+ if (type == 1)
{
- //TODO To be verified
- Utils.RegWriteValue(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable", 0);
+ Utils.RegWriteValue(_regPath, "ProxyEnable", 0);
+ Utils.RegWriteValue(_regPath, "ProxyServer", string.Empty);
+ Utils.RegWriteValue(_regPath, "ProxyOverride", string.Empty);
+ Utils.RegWriteValue(_regPath, "AutoConfigURL", string.Empty);
}
- catch
+ if (type == 2)
{
+ Utils.RegWriteValue(_regPath, "ProxyEnable", 1);
+ Utils.RegWriteValue(_regPath, "ProxyServer", strProxy ?? string.Empty);
+ Utils.RegWriteValue(_regPath, "ProxyOverride", exceptions ?? string.Empty);
+ Utils.RegWriteValue(_regPath, "AutoConfigURL", string.Empty);
}
+ else if (type == 4)
+ {
+ Utils.RegWriteValue(_regPath, "ProxyEnable", 0);
+ Utils.RegWriteValue(_regPath, "ProxyServer", string.Empty);
+ Utils.RegWriteValue(_regPath, "ProxyOverride", string.Empty);
+ Utils.RegWriteValue(_regPath, "AutoConfigURL", strProxy ?? string.Empty);
+ }
+ return true;
}
}
}
\ No newline at end of file
diff --git a/v2rayn/v2rayN/v2rayN/Sample/custom_routing_black b/v2rayn/v2rayN/v2rayN/Sample/custom_routing_black
index f56cfa2c5b..05ff79d5a1 100644
--- a/v2rayn/v2rayN/v2rayN/Sample/custom_routing_black
+++ b/v2rayn/v2rayN/v2rayN/Sample/custom_routing_black
@@ -5,6 +5,11 @@
"bittorrent"
]
},
+ {
+ "outboundTag": "block",
+ "port": "443",
+ "network": "udp"
+ },
{
"outboundTag": "block",
"domain": [
@@ -15,7 +20,7 @@
"outboundTag": "proxy",
"domain": [
- "geosite:geolocation-!cn",
+ "geosite:gfw",
"geosite:greatfire"
]
},
diff --git a/v2rayn/v2rayN/v2rayN/Sample/custom_routing_global b/v2rayn/v2rayN/v2rayN/Sample/custom_routing_global
index 169d815695..55c341a4b9 100644
--- a/v2rayn/v2rayN/v2rayN/Sample/custom_routing_global
+++ b/v2rayn/v2rayN/v2rayN/Sample/custom_routing_global
@@ -1,4 +1,9 @@
[
+ {
+ "outboundTag": "block",
+ "port": "443",
+ "network": "udp"
+ },
{
"port": "0-65535",
"outboundTag": "proxy"
diff --git a/v2rayn/v2rayN/v2rayN/Sample/custom_routing_white b/v2rayn/v2rayN/v2rayN/Sample/custom_routing_white
index 7d34872f1b..1dfcea154d 100644
--- a/v2rayn/v2rayN/v2rayN/Sample/custom_routing_white
+++ b/v2rayn/v2rayN/v2rayN/Sample/custom_routing_white
@@ -6,6 +6,11 @@
"domain:example-example2.com"
]
},
+ {
+ "outboundTag": "block",
+ "port": "443",
+ "network": "udp"
+ },
{
"outboundTag": "block",
"domain": [
diff --git a/v2rayn/v2rayN/v2rayN/ViewModels/ClashProxiesViewModel.cs b/v2rayn/v2rayN/v2rayN/ViewModels/ClashProxiesViewModel.cs
index 255dc1bb5a..099063b695 100644
--- a/v2rayn/v2rayN/v2rayN/ViewModels/ClashProxiesViewModel.cs
+++ b/v2rayn/v2rayN/v2rayN/ViewModels/ClashProxiesViewModel.cs
@@ -147,6 +147,7 @@ namespace v2rayN.ViewModels
public void ProxiesReload()
{
GetClashProxies(true);
+ ProxiesDelayTest();
}
public void ProxiesClear()
diff --git a/v2rayn/v2rayN/v2rayN/v2rayN.csproj b/v2rayn/v2rayN/v2rayN/v2rayN.csproj
index 4d86368fb1..78890a2033 100644
--- a/v2rayn/v2rayN/v2rayN/v2rayN.csproj
+++ b/v2rayn/v2rayN/v2rayN/v2rayN.csproj
@@ -10,15 +10,15 @@
enable
v2rayN.ico
Copyright © 2017-2024 (GPLv3)
- 6.49
+ 6.50
7.0
-
+
-
+