From 7e85c9b558d5a2bbafbdbf6dcdc1831f4a54ac05 Mon Sep 17 00:00:00 2001 From: "github-action[bot]" Date: Wed, 7 Aug 2024 20:34:08 +0200 Subject: [PATCH] Update On Wed Aug 7 20:34:07 CEST 2024 --- .github/update.log | 1 + clash-meta/go.mod | 4 +- clash-meta/go.sum | 8 +- clash-nyanpasu/backend/Cargo.lock | 37 +- .../backend/tauri/src/enhance/merge.rs | 169 ++-- .../backend/tauri/src/enhance/mod.rs | 2 - clash-nyanpasu/backend/tauri/src/main.rs | 4 +- .../backend/tauri/src/utils/dirs.rs | 4 +- clash-nyanpasu/frontend/nyanpasu/package.json | 2 +- .../frontend/nyanpasu/src/router.ts | 20 +- clash-nyanpasu/manifest/version.json | 4 +- clash-nyanpasu/package.json | 6 +- clash-nyanpasu/pnpm-lock.yaml | 37 +- clash-nyanpasu/renovate.json | 4 + echo/hack/get-ehco.sh | 17 +- lede/package/boot/uboot-rockchip/Makefile | 14 +- ...ip-rk3399-Add-support-for-sv901-eaio.patch | 752 ++++++++++++++++++ .../armv8/base-files/etc/init.d/fanctrl | 16 +- .../boot/dts/rockchip/rk3399-sv901-eaio.dts | 739 +++++++++++++++++ lede/target/linux/rockchip/image/armv8.mk | 11 + ...ip-rk356x-add-support-for-new-boards.patch | 6 +- ...chip-rk3399-add-support-more-devices.patch | 11 +- ...ip-rk356x-add-support-for-new-boards.patch | 4 +- ...chip-rk3399-add-support-more-devices.patch | 9 +- ...chip-rk3399-add-support-more-devices.patch | 7 +- mieru/README.md | 2 +- mieru/README.zh_CN.md | 2 +- mieru/docs/client-install.md | 36 - mieru/docs/client-install.zh_CN.md | 36 - mihomo/go.mod | 4 +- mihomo/go.sum | 8 +- .../root/usr/share/passwall/app.sh | 14 +- .../root/usr/share/passwall/iptables.sh | 21 +- .../root/usr/share/passwall/nftables.sh | 33 +- .../crates/shadowsocks/src/net/sys/mod.rs | 2 +- sing-box/route/router.go | 2 +- .../luasrc/controller/bypass.lua | 14 +- .../root/etc/uci-defaults/luci-bypass | 4 +- small/v2ray-geodata/Makefile | 4 +- xray-core/README.md | 2 +- xray-core/go.mod | 6 +- xray-core/go.sum | 12 +- yass/.github/workflows/releases-flatpak.yml | 5 +- yass/CMakeLists.txt | 7 +- yass/README.md | 68 +- yass/debian/changelog | 11 + yass/debian/yass.install | 6 +- yass/flatpak/.gitignore | 2 - yass/flatpak/Makefile | 20 - ...l.tmpl => io.github.chilledheart.yass.yml} | 9 +- ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin ...ss.png => io.github.chilledheart.yass.png} | Bin yass/src/freedesktop/utils.cpp | 4 +- .../{it.gui.yass.desktop => yass.desktop} | 2 +- yass/src/gtk/yass.cpp | 2 +- yass/src/gtk/yass_window.cpp | 9 +- yass/src/gtk4/option_dialog.cpp | 2 +- yass/src/gtk4/yass.cpp | 2 +- yass/src/gtk4/yass.gresource.xml | 2 +- yass/src/gtk4/yass_window.cpp | 8 +- yass/src/gtk4/yass_window.ui | 2 +- yass/src/qt6/tray_icon.cpp | 2 +- yass/src/qt6/yass.cpp | 4 +- yass/src/qt6/yass.qrc | 2 +- yass/src/qt6/yass_window.cpp | 2 +- yass/yass.spec.in | 27 +- yesplaymusic/public/robots.txt | 2 +- yesplaymusic/src/components/CoverRow.vue | 2 +- yesplaymusic/src/components/TrackListItem.vue | 4 +- yesplaymusic/src/views/album.vue | 2 +- youtube-dl/test/test_jsinterp.py | 28 + youtube-dl/test/test_youtube_signature.py | 4 + youtube-dl/youtube_dl/extractor/youtube.py | 43 +- youtube-dl/youtube_dl/jsinterp.py | 13 +- 81 files changed, 1976 insertions(+), 410 deletions(-) create mode 100644 lede/package/boot/uboot-rockchip/patches/300-rockchip-rk3399-Add-support-for-sv901-eaio.patch create mode 100644 lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-sv901-eaio.dts delete mode 100644 yass/flatpak/Makefile rename yass/flatpak/{it.gui.yass.yml.tmpl => io.github.chilledheart.yass.yml} (74%) rename yass/src/freedesktop/icons/128x128/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/16x16/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/22x22/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/24x24/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/256x256/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/32x32/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/48x48/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/icons/512x512/apps/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/{it.gui.yass.png => io.github.chilledheart.yass.png} (100%) rename yass/src/freedesktop/{it.gui.yass.desktop => yass.desktop} (87%) diff --git a/.github/update.log b/.github/update.log index 6ce073f6df..93d358828f 100644 --- a/.github/update.log +++ b/.github/update.log @@ -726,3 +726,4 @@ Update On Sat Aug 3 20:32:05 CEST 2024 Update On Sun Aug 4 20:30:12 CEST 2024 Update On Mon Aug 5 20:34:45 CEST 2024 Update On Tue Aug 6 20:32:42 CEST 2024 +Update On Wed Aug 7 20:33:57 CEST 2024 diff --git a/clash-meta/go.mod b/clash-meta/go.mod index 57d6eea7ff..ca4c4bece4 100644 --- a/clash-meta/go.mod +++ b/clash-meta/go.mod @@ -23,8 +23,8 @@ require ( github.com/metacubex/quic-go v0.45.1-0.20240803003931-60a15f6efd94 github.com/metacubex/randv2 v0.2.0 github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 - github.com/metacubex/sing-shadowsocks v0.2.7 - github.com/metacubex/sing-shadowsocks2 v0.2.1 + github.com/metacubex/sing-shadowsocks v0.2.8 + github.com/metacubex/sing-shadowsocks2 v0.2.2 github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 github.com/metacubex/sing-wireguard v0.0.0-20240618022557-a6efaa37127a diff --git a/clash-meta/go.sum b/clash-meta/go.sum index 50dac8d203..aef02f4bab 100644 --- a/clash-meta/go.sum +++ b/clash-meta/go.sum @@ -111,10 +111,10 @@ github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297 h1:YG/JkwGPbca5rUtE github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 h1:Wr4g1HCb5Z/QIFwFiVNjO2qL+dRu25+Mdn9xtAZZ+ew= github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72/go.mod h1:g7Mxj7b7zm7YVqD975mk/hSmrb0A0G4bVvIMr2MMzn8= -github.com/metacubex/sing-shadowsocks v0.2.7 h1:9f3Dt2+71TNp0e202llA2ug5h/rkWs2EZxQ5IMpf+9g= -github.com/metacubex/sing-shadowsocks v0.2.7/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0= -github.com/metacubex/sing-shadowsocks2 v0.2.1 h1:XIZBXlazp8EEoPp1S0DViAhLkJakjQ2f+AOwwdKKNYg= -github.com/metacubex/sing-shadowsocks2 v0.2.1/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q= +github.com/metacubex/sing-shadowsocks v0.2.8 h1:wIhlaigswzjPw4hej75sEvWte3QR0+AJRafgwBHO5B4= +github.com/metacubex/sing-shadowsocks v0.2.8/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0= +github.com/metacubex/sing-shadowsocks2 v0.2.2 h1:eaf42uVx4Lr21S6MDYs0ZdTvGA0GEhDpb9no4+gdXPo= +github.com/metacubex/sing-shadowsocks2 v0.2.2/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q= github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 h1:ypfofGDZbP8p3Y4P/m74JYu7sQViesi3c8nbmT6cS0Y= github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1/go.mod h1:olbEx9yVcaw5tHTNlRamRoxmMKcvDvcVS1YLnQGzvWE= github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 h1:OAXiCosqY8xKDp3pqTW3qbrCprZ1l6WkrXSFSCwyY4I= diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index 3f925c4a60..3117f09fce 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -3946,7 +3946,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -5027,9 +5027,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7344994aaed32a9037445306859060af8f847ad1f7614fe230fd2b2cede706a9" +checksum = "dda87402f7d35680d090063de0b5b092eda60ea2d70aa6d5fae74bc5537e4f22" dependencies = [ "bitflags 2.6.0", "num-bigint", @@ -5041,15 +5041,20 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddad3c266984a2d4fea57b6ba5c084e8d52272d20aa64c58a43d5a56a25abdd7" +checksum = "e864ddc3bc3bcc12b2de8c9b9c1c51dfa1a6dd9a6f35d22e91f58753d42ae342" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] [[package]] name = "oxc_diagnostics" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad5047e1b455b485c6e5fe8e064367ad59fec544ae25e0941b511463d9f00a02" +checksum = "ad620eda707d87b229a596b87dc00f6fdde4a63717402be391ffba78265f6490" dependencies = [ "miette", "owo-colors", @@ -5059,15 +5064,15 @@ dependencies = [ [[package]] name = "oxc_index" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9489194fc5a6a630c57d70c9b8b5f5ced42a027479d498dd39f39e9ffd4d5ff3" +checksum = "db5ab95d149e6e24790ee9a37dfb4b9926ce3585e4c7da3ad8be0182081b9d30" [[package]] name = "oxc_parser" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f404606ed235f1ef9d3cb18dd4d9e0ab14c646f23f79e9f61ee1fffe004c101f" +checksum = "2af6dc7cfa5fc66fb142a594c5f3f2de4d4abb3a219ecd81e0a1a0f9c10d2d90" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -5096,9 +5101,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec22d3faf4556dc3238644e80e91e8307516f64c769df9487afbc8be59af1e83" +checksum = "0524ebb94bb558a6d20b2f00b80967162ed0221137c6e6758232145798f9836c" dependencies = [ "bitflags 2.6.0", "dashmap 6.0.1", @@ -7381,15 +7386,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand 2.1.0", "once_cell", "rustix 0.38.34", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/clash-nyanpasu/backend/tauri/src/enhance/merge.rs b/clash-nyanpasu/backend/tauri/src/enhance/merge.rs index d5c57d0dc2..8682bceeb0 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/merge.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/merge.rs @@ -64,104 +64,107 @@ pub fn use_merge(merge: Mapping, mut config: Mapping) -> ProcessOutput { tracing::trace!("merge: {:#?}", merge); let mut logs = Logs::new(); let mut map = Value::from(config); - for (key, value) in use_lowercase(merge.clone()) { - let key_str = key.as_str().unwrap_or_default(); - if key_str.starts_with("prepend__") || key_str.starts_with("prepend-") { - if !value.is_sequence() { - logs.warn(format!("prepend value is not sequence: {:#?}", key_str)); - continue; - } - let key_str = key_str.replace("prepend__", "").replace("prepend-", ""); - let field = find_field(&mut map, &key_str); - match field { - Some(field) => { - if field.is_sequence() { - merge_sequence(field, &value, false); - } else { - logs.warn(format!("field is not sequence: {:#?}", key_str)); + for (key, value) in merge.iter() { + let key_str = key.as_str().unwrap_or_default().to_lowercase(); + match key_str { + key_str if key_str.starts_with("prepend__") || key_str.starts_with("prepend-") => { + if !value.is_sequence() { + logs.warn(format!("prepend value is not sequence: {:#?}", key_str)); + continue; + } + let key_str = key_str.replace("prepend__", "").replace("prepend-", ""); + let field = find_field(&mut map, &key_str); + match field { + Some(field) => { + if field.is_sequence() { + merge_sequence(field, &value, false); + } else { + logs.warn(format!("field is not sequence: {:#?}", key_str)); + } + } + None => { + logs.warn(format!("field not found: {:#?}", key_str)); } } - None => { - logs.warn(format!("field not found: {:#?}", key_str)); - } - } - continue; - } - if key_str.starts_with("append__") || key_str.starts_with("append-") { - if !value.is_sequence() { - logs.warn(format!("append value is not sequence: {:#?}", key_str)); continue; } - let key_str = key_str.replace("append__", "").replace("append-", ""); - let field = find_field(&mut map, &key_str); - match field { - Some(field) => { - if field.is_sequence() { - merge_sequence(field, &value, true); - } else { - logs.warn(format!("field is not sequence: {:#?}", key_str)); + key_str if key_str.starts_with("append__") || key_str.starts_with("append-") => { + if !value.is_sequence() { + logs.warn(format!("append value is not sequence: {:#?}", key_str)); + continue; + } + let key_str = key_str.replace("append__", "").replace("append-", ""); + let field = find_field(&mut map, &key_str); + match field { + Some(field) => { + if field.is_sequence() { + merge_sequence(field, &value, true); + } else { + logs.warn(format!("field is not sequence: {:#?}", key_str)); + } + } + None => { + logs.warn(format!("field not found: {:#?}", key_str)); } } - None => { - logs.warn(format!("field not found: {:#?}", key_str)); - } - } - continue; - } - if key_str.starts_with("override__") { - let key_str = key_str.replace("override__", ""); - let field = find_field(&mut map, &key_str); - match field { - Some(field) => { - *field = value; - } - None => { - logs.warn(format!("field not found: {:#?}", key_str)); - } - } - continue; - } - if key_str.starts_with("filter__") { - let key_str = key_str.replace("filter__", ""); - if !value.is_string() { - logs.warn(format!("filter value is not string: {:#?}", key_str)); continue; } - let field = find_field(&mut map, &key_str); - match field { - Some(field) => { - if !field.is_sequence() { - logs.warn(format!("field is not sequence: {:#?}", key_str)); - continue; + key_str if key_str.starts_with("override__") => { + let key_str = key_str.replace("override__", ""); + let field = find_field(&mut map, &key_str); + match field { + Some(field) => { + *field = value.clone(); } - let filter = value.as_str().unwrap_or_default(); - let lua = match super::script::create_lua_context() { - Ok(lua) => lua, - Err(e) => { - logs.error(e.to_string()); + None => { + logs.warn(format!("field not found: {:#?}", key_str)); + } + } + continue; + } + key_str if key_str.starts_with("filter__") => { + let key_str = key_str.replace("filter__", ""); + if !value.is_string() { + logs.warn(format!("filter value is not string: {:#?}", key_str)); + continue; + } + let field = find_field(&mut map, &key_str); + match field { + Some(field) => { + if !field.is_sequence() { + logs.warn(format!("field is not sequence: {:#?}", key_str)); continue; } - }; + let filter = value.as_str().unwrap_or_default(); + let lua = match super::script::create_lua_context() { + Ok(lua) => lua, + Err(e) => { + logs.error(e.to_string()); + continue; + } + }; - let list = field.as_sequence_mut().unwrap(); - // apply filter to each item - list.retain(|item| { - let item = lua.to_value(item).unwrap(); - if let Err(e) = lua.globals().set("item", item) { - logs.error(e.to_string()); - return false; - } - lua.load(filter).eval::().unwrap_or(false) - }); - } - None => { - logs.warn(format!("field not found: {:#?}", key_str)); + let list = field.as_sequence_mut().unwrap(); + // apply filter to each item + list.retain(|item| { + let item = lua.to_value(item).unwrap(); + if let Err(e) = lua.globals().set("item", item) { + logs.error(e.to_string()); + return false; + } + lua.load(filter).eval::().unwrap_or(false) + }); + } + None => { + logs.warn(format!("field not found: {:#?}", key_str)); + } } + continue; + } + _ => { + override_recursive(map.as_mapping_mut().unwrap(), &key, value.clone()); } - continue; } - - override_recursive(map.as_mapping_mut().unwrap(), &key, value); } config = map.as_mapping().unwrap().clone(); tracing::trace!("merged config: {:#?}", config); diff --git a/clash-nyanpasu/backend/tauri/src/enhance/mod.rs b/clash-nyanpasu/backend/tauri/src/enhance/mod.rs index 7936fd06d2..68da8c6f05 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/mod.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/mod.rs @@ -72,7 +72,6 @@ pub async fn enhance() -> (Mapping, Vec, IndexMap) { let mut script_runner = RunnerManager::new(); for item in chains.into_iter() { // TODO: 想一个更好的办法,避免内存拷贝 - config = use_lowercase(config.clone()); // 将所有的 key 转为小写(递归) match item.data { ChainTypeWrapper::Merge(merge) => { let mut logs = vec![]; @@ -102,7 +101,6 @@ pub async fn enhance() -> (Mapping, Vec, IndexMap) { } } } - config = use_lowercase(config); // 将所有的 key 转为小写(递归) // 合并默认的config clash_config diff --git a/clash-nyanpasu/backend/tauri/src/main.rs b/clash-nyanpasu/backend/tauri/src/main.rs index 45c2634dc4..ac9bec4d62 100644 --- a/clash-nyanpasu/backend/tauri/src/main.rs +++ b/clash-nyanpasu/backend/tauri/src/main.rs @@ -82,7 +82,9 @@ fn main() -> std::io::Result<()> { // 单例检测 let single_instance_result = utils::init::check_singleton(); - + if single_instance_result.is_err() { + std::process::exit(0); + } // Use system locale as default let locale = { let locale = utils::help::get_system_locale(); diff --git a/clash-nyanpasu/backend/tauri/src/utils/dirs.rs b/clash-nyanpasu/backend/tauri/src/utils/dirs.rs index 9a0476b5f5..4b649f9d82 100644 --- a/clash-nyanpasu/backend/tauri/src/utils/dirs.rs +++ b/clash-nyanpasu/backend/tauri/src/utils/dirs.rs @@ -302,12 +302,12 @@ pub fn path_to_str(path: &PathBuf) -> Result<&str> { } pub fn get_single_instance_placeholder() -> String { - #[cfg(not(target_os = "macos"))] + #[cfg(windows)] { APP_NAME.to_string() } - #[cfg(target_os = "macos")] + #[cfg(not(windows))] { crate::utils::dirs::app_data_dir() .unwrap() diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index a862f94a8f..d2268a3c74 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -58,7 +58,7 @@ "shiki": "1.12.1", "tailwindcss-textshadow": "2.1.3", "unplugin-auto-import": "0.18.2", - "unplugin-icons": "0.19.1", + "unplugin-icons": "0.19.2", "vite": "5.3.5", "vite-plugin-monaco-editor": "1.1.3", "vite-plugin-sass-dts": "1.3.25", diff --git a/clash-nyanpasu/frontend/nyanpasu/src/router.ts b/clash-nyanpasu/frontend/nyanpasu/src/router.ts index ca3f0d47d1..2a5ee01771 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/router.ts +++ b/clash-nyanpasu/frontend/nyanpasu/src/router.ts @@ -1,7 +1,7 @@ // Generouted, changes to this file will be overriden /* eslint-disable */ -import { components, hooks, utils } from "@generouted/react-router/client"; +import { components, hooks, utils } from '@generouted/react-router/client' export type Path = | `/connections` @@ -11,16 +11,14 @@ export type Path = | `/providers` | `/proxies` | `/rules` - | `/settings`; + | `/settings` -export type Params = {}; +export type Params = { + +} -export type ModalPath = never; +export type ModalPath = never -export const { Link, Navigate } = components(); -export const { useModals, useNavigate, useParams } = hooks< - Path, - Params, - ModalPath ->(); -export const { redirect } = utils(); +export const { Link, Navigate } = components() +export const { useModals, useNavigate, useParams } = hooks() +export const { redirect } = utils() diff --git a/clash-nyanpasu/manifest/version.json b/clash-nyanpasu/manifest/version.json index e32f0e3bf2..d7b3442f20 100644 --- a/clash-nyanpasu/manifest/version.json +++ b/clash-nyanpasu/manifest/version.json @@ -2,7 +2,7 @@ "manifest_version": 1, "latest": { "mihomo": "v1.18.7", - "mihomo_alpha": "alpha-e4646fc", + "mihomo_alpha": "alpha-0306316", "clash_rs": "v0.2.0", "clash_premium": "2023-09-05-gdcc8d87" }, @@ -36,5 +36,5 @@ "darwin-x64": "clash-darwin-amd64-n{}.gz" } }, - "updated_at": "2024-08-03T22:23:45.513Z" + "updated_at": "2024-08-07T14:06:30.016Z" } diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index f9496ceb0a..4ba2628616 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -76,7 +76,7 @@ "eslint-plugin-react": "7.35.0", "eslint-plugin-react-compiler": "0.0.0-experimental-9ed098e-20240725", "eslint-plugin-react-hooks": "4.6.2", - "knip": "5.27.0", + "knip": "5.27.1", "lint-staged": "15.2.8", "npm-run-all2": "6.2.2", "postcss": "8.4.41", @@ -98,9 +98,9 @@ "tsx": "4.16.5", "typescript": "5.5.4" }, - "packageManager": "pnpm@9.6.0", + "packageManager": "pnpm@9.7.0", "engines": { - "node": "22.5.1" + "node": "22.6.0" }, "pnpm": { "overrides": { diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 5f709ee285..bbe4811823 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -98,8 +98,8 @@ importers: specifier: 4.6.2 version: 4.6.2(eslint@8.57.0) knip: - specifier: 5.27.0 - version: 5.27.0(@types/node@20.14.14)(typescript@5.5.4) + specifier: 5.27.1 + version: 5.27.1(@types/node@20.14.14)(typescript@5.5.4) lint-staged: specifier: 15.2.8 version: 15.2.8 @@ -328,8 +328,8 @@ importers: specifier: 0.18.2 version: 0.18.2(rollup@4.17.2) unplugin-icons: - specifier: 0.19.1 - version: 0.19.1(@svgr/core@8.1.0(typescript@5.5.4)) + specifier: 0.19.2 + version: 0.19.2(@svgr/core@8.1.0(typescript@5.5.4)) vite: specifier: 5.3.5 version: 5.3.5(@types/node@20.14.14)(less@4.2.0)(sass@1.77.8)(stylus@0.62.0) @@ -3220,6 +3220,10 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -4271,8 +4275,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - knip@5.27.0: - resolution: {integrity: sha512-W8+jhO7i5pXRUqOzhJGm2DT5/d9aQjyrYTCSojqJxFOvi7ku/nHKzpBO3WNf4eflJo0t3zitmUkM69g53qoZQw==} + knip@5.27.1: + resolution: {integrity: sha512-Cz1Mebby5oJNd11bEErhbu3Vnw678nrxTtwJEJjNFJ5f4OuCXGS1Uwc3Ml8B0Uh9JcolT4+5KPlw+sOsB/NBAg==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -5825,6 +5829,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} @@ -6045,8 +6053,8 @@ packages: '@vueuse/core': optional: true - unplugin-icons@0.19.1: - resolution: {integrity: sha512-a5I+wSOO5lsgc4dB2nEFaSZ4eEgQvSSR8tSR2jT69nTKiVmcK+PPU633zn2FyRf9i6vLapUiQ28GQStfzGURdg==} + unplugin-icons@0.19.2: + resolution: {integrity: sha512-QkQJ/Iz3PFr/EoiOvFUQYvqbbJZ7Vs3hObKAFHh5eywTU1PQagSNeXKGRD+JpzXSTnUNLtG0u/xEA5Ec2OeANQ==} peerDependencies: '@svgr/core': '>=7.0.0' '@svgx/core': ^1.0.1 @@ -9201,6 +9209,11 @@ snapshots: dependencies: once: 1.4.0 + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + entities@2.2.0: {} entities@4.5.0: {} @@ -10408,12 +10421,13 @@ snapshots: kind-of@6.0.3: {} - knip@5.27.0(@types/node@20.14.14)(typescript@5.5.4): + knip@5.27.1(@types/node@20.14.14)(typescript@5.5.4): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 '@types/node': 20.14.14 easy-table: 1.2.0 + enhanced-resolve: 5.17.1 fast-glob: 3.3.2 jiti: 1.21.6 js-yaml: 4.1.0 @@ -10421,7 +10435,6 @@ snapshots: picocolors: 1.0.1 picomatch: 4.0.2 pretty-ms: 9.1.0 - resolve: 1.22.8 smol-toml: 1.3.0 strip-json-comments: 5.0.1 summary: 2.1.0 @@ -12157,6 +12170,8 @@ snapshots: transitivePeerDependencies: - ts-node + tapable@2.2.1: {} + tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -12438,7 +12453,7 @@ snapshots: transitivePeerDependencies: - rollup - unplugin-icons@0.19.1(@svgr/core@8.1.0(typescript@5.5.4)): + unplugin-icons@0.19.2(@svgr/core@8.1.0(typescript@5.5.4)): dependencies: '@antfu/install-pkg': 0.3.3 '@antfu/utils': 0.7.10 diff --git a/clash-nyanpasu/renovate.json b/clash-nyanpasu/renovate.json index b4607cd160..ba318498b6 100644 --- a/clash-nyanpasu/renovate.json +++ b/clash-nyanpasu/renovate.json @@ -19,6 +19,10 @@ "rangeStrategy": "update-lockfile", "platformAutomerge": false }, + { + "groupName": "Oxc packages", + "matchPackagePatterns": ["oxc"] + }, { "groupName": "Bundler packages", "matchPackagePatterns": ["vite", "unplugin"] diff --git a/echo/hack/get-ehco.sh b/echo/hack/get-ehco.sh index d031622fdd..c96dc058d5 100755 --- a/echo/hack/get-ehco.sh +++ b/echo/hack/get-ehco.sh @@ -35,6 +35,9 @@ API_OR_CONFIG_PATH= # auto detect target arch TARGET_ARCH= +# use cloudflare proxy to download +USE_CF_PROXY= + ### # HELPER FUNCTIONS ### @@ -131,6 +134,14 @@ function _download_bin() { echo "Download URL for architecture $TARGET_ARCH not found." return 1 fi + + # replace host to `release.ehco-relay.cc` to use cf-proxy to download + if (( "$USE_CF_PROXY" == "true" )); then + download_url=$(echo "$download_url" | sed 's|https://github.com|https://release.ehco-relay.cc|') + fi + + echo "Download URL: $download_url" + # Download the file curl "${CURL_FLAGS[@]}" -o "$EXECUTABLE_INSTALL_PATH" "$download_url" echo "Downloaded and Install **ehco** to $EXECUTABLE_INSTALL_PATH" @@ -183,9 +194,10 @@ function print_help() { echo " -h, --help Show this help message and exit." echo " -v, --version Specify the version to install." echo " -i, --install Install the Ehco." - echo " -c, --config Specify the configuration file path or api endpoint." + echo " -c, --config Specify the configuration file path or api endpoint." echo " -r, --remove Remove the Ehco." echo " -u, --check-update Check And Update if an update is available." + echo " --cf-proxy Use cloudflare proxy to download/update ehco bin." } function parse_arguments() { @@ -212,6 +224,9 @@ function parse_arguments() { -u | --check-update) OPERATION="check-update" ;; + --cf-proxy) + USE_CF_PROXY="true" + ;; *) _print_error_msg "Unknown argument: $1" exit 1 diff --git a/lede/package/boot/uboot-rockchip/Makefile b/lede/package/boot/uboot-rockchip/Makefile index 54cc71af5c..94e69e950d 100644 --- a/lede/package/boot/uboot-rockchip/Makefile +++ b/lede/package/boot/uboot-rockchip/Makefile @@ -179,6 +179,17 @@ define U-Boot/xiaobao-nas-v1-rk3399 USE_RKBIN:=1 endef +define U-Boot/sv901-eaio-rk3399 + BUILD_SUBTARGET:=armv8 + NAME:=SV901 EAIO + BUILD_DEVICES:= \ + scensmart_sv901-eaio + DEPENDS:=+PACKAGE_u-boot-sv901-eaio-rk3399:arm-trusted-firmware-rk3399 + PKG_BUILD_DEPENDS:=arm-trusted-firmware-rockchip-vendor + ATF:=rk3399_bl31_v1.36.elf + USE_RKBIN:=1 +endef + # RK3566 boards define U-Boot/panther-x2-rk3566 @@ -332,7 +343,7 @@ UBOOT_TARGETS := \ seewo-sv21-rk3568 \ station-p2-rk3568 \ panther-x2-rk3566 \ - sharevdi-h3399pc-rk3399 \ + sv901-eaio-rk3399 \ guangmiao-g4c-rk3399 \ nanopi-r4s-rk3399 \ nanopi-r4se-rk3399 \ @@ -341,6 +352,7 @@ UBOOT_TARGETS := \ rockpro64-rk3399 \ rongpin-king3399-rk3399 \ rocktech-mpc1903-rk3399 \ + sharevdi-h3399pc-rk3399 \ dilusense-dlfr100-rk3399 \ xiaobao-nas-v1-rk3399 \ nanopi-r2c-rk3328 \ diff --git a/lede/package/boot/uboot-rockchip/patches/300-rockchip-rk3399-Add-support-for-sv901-eaio.patch b/lede/package/boot/uboot-rockchip/patches/300-rockchip-rk3399-Add-support-for-sv901-eaio.patch new file mode 100644 index 0000000000..fc454ac579 --- /dev/null +++ b/lede/package/boot/uboot-rockchip/patches/300-rockchip-rk3399-Add-support-for-sv901-eaio.patch @@ -0,0 +1,752 @@ +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -163,6 +163,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ + rk3399-rock-pi-4c.dtb \ + rk3399-rock960.dtb \ + rk3399-rockpro64.dtb \ ++ rk3399-sv901-eaio.dtb \ + rk3399pro-rock-pi-n10.dtb + + dtb-$(CONFIG_ROCKCHIP_RK3568) += \ +--- /dev/null ++++ b/arch/arm/dts/rk3399-sv901-eaio-u-boot.dtsi +@@ -0,0 +1,14 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++ ++#include "rk3399-u-boot.dtsi" ++#include "rk3399-sdram-lpddr4-100.dtsi" ++ ++/ { ++ chosen { ++ u-boot,spl-boot-order = "same-as-spl", &sdhci; ++ }; ++}; ++ ++&vdd_log { ++ regulator-init-microvolt = <950000>; ++}; +--- /dev/null ++++ b/arch/arm/dts/rk3399-sv901-eaio.dts +@@ -0,0 +1,638 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "dt-bindings/pwm/pwm.h" ++#include "dt-bindings/input/input.h" ++#include "rk3399.dtsi" ++#include "rk3399-opp.dtsi" ++ ++/ { ++ model = "ScenSmart SV901 EAIO"; ++ compatible = "scensmart,sv901-eaio", "rockchip,rk3399"; ++ ++ aliases { ++ mmc0 = &sdhci; ++ mmc1 = &sdio0; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ clkin_gmac: external-gmac-clock { ++ compatible = "fixed-clock"; ++ clock-frequency = <125000000>; ++ clock-output-names = "clkin_gmac"; ++ #clock-cells = <0>; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ autorepeat; ++ ++ key-power { ++ debounce-interval = <100>; ++ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO Key Power"; ++ linux,code = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwr_key_l>; ++ wakeup-source; ++ }; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk808 1>; ++ clock-names = "ext_clock"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_reg_on_h>; ++ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; ++ }; ++ ++ vcc_12v: vcc-12v { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_12v"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <12000000>; ++ regulator-max-microvolt = <12000000>; ++ }; ++ ++ /* switched by pmic_sleep */ ++ vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc1v8_s3"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ vin-supply = <&vcc_1v8>; ++ }; ++ ++ vcc3v3_pcie: vcc3v3-pcie { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_pcie"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc5v0_usb>; ++ }; ++ ++ vcc3v3_sys: vcc3v3-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc_sys>; ++ }; ++ ++ vcc5v0_usb: vcc5v0-usb { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc5v0_usb"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc_12v>; ++ }; ++ ++ vcc_sys: vcc-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc_12v>; ++ }; ++ ++ vdd_log: vdd-log { ++ compatible = "pwm-regulator"; ++ pwms = <&pwm2 0 25000 1>; ++ pwm-supply = <&vcc_sys>; ++ regulator-name = "vdd_log"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1400000>; ++ }; ++}; ++ ++&cpu_l0 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l1 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l2 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l3 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_b0 { ++ cpu-supply = <&vdd_cpu_b>; ++}; ++ ++&cpu_b1 { ++ cpu-supply = <&vdd_cpu_b>; ++}; ++ ++&emmc_phy { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ ddc-i2c-bus = <&i2c3>; ++ status = "okay"; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ clock-frequency = <400000>; ++ i2c-scl-rising-time-ns = <168>; ++ i2c-scl-falling-time-ns = <4>; ++ status = "okay"; ++ ++ rk808: pmic@1b { ++ compatible = "rockchip,rk808"; ++ reg = <0x1b>; ++ interrupt-parent = <&gpio1>; ++ interrupts = <21 IRQ_TYPE_LEVEL_LOW>; ++ #clock-cells = <1>; ++ clock-output-names = "rtc_clko_soc", "rtc_clko_wifi"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pmic_int_l>; ++ rockchip,system-power-controller; ++ wakeup-source; ++ ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; ++ vcc7-supply = <&vcc_sys>; ++ vcc8-supply = <&vcc3v3_sys>; ++ vcc9-supply = <&vcc_sys>; ++ vcc10-supply = <&vcc_sys>; ++ vcc11-supply = <&vcc_sys>; ++ vcc12-supply = <&vcc3v3_sys>; ++ vddio-supply = <&vcc_3v0>; ++ ++ regulators { ++ vdd_center: DCDC_REG1 { ++ regulator-name = "vdd_center"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <750000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_cpu_l: DCDC_REG2 { ++ regulator-name = "vdd_cpu_l"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <750000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-name = "vcc_ddr"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_1v8: DCDC_REG4 { ++ regulator-name = "vcc_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG1 { ++ regulator-name = "vcc1v8_dvp"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc2v8_dvp: LDO_REG2 { ++ regulator-name = "vcc2v8_dvp"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc1v8_pmupll: LDO_REG3 { ++ regulator-name = "vcc1v8_pmupll"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vcc_sdio: LDO_REG4 { ++ regulator-name = "vcc_sdio"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3000000>; ++ }; ++ }; ++ ++ vcca3v0_codec: LDO_REG5 { ++ regulator-name = "vcca3v0_codec"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_1v5: LDO_REG6 { ++ regulator-name = "vcc_1v5"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1500000>; ++ regulator-max-microvolt = <1500000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1500000>; ++ }; ++ }; ++ ++ vcca1v8_codec: LDO_REG7 { ++ regulator-name = "vcca1v8_codec"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_3v0: LDO_REG8 { ++ regulator-name = "vcc_3v0"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3000000>; ++ }; ++ }; ++ ++ vcc3v3_s3: SWITCH_REG1 { ++ regulator-name = "vcc3v3_s3"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_s0: SWITCH_REG2 { ++ regulator-name = "vcc3v3_s0"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ }; ++ ++ vdd_cpu_b: regulator@40 { ++ compatible = "silergy,syr827"; ++ reg = <0x40>; ++ fcs,suspend-voltage-selector = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&cpu_b_sleep>; ++ regulator-name = "vdd_cpu_b"; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1500000>; ++ regulator-ramp-delay = <1000>; ++ regulator-always-on; ++ regulator-boot-on; ++ vin-supply = <&vcc_sys>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_gpu: regulator@41 { ++ compatible = "silergy,syr828"; ++ reg = <0x41>; ++ fcs,suspend-voltage-selector = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gpu_sleep>; ++ regulator-name = "vdd_gpu"; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1500000>; ++ regulator-ramp-delay = <1000>; ++ regulator-always-on; ++ regulator-boot-on; ++ vin-supply = <&vcc_sys>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&io_domains { ++ status = "okay"; ++ ++ bt656-supply = <&vcc1v8_dvp>; ++ audio-supply = <&vcca1v8_codec>; ++ sdmmc-supply = <&vcc_sdio>; ++ gpio1830-supply = <&vcc_3v0>; ++}; ++ ++&pcie_phy { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ ep-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>; ++ num-lanes = <4>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie_clkreqn_cpm>; ++ vpcie3v3-supply = <&vcc3v3_pcie>; ++ status = "okay"; ++}; ++ ++&pmu_io_domains { ++ pmu1830-supply = <&vcc1v8_pmupll>; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ buttons { ++ pwr_key_l: pwr-key-l { ++ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pmic { ++ cpu_b_sleep: cpu-b-sleep { ++ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ ++ gpu_sleep: gpu-sleep { ++ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ sdio-pwrseq { ++ wifi_reg_on_h: wifi-reg-on-h { ++ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ wifi { ++ wifi_host_wake_l: wifi-host-wake-l { ++ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ bluetooth { ++ bt_reg_on_h: bt-enable-h { ++ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_host_wake: bt-host-wake { ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_wake_l: bt-wake-l { ++ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pwm2 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcca1v8_s3>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ status = "okay"; ++}; ++ ++&sdio0 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ clock-frequency = <50000000>; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; ++ sd-uhs-sdr104; ++ status = "okay"; ++ ++ wifi@1 { ++ compatible = "brcm,bcm4329-fmac"; ++ reg = <1>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ interrupt-names = "host-wake"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_host_wake_l>; ++ }; ++}; ++ ++&tcphy0 { ++ status = "okay"; ++}; ++ ++&tcphy1 { ++ status = "okay"; ++}; ++ ++&tsadc { ++ rockchip,hw-tshut-mode = <1>; ++ rockchip,hw-tshut-polarity = <1>; ++ status = "okay"; ++}; ++ ++&u2phy0 { ++ status = "okay"; ++}; ++ ++&u2phy0_host { ++ phy-supply = <&vcc5v0_usb>; ++ status = "okay"; ++}; ++ ++&u2phy0_otg { ++ phy-supply = <&vcc5v0_usb>; ++ status = "okay"; ++}; ++ ++&u2phy1 { ++ status = "okay"; ++}; ++ ++&u2phy1_host { ++ phy-supply = <&vcc5v0_usb>; ++ status = "okay"; ++}; ++ ++&u2phy1_otg { ++ phy-supply = <&vcc5v0_usb>; ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "brcm,bcm43438-bt"; ++ clocks = <&rk808 1>; ++ clock-names = "lpo"; ++ device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; ++ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; ++ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&bt_host_wake &bt_wake_l &bt_reg_on_h>; ++ vbat-supply = <&vcc3v3_sys>; ++ vddio-supply = <&vcc_1v8>; ++ }; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb_host0_ehci { ++ status = "okay"; ++}; ++ ++&usb_host0_ohci { ++ status = "okay"; ++}; ++ ++&usb_host1_ehci { ++ status = "okay"; ++}; ++ ++&usb_host1_ohci { ++ status = "okay"; ++}; ++ ++&usbdrd3_0 { ++ status = "okay"; ++}; ++ ++&usbdrd_dwc3_0 { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usbdrd3_1 { ++ status = "okay"; ++}; ++ ++&usbdrd_dwc3_1 { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&vopb { ++ status = "okay"; ++}; ++ ++&vopb_mmu { ++ status = "okay"; ++}; ++ ++&vopl { ++ status = "okay"; ++}; ++ ++&vopl_mmu { ++ status = "okay"; ++}; +--- /dev/null ++++ b/configs/sv901-eaio-rk3399_defconfig +@@ -0,0 +1,81 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_COUNTER_FREQUENCY=24000000 ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_TEXT_BASE=0x00200000 ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 ++CONFIG_SF_DEFAULT_SPEED=20000000 ++CONFIG_ENV_OFFSET=0x3F8000 ++CONFIG_DEFAULT_DEVICE_TREE="rk3399-sv901-eaio" ++CONFIG_DM_RESET=y ++CONFIG_ROCKCHIP_RK3399=y ++CONFIG_TARGET_EVB_RK3399=y ++CONFIG_SPL_STACK=0x400000 ++CONFIG_DEBUG_UART_BASE=0xFF1A0000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SYS_LOAD_ADDR=0x800800 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-sv901-eaio.dtb" ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_MISC_INIT_R=y ++CONFIG_SPL_MAX_SIZE=0x2e000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x400000 ++CONFIG_SPL_BSS_MAX_SIZE=0x2000 ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 ++CONFIG_TPL=y ++CONFIG_CMD_BOOTZ=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++# CONFIG_CMD_SETEXPR is not set ++CONFIG_CMD_TIME=y ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=y ++CONFIG_ROCKCHIP_EFUSE=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_ETH_DESIGNWARE=y ++CONFIG_GMAC_ROCKCHIP=y ++CONFIG_NVME_PCI=y ++CONFIG_PMIC_RK8XX=y ++CONFIG_REGULATOR_PWM=y ++CONFIG_REGULATOR_RK8XX=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_RAM_ROCKCHIP_LPDDR4=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_SYSRESET=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_GENERIC=y ++CONFIG_USB_HOST_ETHER=y ++CONFIG_USB_ETHER_ASIX=y ++CONFIG_USB_ETHER_ASIX88179=y ++CONFIG_USB_ETHER_MCS7830=y ++CONFIG_USB_ETHER_RTL8152=y ++CONFIG_USB_ETHER_SMSC95XX=y ++CONFIG_SPL_TINY_MEMSET=y ++CONFIG_ERRNO_STR=y diff --git a/lede/target/linux/rockchip/armv8/base-files/etc/init.d/fanctrl b/lede/target/linux/rockchip/armv8/base-files/etc/init.d/fanctrl index dac20c934d..7adcd180e8 100755 --- a/lede/target/linux/rockchip/armv8/base-files/etc/init.d/fanctrl +++ b/lede/target/linux/rockchip/armv8/base-files/etc/init.d/fanctrl @@ -1,15 +1,9 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2006-2011 OpenWrt.org -START=99 +START=18 -. /lib/functions/system.sh - -boot() { - case $(board_name) in - rongpin,king3399) - echo 50 > /sys/class/gpio/export && echo high > /sys/class/gpio/gpio50/direction - echo 56 > /sys/class/gpio/export && echo high > /sys/class/gpio/gpio56/direction - ;; - esac +start() { + [ ! -f /etc/config/wireless ] && { + /sbin/wifi config + } } diff --git a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-sv901-eaio.dts b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-sv901-eaio.dts new file mode 100644 index 0000000000..0f7db7214e --- /dev/null +++ b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-sv901-eaio.dts @@ -0,0 +1,739 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +/dts-v1/; + +#include "dt-bindings/input/input.h" +#include "rk3399.dtsi" +#include "rk3399-opp.dtsi" + +/ { + model = "ScenSmart SV901 EAIO"; + compatible = "scensmart,sv901-eaio", "rockchip,rk3399"; + + aliases { + ethernet0 = &gmac; + mmc0 = &sdhci; + mmc1 = &sdio0; + }; + + chosen { + stdout-path = "serial2:1500000n8"; + }; + + gpio-keys { + compatible = "gpio-keys"; + autorepeat; + + key-power { + debounce-interval = <100>; + gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; + label = "GPIO Key Power"; + linux,code = ; + pinctrl-names = "default"; + pinctrl-0 = <&pwr_key_l>; + wakeup-source; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&user_led1>, <&user_led2>; + + user-led1 { + label = "blue:user1"; + gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + user-led2 { + label = "red:user2"; + gpios = <&gpio1 RK_PC7 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + }; + + sdio_pwrseq: sdio-pwrseq { + compatible = "mmc-pwrseq-simple"; + clocks = <&rk808 1>; + clock-names = "ext_clock"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_reg_on_h>; + reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; + }; + + vcc_12v: vcc-12v { + compatible = "regulator-fixed"; + regulator-name = "vcc_12v"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + }; + + /* switched by pmic_sleep */ + vcc1v8_s3: vcc1v8-s3 { + compatible = "regulator-fixed"; + regulator-name = "vcc1v8_s3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc_1v8>; + }; + + vcc3v3_pcie: vcc3v3-pcie { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3_pcie"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc5v0_usb>; + }; + + vcc3v3_sys: vcc3v3-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc_sys>; + }; + + vcc5v0_usb: vcc5v0-usb { + compatible = "regulator-fixed"; + regulator-name = "vcc5v0_usb"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&vcc_12v>; + }; + + /* Actually supplied by vcc_1v8 */ + vcca0v9_s3: vcca0v9-s3 { + compatible = "regulator-fixed"; + regulator-name = "vcca0v9_s3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + vin-supply = <&vcc1v8_s3>; + }; + + /* Actually supplied by vcc3v3_sys */ + vcca1v8_s3: vcca1v8-s3 { + compatible = "regulator-fixed"; + regulator-name = "vcca1v8_s3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc1v8_s3>; + }; + + vcc_sys: vcc-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&vcc_12v>; + }; + + vdd_log: vdd-log { + compatible = "pwm-regulator"; + pwms = <&pwm2 0 25000 1>; + pwm-supply = <&vcc_sys>; + regulator-name = "vdd_log"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1400000>; + }; + + rtl8367s { + compatible = "realtek,rtl8367b"; + realtek,extif2 = <1 0 1 1 1 1 1 1 2>; + mii-bus = <&mdio>; + phy-id = <29>; + }; +}; + +&cpu_l0 { + cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_l1 { + cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_l2 { + cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_l3 { + cpu-supply = <&vdd_cpu_l>; +}; + +&cpu_b0 { + cpu-supply = <&vdd_cpu_b>; +}; + +&cpu_b1 { + cpu-supply = <&vdd_cpu_b>; +}; + +&emmc_phy { + status = "okay"; +}; + +&gmac { + assigned-clocks = <&cru SCLK_RMII_SRC>; + assigned-clock-parents = <&cru SCLK_MAC>; + assigned-clock-rates = <125000000>; + clock_in_out = "input"; + phy-mode = "rgmii"; + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; + snps,reset-active-low; + snps,reset-delays-us = <0 10000 10000>; + snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; + tx_delay = <0x28>; + rx_delay = <0x11>; + status = "okay"; + + mdio: mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + }; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +&gpu { + mali-supply = <&vdd_gpu>; + status = "okay"; +}; + +&hdmi { + avdd-0v9-supply = <&vcca0v9_s3>; + avdd-1v8-supply = <&vcca1v8_s3>; + ddc-i2c-bus = <&i2c3>; + pinctrl-names = "default"; + pinctrl-0 = <&hdmi_cec>; + status = "okay"; +}; + +&hdmi_sound { + status = "okay"; +}; + +&i2c0 { + clock-frequency = <400000>; + i2c-scl-rising-time-ns = <168>; + i2c-scl-falling-time-ns = <4>; + status = "okay"; + + rk808: pmic@1b { + compatible = "rockchip,rk808"; + reg = <0x1b>; + interrupt-parent = <&gpio1>; + interrupts = <21 IRQ_TYPE_LEVEL_LOW>; + #clock-cells = <1>; + clock-output-names = "rtc_clko_soc", "rtc_clko_wifi"; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_int_l>; + rockchip,system-power-controller; + wakeup-source; + + vcc1-supply = <&vcc_sys>; + vcc2-supply = <&vcc_sys>; + vcc3-supply = <&vcc_sys>; + vcc4-supply = <&vcc_sys>; + vcc6-supply = <&vcc_sys>; + vcc7-supply = <&vcc_sys>; + vcc8-supply = <&vcc3v3_sys>; + vcc9-supply = <&vcc_sys>; + vcc10-supply = <&vcc_sys>; + vcc11-supply = <&vcc_sys>; + vcc12-supply = <&vcc3v3_sys>; + vddio-supply = <&vcc_3v0>; + + regulators { + vdd_center: DCDC_REG1 { + regulator-name = "vdd_center"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <1350000>; + regulator-ramp-delay = <6001>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_cpu_l: DCDC_REG2 { + regulator-name = "vdd_cpu_l"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <1350000>; + regulator-ramp-delay = <6001>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc_ddr: DCDC_REG3 { + regulator-name = "vcc_ddr"; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-on-in-suspend; + }; + }; + + vcc_1v8: DCDC_REG4 { + regulator-name = "vcc_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vcc1v8_dvp: LDO_REG1 { + regulator-name = "vcc1v8_dvp"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc2v8_dvp: LDO_REG2 { + regulator-name = "vcc2v8_dvp"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc1v8_pmupll: LDO_REG3 { + regulator-name = "vcc1v8_pmupll"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1800000>; + }; + }; + + vcc_sdio: LDO_REG4 { + regulator-name = "vcc_sdio"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3000000>; + }; + }; + + vcca3v0_codec: LDO_REG5 { + regulator-name = "vcca3v0_codec"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc_1v5: LDO_REG6 { + regulator-name = "vcc_1v5"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <1500000>; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <1500000>; + }; + }; + + vcca1v8_codec: LDO_REG7 { + regulator-name = "vcca1v8_codec"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc_3v0: LDO_REG8 { + regulator-name = "vcc_3v0"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + + regulator-state-mem { + regulator-on-in-suspend; + regulator-suspend-microvolt = <3000000>; + }; + }; + + vcc3v3_s3: SWITCH_REG1 { + regulator-name = "vcc3v3_s3"; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vcc3v3_s0: SWITCH_REG2 { + regulator-name = "vcc3v3_s0"; + regulator-always-on; + regulator-boot-on; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + }; + }; + + vdd_cpu_b: regulator@40 { + compatible = "silergy,syr827"; + reg = <0x40>; + fcs,suspend-voltage-selector = <1>; + pinctrl-names = "default"; + pinctrl-0 = <&cpu_b_sleep>; + regulator-name = "vdd_cpu_b"; + regulator-min-microvolt = <712500>; + regulator-max-microvolt = <1500000>; + regulator-ramp-delay = <1000>; + regulator-always-on; + regulator-boot-on; + vin-supply = <&vcc_sys>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + vdd_gpu: regulator@41 { + compatible = "silergy,syr828"; + reg = <0x41>; + fcs,suspend-voltage-selector = <1>; + pinctrl-names = "default"; + pinctrl-0 = <&gpu_sleep>; + regulator-name = "vdd_gpu"; + regulator-min-microvolt = <712500>; + regulator-max-microvolt = <1500000>; + regulator-ramp-delay = <1000>; + regulator-always-on; + regulator-boot-on; + vin-supply = <&vcc_sys>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + hym8563: rtc@51 { + compatible = "haoyu,hym8563"; + reg = <0x51>; + #clock-cells = <0>; + clock-output-names = "rtcic_32kout"; + wakeup-source; + }; +}; + +&i2c3 { + i2c-scl-rising-time-ns = <450>; + i2c-scl-falling-time-ns = <15>; + status = "okay"; +}; + +&io_domains { + status = "okay"; + + bt656-supply = <&vcc1v8_dvp>; + audio-supply = <&vcca1v8_codec>; + sdmmc-supply = <&vcc_sdio>; + gpio1830-supply = <&vcc_3v0>; +}; + +&pcie_phy { + status = "okay"; +}; + +&pcie0 { + ep-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>; + num-lanes = <4>; + pinctrl-names = "default"; + pinctrl-0 = <&pcie_clkreqn_cpm>; + vpcie3v3-supply = <&vcc3v3_pcie>; + status = "okay"; +}; + +&pmu_io_domains { + pmu1830-supply = <&vcc1v8_pmupll>; + status = "okay"; +}; + +&pinctrl { + buttons { + pwr_key_l: pwr-key-l { + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + leds { + user_led1: user-led1 { + rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + user_led2: user-led2 { + rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + pmic { + cpu_b_sleep: cpu-b-sleep { + rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; + }; + + gpu_sleep: gpu-sleep { + rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; + }; + + pmic_int_l: pmic-int-l { + rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + + sdio-pwrseq { + wifi_reg_on_h: wifi-reg-on-h { + rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + wifi { + wifi_host_wake_l: wifi-host-wake-l { + rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + bluetooth { + bt_reg_on_h: bt-enable-h { + rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + bt_host_wake: bt-host-wake { + rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + bt_wake_l: bt-wake-l { + rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +&pwm0 { + status = "okay"; +}; + +&pwm2 { + status = "okay"; +}; + +&saradc { + vref-supply = <&vcca1v8_s3>; + status = "okay"; +}; + +&sdhci { + bus-width = <8>; + mmc-hs200-1_8v; + non-removable; + status = "okay"; +}; + +&sdio0 { + #address-cells = <1>; + #size-cells = <0>; + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + clock-frequency = <50000000>; + keep-power-in-suspend; + mmc-pwrseq = <&sdio_pwrseq>; + non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; + sd-uhs-sdr104; + status = "okay"; + + wifi@1 { + compatible = "brcm,bcm4329-fmac"; + reg = <1>; + interrupt-parent = <&gpio0>; + interrupts = ; + interrupt-names = "host-wake"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_host_wake_l>; + }; +}; + +&tcphy0 { + status = "okay"; +}; + +&tcphy1 { + status = "okay"; +}; + +&tsadc { + rockchip,hw-tshut-mode = <1>; + rockchip,hw-tshut-polarity = <1>; + status = "okay"; +}; + +&u2phy0 { + status = "okay"; +}; + +&u2phy0_host { + phy-supply = <&vcc5v0_usb>; + status = "okay"; +}; + +&u2phy0_otg { + phy-supply = <&vcc5v0_usb>; + status = "okay"; +}; + +&u2phy1 { + status = "okay"; +}; + +&u2phy1_host { + phy-supply = <&vcc5v0_usb>; + status = "okay"; +}; + +&u2phy1_otg { + phy-supply = <&vcc5v0_usb>; + status = "okay"; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; + status = "okay"; + + bluetooth { + compatible = "brcm,bcm43438-bt"; + clocks = <&rk808 1>; + clock-names = "lpo"; + device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; + host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; + shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&bt_host_wake &bt_wake_l &bt_reg_on_h>; + vbat-supply = <&vcc3v3_sys>; + vddio-supply = <&vcc_1v8>; + }; +}; + +&uart2 { + status = "okay"; +}; + +&usb_host0_ehci { + status = "okay"; +}; + +&usb_host0_ohci { + status = "okay"; +}; + +&usb_host1_ehci { + status = "okay"; +}; + +&usb_host1_ohci { + status = "okay"; +}; + +&usbdrd3_0 { + status = "okay"; +}; + +&usbdrd_dwc3_0 { + dr_mode = "host"; + status = "okay"; +}; + +&usbdrd3_1 { + status = "okay"; +}; + +&usbdrd_dwc3_1 { + dr_mode = "host"; + status = "okay"; +}; + +&vopb { + status = "okay"; +}; + +&vopb_mmu { + status = "okay"; +}; + +&vopl { + status = "okay"; +}; + +&vopl_mmu { + status = "okay"; +}; diff --git a/lede/target/linux/rockchip/image/armv8.mk b/lede/target/linux/rockchip/image/armv8.mk index 237e89fcae..cffe4c0ed6 100644 --- a/lede/target/linux/rockchip/image/armv8.mk +++ b/lede/target/linux/rockchip/image/armv8.mk @@ -272,6 +272,17 @@ define Device/rocktech_mpc1903 endef TARGET_DEVICES += rocktech_mpc1903 +define Device/scensmart_sv901-eaio + DEVICE_VENDOR := ScenSmart + DEVICE_MODEL := SV901 EAIO + SOC := rk3399 + UBOOT_DEVICE_NAME := sv901-eaio-rk3399 + IMAGE/sysupgrade.img.gz := boot-common | boot-script | pine64-bin | gzip | append-metadata + DEVICE_PACKAGES := brcmfmac-nvram-4356-sdio cypress-firmware-4356-sdio kmod-brcmfmac \ + kmod-switch-rtl8367b swconfig wpad -urngd +endef +TARGET_DEVICES += scensmart_sv901-eaio + define Device/seewo_sv21-rk3568 DEVICE_VENDOR := Seewo DEVICE_MODEL := sv21 diff --git a/lede/target/linux/rockchip/patches-5.15/210-rockchip-rk356x-add-support-for-new-boards.patch b/lede/target/linux/rockchip/patches-5.15/210-rockchip-rk356x-add-support-for-new-boards.patch index ed01e540d3..6350980236 100644 --- a/lede/target/linux/rockchip/patches-5.15/210-rockchip-rk356x-add-support-for-new-boards.patch +++ b/lede/target/linux/rockchip/patches-5.15/210-rockchip-rk356x-add-support-for-new-boards.patch @@ -4,7 +4,9 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399pro-rock-pi-n10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-panther-x2.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-seewo-sv21.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mrkaio-m68s.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mrkaio-m68s-plus.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb @@ -13,11 +15,9 @@ +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-opc-h66k.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-opc-h68k.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-opc-h69k.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rsb4810.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-r66s.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-r68s.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rsb4810.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-seewo-sv21.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-t68m.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-panther-x2.dtb diff --git a/lede/target/linux/rockchip/patches-5.15/211-rockchip-rk3399-add-support-more-devices.patch b/lede/target/linux/rockchip/patches-5.15/211-rockchip-rk3399-add-support-more-devices.patch index f062562923..9bbbf907d6 100644 --- a/lede/target/linux/rockchip/patches-5.15/211-rockchip-rk3399-add-support-more-devices.patch +++ b/lede/target/linux/rockchip/patches-5.15/211-rockchip-rk3399-add-support-more-devices.patch @@ -1,14 +1,15 @@ --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -58,6 +58,11 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro +@@ -58,6 +58,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399pro-rock-pi-n10.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-king3399.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-mpc1903.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-h3399pc.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-dlfr100.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-xiaobao-nas-v1.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sv901-eaio.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-dlfr100.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-h3399pc.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-mpc1903.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-king3399.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mrkaio-m68s.dtb diff --git a/lede/target/linux/rockchip/patches-6.1/210-rockchip-rk356x-add-support-for-new-boards.patch b/lede/target/linux/rockchip/patches-6.1/210-rockchip-rk356x-add-support-for-new-boards.patch index 6caa7a34a9..b875682347 100644 --- a/lede/target/linux/rockchip/patches-6.1/210-rockchip-rk356x-add-support-for-new-boards.patch +++ b/lede/target/linux/rockchip/patches-6.1/210-rockchip-rk356x-add-support-for-new-boards.patch @@ -4,6 +4,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-seewo-sv21.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-panther-x2.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-mrkaio-m68s.dtb @@ -17,6 +19,4 @@ +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-r68s.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rsb4810.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-seewo-sv21.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-t68m.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-panther-x2.dtb diff --git a/lede/target/linux/rockchip/patches-6.1/211-rockchip-rk3399-add-support-more-devices.patch b/lede/target/linux/rockchip/patches-6.1/211-rockchip-rk3399-add-support-more-devices.patch index 104248e767..0a107dd5ac 100644 --- a/lede/target/linux/rockchip/patches-6.1/211-rockchip-rk3399-add-support-more-devices.patch +++ b/lede/target/linux/rockchip/patches-6.1/211-rockchip-rk3399-add-support-more-devices.patch @@ -1,13 +1,14 @@ --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -62,6 +62,11 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro +@@ -62,6 +62,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b-plus.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4c.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-king3399.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-mpc1903.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-h3399pc.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-dlfr100.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-h3399pc.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-mpc1903.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-king3399.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sv901-eaio.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-xiaobao-nas-v1.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock960.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64-v2.dtb diff --git a/lede/target/linux/rockchip/patches-6.6/211-rockchip-rk3399-add-support-more-devices.patch b/lede/target/linux/rockchip/patches-6.6/211-rockchip-rk3399-add-support-more-devices.patch index 3765f3d69e..10b0bfe861 100644 --- a/lede/target/linux/rockchip/patches-6.6/211-rockchip-rk3399-add-support-more-devices.patch +++ b/lede/target/linux/rockchip/patches-6.6/211-rockchip-rk3399-add-support-more-devices.patch @@ -1,13 +1,14 @@ --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -68,6 +68,11 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro +@@ -68,6 +68,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ro dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b-plus.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4c.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-king3399.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-h3399pc.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-dlfr100.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-h3399pc.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-mpc1903.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-king3399.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sv901-eaio.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-xiaobao-nas-v1.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock960.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64-v2.dtb diff --git a/mieru/README.md b/mieru/README.md index 2bdc990f2c..21f96fb029 100644 --- a/mieru/README.md +++ b/mieru/README.md @@ -29,7 +29,7 @@ For an explanation of the mieru protocol, see [mieru Proxy Protocol](./docs/prot 8. mieru provides socks5, HTTP and HTTPS proxy. 9. The client software supports Windows, Mac OS, Linux and Android. For Android users, please use [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) version 1.3.1 or above, and install [mieru plugin](https://github.com/enfein/NekoBoxPlugins). 10. The server software supports socks5 outbound (proxy chain). -11. If you need advanced features like global proxy or customized routing rules, you can use mieru as the backend of a proxy platform such as clash. +11. If you need advanced features like global proxy or customized routing rules, you can use mieru as the backend of a proxy platform such as [Xray](https://github.com/XTLS/Xray-core) and [sing-box](https://github.com/SagerNet/sing-box). ## User Guide diff --git a/mieru/README.zh_CN.md b/mieru/README.zh_CN.md index c9c3012c33..c78ceec621 100644 --- a/mieru/README.zh_CN.md +++ b/mieru/README.zh_CN.md @@ -27,7 +27,7 @@ mieru 的翻墙原理与 shadowsocks / v2ray 等软件类似,在客户端和 8. mieru 提供 socks5, HTTP 和 HTTPS 代理。 9. 客户端软件支持 Windows, Mac OS, Linux 和 Android 系统。Android 用户请使用 [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) 1.3.1 及以上版本,并安装 [mieru 插件](https://github.com/enfein/NekoBoxPlugins)。 10. 服务器软件支持 socks5 出站(链式代理)。 -11. 如果需要全局代理或自定义路由规则等高级功能,可以将 mieru 作为 clash 等代理平台的后端。 +11. 如果需要全局代理或自定义路由规则等高级功能,可以将 mieru 作为 [Xray](https://github.com/XTLS/Xray-core) 和 [sing-box](https://github.com/SagerNet/sing-box) 等代理平台的后端。 ## 使用教程 diff --git a/mieru/docs/client-install.md b/mieru/docs/client-install.md index d08dd0c810..bb38470e7b 100644 --- a/mieru/docs/client-install.md +++ b/mieru/docs/client-install.md @@ -124,39 +124,3 @@ Chrome / Firefox and other browsers can use socks5 proxy to access blocked websi mieru doesn't use socks5 authentication. For configuring the socks5 proxy in the Tor browser, see the [Security Guide](./security.md). - -If you need to forward all application traffic through a proxy, or customize routing rules, use a proxy platform such as clash, and use mieru as the backend of the proxy platform. An example of clash configuration is provided below. - -## Configuring clash - -In this example, clash listens to port 7890. If the traffic accesses the LAN or if the destination address is in China, then no proxy is used. In other cases, the mieru proxy is used. - -```yaml -mixed-port: 7890 - -proxies: - - name: mieru - type: socks5 - server: 127.0.0.1 - port: 1080 - udp: true - -dns: - enable: true - ipv6: true - enhanced-mode: fake-ip - fake-ip-range: 198.18.0.1/16 - nameserver: - - https://1.1.1.1/dns-query - - 8.8.8.8 - -rules: - - DOMAIN-KEYWORD,google,mieru - - DOMAIN-KEYWORD,gmail,mieru - - DOMAIN-KEYWORD,youtube,mieru - - IP-CIDR,127.0.0.0/8,DIRECT - - IP-CIDR,172.16.0.0/12,DIRECT - - IP-CIDR,192.168.0.0/16,DIRECT - - GEOIP,CN,DIRECT - - MATCH,mieru -``` diff --git a/mieru/docs/client-install.zh_CN.md b/mieru/docs/client-install.zh_CN.md index 5940a85a59..34ec8a122d 100644 --- a/mieru/docs/client-install.zh_CN.md +++ b/mieru/docs/client-install.zh_CN.md @@ -124,39 +124,3 @@ Chrome / Firefox 等浏览器可以通过安装插件,使用 socks5 代理访 mieru 不使用 socks5 用户名和密码进行身份验证。 关于在 Tor 浏览器中配置 socks5 代理,参见[翻墙安全指南](./security.zh_CN.md)。 - -如果需要通过代理转发所有应用程序的流量,或者自定义路由规则,请使用 clash 等代理平台,将 mieru 作为代理平台的后端。下面提供了 clash 配置的例子。 - -## 配置 clash - -在下面的例子中,clash 监听 7890 端口。如果流量访问 LAN 或者目标地址在中国,则不使用代理。其他情况下使用 mieru 代理。 - -```yaml -mixed-port: 7890 - -proxies: - - name: mieru - type: socks5 - server: 127.0.0.1 - port: 1080 - udp: true - -dns: - enable: true - ipv6: true - enhanced-mode: fake-ip - fake-ip-range: 198.18.0.1/16 - nameserver: - - https://1.1.1.1/dns-query - - 8.8.8.8 - -rules: - - DOMAIN-KEYWORD,google,mieru - - DOMAIN-KEYWORD,gmail,mieru - - DOMAIN-KEYWORD,youtube,mieru - - IP-CIDR,127.0.0.0/8,DIRECT - - IP-CIDR,172.16.0.0/12,DIRECT - - IP-CIDR,192.168.0.0/16,DIRECT - - GEOIP,CN,DIRECT - - MATCH,mieru -``` diff --git a/mihomo/go.mod b/mihomo/go.mod index 57d6eea7ff..ca4c4bece4 100644 --- a/mihomo/go.mod +++ b/mihomo/go.mod @@ -23,8 +23,8 @@ require ( github.com/metacubex/quic-go v0.45.1-0.20240803003931-60a15f6efd94 github.com/metacubex/randv2 v0.2.0 github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 - github.com/metacubex/sing-shadowsocks v0.2.7 - github.com/metacubex/sing-shadowsocks2 v0.2.1 + github.com/metacubex/sing-shadowsocks v0.2.8 + github.com/metacubex/sing-shadowsocks2 v0.2.2 github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 github.com/metacubex/sing-wireguard v0.0.0-20240618022557-a6efaa37127a diff --git a/mihomo/go.sum b/mihomo/go.sum index 50dac8d203..aef02f4bab 100644 --- a/mihomo/go.sum +++ b/mihomo/go.sum @@ -111,10 +111,10 @@ github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297 h1:YG/JkwGPbca5rUtE github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 h1:Wr4g1HCb5Z/QIFwFiVNjO2qL+dRu25+Mdn9xtAZZ+ew= github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72/go.mod h1:g7Mxj7b7zm7YVqD975mk/hSmrb0A0G4bVvIMr2MMzn8= -github.com/metacubex/sing-shadowsocks v0.2.7 h1:9f3Dt2+71TNp0e202llA2ug5h/rkWs2EZxQ5IMpf+9g= -github.com/metacubex/sing-shadowsocks v0.2.7/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0= -github.com/metacubex/sing-shadowsocks2 v0.2.1 h1:XIZBXlazp8EEoPp1S0DViAhLkJakjQ2f+AOwwdKKNYg= -github.com/metacubex/sing-shadowsocks2 v0.2.1/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q= +github.com/metacubex/sing-shadowsocks v0.2.8 h1:wIhlaigswzjPw4hej75sEvWte3QR0+AJRafgwBHO5B4= +github.com/metacubex/sing-shadowsocks v0.2.8/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0= +github.com/metacubex/sing-shadowsocks2 v0.2.2 h1:eaf42uVx4Lr21S6MDYs0ZdTvGA0GEhDpb9no4+gdXPo= +github.com/metacubex/sing-shadowsocks2 v0.2.2/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q= github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 h1:ypfofGDZbP8p3Y4P/m74JYu7sQViesi3c8nbmT6cS0Y= github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1/go.mod h1:olbEx9yVcaw5tHTNlRamRoxmMKcvDvcVS1YLnQGzvWE= github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 h1:OAXiCosqY8xKDp3pqTW3qbrCprZ1l6WkrXSFSCwyY4I= diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh index 08ea6e3b25..0188e32a15 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh @@ -24,7 +24,7 @@ DNS_PORT=15353 TUN_DNS="127.0.0.1#${DNS_PORT}" LOCAL_DNS=119.29.29.29,223.5.5.5 DEFAULT_DNS= -FW_APPEND_DNS= +IPT_APPEND_DNS= ENABLED_DEFAULT_ACL=0 PROXY_IPV6=0 PROXY_IPV6_UDP=0 @@ -1357,7 +1357,7 @@ stop_crontab() { start_dns() { echolog "DNS域名解析:" - local china_ng_local_dns=${LOCAL_DNS} + local china_ng_local_dns=$(IFS=','; set -- $LOCAL_DNS; [ "${1%%[#:]*}" = "127.0.0.1" ] && echo "$1" || ([ -n "$2" ] && echo "$1,$2" || echo "$1")) local sing_box_local_dns= local direct_dns_mode=$(config_t_get global direct_dns_mode "auto") case "$direct_dns_mode" in @@ -1365,7 +1365,7 @@ start_dns() { LOCAL_DNS=$(config_t_get global direct_dns_udp 223.5.5.5 | sed 's/:/#/g') china_ng_local_dns=${LOCAL_DNS} sing_box_local_dns="direct_dns_udp_server=${LOCAL_DNS}" - FW_APPEND_DNS=${LOCAL_DNS} + IPT_APPEND_DNS=${LOCAL_DNS} ;; tcp) LOCAL_DNS="127.0.0.1#${dns_listen_port}" @@ -1373,7 +1373,7 @@ start_dns() { local DIRECT_DNS=$(config_t_get global direct_dns_tcp 223.5.5.5 | sed 's/:/#/g') china_ng_local_dns="tcp://${DIRECT_DNS}" sing_box_local_dns="direct_dns_tcp_server=${DIRECT_DNS}" - FW_APPEND_DNS="${LOCAL_DNS},${DIRECT_DNS}" + IPT_APPEND_DNS="${LOCAL_DNS},${DIRECT_DNS}" ln_run "$(first_type dns2tcp)" dns2tcp "/dev/null" -L "${LOCAL_DNS}" -R "$(get_first_dns DIRECT_DNS 53)" -v echolog " - dns2tcp(${LOCAL_DNS}) -> tcp://$(get_first_dns DIRECT_DNS 53 | sed 's/#/:/g')" echolog " * 请确保上游直连 DNS 支持 TCP 查询。" @@ -1392,7 +1392,7 @@ start_dns() { local tmp_dot_ip=$(echo "$DIRECT_DNS" | sed -n 's/.*:\/\/\([^@#]*@\)*\([^@#]*\).*/\2/p') local tmp_dot_port=$(echo "$DIRECT_DNS" | sed -n 's/.*#\([0-9]\+\).*/\1/p') sing_box_local_dns="direct_dns_dot_server=$tmp_dot_ip#${tmp_dot_port:-853}" - FW_APPEND_DNS="${LOCAL_DNS},$tmp_dot_ip#${tmp_dot_port:-853}" + IPT_APPEND_DNS="${LOCAL_DNS},$tmp_dot_ip#${tmp_dot_port:-853}" else echolog " - 你的ChinaDNS-NG版本不支持DoT,直连DNS将使用默认地址。" fi @@ -1692,7 +1692,7 @@ acl_app() { chinadns_port=$(expr $chinadns_port + 1) _china_ng_listen="127.0.0.1#${chinadns_port}" - _chinadns_local_dns=${LOCAL_DNS} + _chinadns_local_dns=$(IFS=','; set -- $LOCAL_DNS; [ "${1%%[#:]*}" = "127.0.0.1" ] && echo "$1" || ([ -n "$2" ] && echo "$1,$2" || echo "$1")) _direct_dns_mode=$(config_t_get global direct_dns_mode "auto") case "${_direct_dns_mode}" in udp) @@ -1999,7 +1999,7 @@ DEFAULT_DNSMASQ_CFGID=$(uci show dhcp.@dnsmasq[0] | awk -F '.' '{print $2}' | a DEFAULT_DNS=$(uci show dhcp.@dnsmasq[0] | grep "\.server=" | awk -F '=' '{print $2}' | sed "s/'//g" | tr ' ' '\n' | grep -v "\/" | head -2 | sed ':label;N;s/\n/,/;b label') [ -z "${DEFAULT_DNS}" ] && [ "$(echo $ISP_DNS | tr ' ' '\n' | wc -l)" -le 2 ] && DEFAULT_DNS=$(echo -n $ISP_DNS | tr ' ' '\n' | head -2 | tr '\n' ',') LOCAL_DNS="${DEFAULT_DNS:-119.29.29.29,223.5.5.5}" -FW_APPEND_DNS=${LOCAL_DNS} +IPT_APPEND_DNS=${LOCAL_DNS} DNS_QUERY_STRATEGY="UseIP" [ "$FILTER_PROXY_IPV6" = "1" ] && DNS_QUERY_STRATEGY="UseIPv4" diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh index 1b69f2122e..3cb7bbfb21 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh @@ -841,21 +841,24 @@ add_firewall_rule() { $ipt_m -N PSW_OUTPUT $ipt_m -A PSW_OUTPUT $(dst $IPSET_LANLIST) -j RETURN $ipt_m -A PSW_OUTPUT $(dst $IPSET_VPSLIST) -j RETURN - [ -n "$FW_APPEND_DNS" ] && { - for local_dns in $(echo $FW_APPEND_DNS | tr ',' ' '); do - local dns_address=$(echo "$local_dns" | sed -E 's/(@|\[)?([0-9a-fA-F:.]+)(@|#|$).*/\2/') - local dns_port=$(echo "$local_dns" | sed -nE 's/.*#([0-9]+)$/\1/p') - if echo "$dns_address" | grep -q ':'; then - $ip6t_m -A PSW_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - $ip6t_m -A PSW_OUTPUT -p tcp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - echolog " - [$?]追加直连DNS到iptables:[${dns_address}]:${dns_port:-53}" - else + + [ -n "$IPT_APPEND_DNS" ] && { + local local_dns dns_address dns_port + for local_dns in $(echo $IPT_APPEND_DNS | tr ',' ' '); do + dns_address=$(echo "$local_dns" | sed -E 's/(@|\[)?([0-9a-fA-F:.]+)(@|#|$).*/\2/') + dns_port=$(echo "$local_dns" | sed -nE 's/.*#([0-9]+)$/\1/p') + if echo "$dns_address" | grep -q -v ':'; then $ipt_m -A PSW_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN $ipt_m -A PSW_OUTPUT -p tcp -d ${dns_address} --dport ${dns_port:-53} -j RETURN echolog " - [$?]追加直连DNS到iptables:${dns_address}:${dns_port:-53}" + else + $ip6t_m -A PSW_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN + $ip6t_m -A PSW_OUTPUT -p tcp -d ${dns_address} --dport ${dns_port:-53} -j RETURN + echolog " - [$?]追加直连DNS到iptables:[${dns_address}]:${dns_port:-53}" fi done } + [ "${USE_DIRECT_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_WHITELIST) -j RETURN $ipt_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN [ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_BLOCKLIST) -j DROP diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh index 0a7135adb5..84b60880ad 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh @@ -865,21 +865,7 @@ add_firewall_rule() { nft "flush chain inet fw4 PSW_OUTPUT_MANGLE" nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip daddr @$NFTSET_LANLIST counter return" nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip daddr @$NFTSET_VPSLIST counter return" - [ -n "$FW_APPEND_DNS" ] && { - for local_dns in $(echo $FW_APPEND_DNS | tr ',' ' '); do - local dns_address=$(echo "$local_dns" | sed -E 's/(@|\[)?([0-9a-fA-F:.]+)(@|#|$).*/\2/') - local dns_port=$(echo "$local_dns" | sed -nE 's/.*#([0-9]+)$/\1/p') - if echo "$dns_address" | grep -q ':'; then - nft "add rule inet fw4 PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" - nft "add rule inet fw4 PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "tcp dport") counter return" - echolog " - [$?]追加直连DNS到nftables:[${dns_address}]:${dns_port:-53}" - else - nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip protocol udp ip daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" - nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip protocol tcp ip daddr ${dns_address} $(factor ${dns_port:-53} "tcp dport") counter return" - echolog " - [$?]追加直连DNS到nftables:${dns_address}:${dns_port:-53}" - fi - done - } + [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip daddr @$NFTSET_WHITELIST counter return" nft "add rule inet fw4 PSW_OUTPUT_MANGLE meta mark 0xff counter return" [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip daddr @$NFTSET_BLOCKLIST counter drop" @@ -946,6 +932,23 @@ add_firewall_rule() { nft "add rule inet fw4 PSW_OUTPUT_MANGLE_V6 meta mark 0xff counter return" [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule inet fw4 PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_BLOCKLIST6 counter drop" + [ -n "$IPT_APPEND_DNS" ] && { + local local_dns dns_address dns_port + for local_dns in $(echo $IPT_APPEND_DNS | tr ',' ' '); do + dns_address=$(echo "$local_dns" | sed -E 's/(@|\[)?([0-9a-fA-F:.]+)(@|#|$).*/\2/') + dns_port=$(echo "$local_dns" | sed -nE 's/.*#([0-9]+)$/\1/p') + if echo "$dns_address" | grep -q -v ':'; then + nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip protocol udp ip daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" + nft "add rule inet fw4 PSW_OUTPUT_MANGLE ip protocol tcp ip daddr ${dns_address} $(factor ${dns_port:-53} "tcp dport") counter return" + echolog " - [$?]追加直连DNS到nftables:${dns_address}:${dns_port:-53}" + else + nft "add rule inet fw4 PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" + nft "add rule inet fw4 PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "tcp dport") counter return" + echolog " - [$?]追加直连DNS到nftables:[${dns_address}]:${dns_port:-53}" + fi + done + } + # jump chains [ "$PROXY_IPV6" == "1" ] && { nft "add rule inet fw4 mangle_prerouting meta nfproto {ipv6} counter jump PSW_MANGLE_V6" diff --git a/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs b/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs index a12858ecbc..b36033a797 100644 --- a/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs +++ b/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs @@ -68,7 +68,7 @@ where let sock = unsafe { Socket::from_raw_fd(fd) }; let result = socket_bind_dual_stack_inner(&sock, addr, ipv6_only); - sock.into_raw_fd(); + let _ = sock.into_raw_fd(); result } diff --git a/sing-box/route/router.go b/sing-box/route/router.go index 0b74c7204a..e313c6f71d 100644 --- a/sing-box/route/router.go +++ b/sing-box/route/router.go @@ -549,8 +549,8 @@ func (r *Router) Start() error { if err != nil { return E.Cause(err, "start package manager") } - r.packageManager = packageManager } + r.packageManager = packageManager } for i, rule := range r.dnsRules { diff --git a/small/luci-app-bypass/luasrc/controller/bypass.lua b/small/luci-app-bypass/luasrc/controller/bypass.lua index 0995e7f860..dcb971386d 100644 --- a/small/luci-app-bypass/luasrc/controller/bypass.lua +++ b/small/luci-app-bypass/luasrc/controller/bypass.lua @@ -163,19 +163,19 @@ function check_site(host, port) return ret end -function get_ip_geo_info(ip) - local result = luci.sys.exec('curl --retry 3 -m 10 -LfsA "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" https://ipapi.co/json/') +function get_ip_geo_info() + local result = luci.sys.exec('curl --retry 3 -m 10 -LfsA "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" https://ip-api.com/json/') local json = require "luci.jsonc" local info = json.parse(result) return { - flag = string.lower(info.country_code) or "un", - country = get_country_name(info.country_code) or "Unknown", - ip = info.ip + flag = string.lower(info.countryCode) or "un", + country = get_country_name(info.countryCode) or "Unknown", + ip = info.query } end -function get_country_name(country_code) +function get_country_name(countryCode) local country_names = { US = "美国", CN = "中国", JP = "日本", GB = "英国", DE = "德国", FR = "法国", BR = "巴西", IT = "意大利", RU = "俄罗斯", CA = "加拿大", @@ -188,7 +188,7 @@ function get_country_name(country_code) CZ = "捷克", RO = "罗马尼亚", VN = "越南", UA = "乌克兰", HU = "匈牙利", AE = "阿联酋", CO = "哥伦比亚", IN = "印度", EG = "埃及", PE = "秘鲁", TW = "台湾" } - return country_names[country_code] + return country_names[countryCode] end function check_ip() diff --git a/small/luci-app-bypass/root/etc/uci-defaults/luci-bypass b/small/luci-app-bypass/root/etc/uci-defaults/luci-bypass index 74e067d1d8..38fe690be1 100755 --- a/small/luci-app-bypass/root/etc/uci-defaults/luci-bypass +++ b/small/luci-app-bypass/root/etc/uci-defaults/luci-bypass @@ -14,7 +14,7 @@ EOF chmod +x /etc/init.d/bypass /usr/share/bypass/* >/dev/null 2>&1 rm -rf /tmp/luci-* -grep -q ipapi.co /etc/bypass/black.list || - sed -i '$a ipapi.co' /etc/bypass/black.list +grep -q ip-api.com /etc/bypass/black.list || + sed -i '$a ip-api.com' /etc/bypass/black.list exit 0 diff --git a/small/v2ray-geodata/Makefile b/small/v2ray-geodata/Makefile index 38e4d8d1f9..28fbe75c28 100644 --- a/small/v2ray-geodata/Makefile +++ b/small/v2ray-geodata/Makefile @@ -21,13 +21,13 @@ define Download/geoip HASH:=b55e5bd8aca7797e4d19872842759e4754e9ca1294a4d8731843ff791e1ef928 endef -GEOSITE_VER:=20240726161926 +GEOSITE_VER:=20240807074444 GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER) define Download/geosite URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/ URL_FILE:=dlc.dat FILE:=$(GEOSITE_FILE) - HASH:=f329656f27a1dac1971e1dff9aed2d7a60029d087e1216b2536c1e86ebe82ca3 + HASH:=e1dcdd6e417b45d48d9d004e31c9d2792c8c468bdfe084c709f7c348720cfdf9 endef GEOSITE_IRAN_VER:=202408050030 diff --git a/xray-core/README.md b/xray-core/README.md index 3c1d1ec2e9..026d149115 100644 --- a/xray-core/README.md +++ b/xray-core/README.md @@ -4,7 +4,7 @@ [README](https://github.com/XTLS/Xray-core#readme) is open, so feel free to submit your project [here](https://github.com/XTLS/Xray-core/pulls). -## NFTs +## Donation & NFTs [Announcement of NFTs by Project X](https://github.com/XTLS/Xray-core/discussions/3633) diff --git a/xray-core/go.mod b/xray-core/go.mod index 33dce20659..ff42f9171e 100644 --- a/xray-core/go.mod +++ b/xray-core/go.mod @@ -22,8 +22,8 @@ require ( github.com/vishvananda/netlink v1.2.1-beta.2.0.20230316163032-ced5aaba43e3 github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d go4.org/netipx v0.0.0-20231129151722-fdeea329fbba - golang.org/x/crypto v0.25.0 - golang.org/x/net v0.27.0 + golang.org/x/crypto v0.26.0 + golang.org/x/net v0.28.0 golang.org/x/sync v0.8.0 golang.org/x/sys v0.23.0 golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 @@ -52,7 +52,7 @@ require ( go.uber.org/mock v0.4.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.22.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect diff --git a/xray-core/go.sum b/xray-core/go.sum index ae0a5d975b..8b16d691f8 100644 --- a/xray-core/go.sum +++ b/xray-core/go.sum @@ -179,8 +179,8 @@ golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= @@ -201,8 +201,8 @@ golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -235,8 +235,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= diff --git a/yass/.github/workflows/releases-flatpak.yml b/yass/.github/workflows/releases-flatpak.yml index 6c1421a1ed..b34f7a7526 100644 --- a/yass/.github/workflows/releases-flatpak.yml +++ b/yass/.github/workflows/releases-flatpak.yml @@ -60,9 +60,8 @@ jobs: run: | flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo cd flatpak - make - flatpak-builder --user --install-deps-from=flathub --disable-updates --force-clean --repo=repo builddir it.gui.yass.yml - flatpak build-bundle repo yass.flatpak it.gui.yass --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo + flatpak-builder --force-clean --user --install-deps-from=flathub --ccache --mirror-screenshots-url=https://dl.flathub.org/media/ --repo=repo builddir io.github.chilledheart.yass.yml + flatpak build-bundle repo yass.flatpak io.github.chilledheart.yass --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo cd .. mv -fv flatpak/yass.flatpak yass-${{ github.event.release.tag_name }}.flatpak - name: Upload dist tarball (including debuginfo) diff --git a/yass/CMakeLists.txt b/yass/CMakeLists.txt index 18319be6a7..d6f44c5d3f 100644 --- a/yass/CMakeLists.txt +++ b/yass/CMakeLists.txt @@ -4473,7 +4473,7 @@ if (GUI) elseif(GUI_FLAVOUR STREQUAL "qt6" OR GUI_FLAVOUR STREQUAL "qt5") file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/qt6/yass.qrc DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/freedesktop/it.gui.yass.png + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/freedesktop/io.github.chilledheart.yass.png DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/images) list(APPEND SRC_FILES src/qt6/yass_window.hpp @@ -4937,11 +4937,12 @@ if (GUI) if (GUI_FLAVOUR STREQUAL "qt6" OR GUI_FLAVOUR STREQUAL "qt5" OR GUI_FLAVOUR STREQUAL "gtk3" OR GUI_FLAVOUR STREQUAL "gtk4") install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/src/freedesktop/it.gui.yass.desktop + ${CMAKE_CURRENT_SOURCE_DIR}/src/freedesktop/yass.desktop + RENAME io.github.chilledheart.yass.desktop DESTINATION share/applications) install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/src/freedesktop/it.gui.yass.png + ${CMAKE_CURRENT_SOURCE_DIR}/src/freedesktop/io.github.chilledheart.yass.png DESTINATION share/pixmaps) install(DIRECTORY diff --git a/yass/README.md b/yass/README.md index 78279ead6b..493335a9ad 100644 --- a/yass/README.md +++ b/yass/README.md @@ -14,7 +14,7 @@ yass is an efficient forward proxy client supporting http/socks4/socks4a/socks5/ Because we are reusing chromium's network stack directly, we are following [chromium's release schedule](https://chromiumdash.appspot.com/schedule) and delivering new versions based on its beta branch. -- [Latest M128's Release (1.12.x)](https://github.com/Chilledheart/yass/releases/tag/1.12.1) will become Stable since _Aug 20, 2024_ (Extended Support). +- [Latest M128's Release (1.12.x)](https://github.com/Chilledheart/yass/releases/tag/1.12.3) will become Stable since _Aug 20, 2024_ (Extended Support). - [Latest M127's Release (1.11.x)](https://github.com/Chilledheart/yass/releases/tag/1.11.5) becomes Stable since _Jul 23, 2024_ - [Latest M126's Release (1.10.x)](https://github.com/Chilledheart/yass/releases/tag/1.10.7) becomes Stable since _Jun 11, 2024_ (Extended Support) - [Latest M125's Release (1.9.x)](https://github.com/Chilledheart/yass/releases/tag/1.9.7) becomes Stable since _May 14, 2024_ @@ -24,13 +24,12 @@ we are following [chromium's release schedule](https://chromiumdash.appspot.com/ - [Latest M121's Release (1.5.x)](https://github.com/Chilledheart/yass/releases/tag/1.5.24) becomes Stable since _Jan 23, 2024_ ### Prebuilt binaries (Linux) -- GTK3 [download rpm](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-gtk3.el8.x86_64.1.12.1.rpm) or [download deb](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-gtk3-ubuntu-16.04-xenial_amd64.1.12.1.deb) (minimum requirement: centos 8 or ubuntu 16.04) -- Qt5 [download rpm](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-qt5.el8.x86_64.1.12.1.rpm) or [download deb](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-qt5-ubuntu-16.04-xenial_amd64.1.12.1.deb) (minimum requirement: centos 8 or ubuntu 16.04) -- GTK4 [download rpm](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-gtk4.lp155.x86_64.1.12.1.rpm) or [download deb](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-gtk4-ubuntu-22.04-jammy_amd64.1.12.1.deb) (minimum requirement: opensuse leap 15.5, centos 9 or ubuntu 22.04) -- Qt6 [download rpm](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-qt6.lp155.x86_64.1.12.1.rpm) or [download deb](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-qt6-ubuntu-22.04-jammy_amd64.1.12.1.deb) (minimum requirement: opensuse leap 15.5, centos 9 with epel or ubuntu 22.04) +- GTK3 [download rpm][gtk3_rpm_url] or [download deb][gtk3_deb_url] (minimum requirement: _CentOS 8_ or _Ubuntu 16.04_) +- Qt5 [download rpm][qt5_rpm_url] or [download deb][qt5_deb_url] (minimum requirement: _CentOS 8_ or _Ubuntu 16.04_) +- GTK4 [download rpm][gtk4_rpm_url] or [download deb][gtk4_deb_url] (minimum requirement: _openSUSE Leap 15.5_, _CentOS 9_ or _Ubuntu 22.04_) +- Qt6 [download rpm][qt6_rpm_url] or [download deb][qt6_deb_url] (minimum requirement: _openSUSE Leap 15.5_, _CentOS 9_ with epel or _Ubuntu 22.04_) -- Qt5 (Flatpak) [download flatpak](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-1.12.1.flatpak) -- GTK4 (Archlinux) [download binary pkg file](https://repo.archlinuxcn.org/x86_64/yass-proxy-1.12.1-1-x86_64.pkg.tar.zst) (PGP Keys: `sudo pacman -S archlinuxcn-keyring`) +- GTK4 (Archlinux) [download binary pkg file][gtk4_arch_url] (PGP Keys: `sudo pacman -S archlinuxcn-keyring`) [![aur yass-proxy-gtk3](https://img.shields.io/aur/version/yass-proxy-gtk3)](https://aur.archlinux.org/packages/yass-proxy-gtk3) [![aur yass-proxy-qt5](https://img.shields.io/aur/version/yass-proxy-qt5)](https://aur.archlinux.org/packages/yass-proxy-qt5) @@ -39,19 +38,20 @@ we are following [chromium's release schedule](https://chromiumdash.appspot.com/ See [Status of Package Store](https://github.com/Chilledheart/yass/wiki/Status-of-Package-Store) for more. -- CLI [download tgz for amd64](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-release-amd64-1.12.1.tgz) or [download tgz for i386](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-release-amd64-1.12.1.tgz) or [download tgz for arm64](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-release-arm64-1.12.1.tgz) (require glibc >= 2.25) -- CLI [download tgz for loongarch64](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-release-loongarch64-1.12.1.tgz) (require glibc >= 2.38, require new world) -- CLI [download tgz for riscv64](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-release-riscv64-1.12.1.tgz) or [download tgz for riscv32](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-release-riscv32-1.12.1.tgz) (require glibc >= 2.36) -- CLI(openwrt) [download tgz for amd64](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-openwrt-release-x86_64-1.12.1.tgz) or [download tgz for i386](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-openwrt-release-i486-1.12.1.tgz) or [download tgz for aarch64 generic](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-openwrt-release-aarch64-1.12.1.tgz) (require openwrt >= 23.05.3) -- CLI(musl) [download tgz for amd64](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-musl-release-amd64-1.12.1.tgz) or [download tgz for i386](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass_cli-linux-musl-release-i386-1.12.1.tgz) (require musl >= 1.2.5) +- CLI [download tgz for amd64][cli_tgz_amd64_url] or [download tgz for i386][cli_tgz_i386_url] or [download tgz for arm64][cli_tgz_arm64_url] (require glibc >= 2.25) +- CLI [download tgz for loongarch64][cli_tgz_loongarch64_url] (require glibc >= 2.38, _new world_) +- CLI [download tgz for riscv64][cli_tgz_riscv64_url] or [download tgz for riscv32][cli_tgz_riscv32_url] (require glibc >= 2.36) +- CLI(openwrt) [download tgz for amd64][cli_openwrt_amd64_url] or [download tgz for i486][cli_openwrt_i486_url] or [download tgz for aarch64 generic][cli_openwrt_aarch64_url] (require openwrt >= 23.05.3) +- CLI(musl) [download tgz for amd64][cli_musl_amd64_url] or [download tgz for i386][cli_musl_i386_url] (require musl >= 1.2.5) [![aur yass-proxy-cli](https://img.shields.io/aur/version/yass-proxy-cli)](https://aur.archlinux.org/packages/yass-proxy-cli) ### Prebuilt binaries (Other platforms) -- Android [download apk](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-android-release-arm64-1.12.1.apk) or [download 32-bit apk](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-android-release-arm-1.12.1.apk) -- iOS [Continue to accept TestFlight invitation](https://testflight.apple.com/join/6AkiEq09) -- Windows [download installer](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-mingw-win7-release-x86_64-1.12.1-system-installer.exe) [(require KB2999226 below windows 10)][KB2999226] or [download 32-bit installer](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-mingw-winxp-release-i686-1.12.1-system-installer.exe) [(require vc 2010 runtime)][vs2010_x86] or [download woa arm64 installer](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-mingw-release-aarch64-1.12.1-system-installer.exe) -- macOS [download intel dmg](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-macos-release-x64-1.12.1.dmg) or [download apple silicon dmg](https://github.com/Chilledheart/yass/releases/download/1.12.1/yass-macos-release-arm64-1.12.1.dmg) +- Flatpak (Qt5) [download flatpak][qt5_flatpak_url] (PS: _Flathub_ is incoming) +- Android [download 64-bit apk][android_64_apk_url] or [download 32-bit apk][android_32_apk_url] (require _Android 7.0_ or above) +- iOS [Continue to accept TestFlight invitation][ios_testflight_invitation] (require [TestFlight][ios_testflight_appstore_url] from _AppStore_, and _iOS 13.0_ or above) +- Windows [download 64-bit installer][windows_64_installer_url] (require [KB2999226] on _windows 7/8/8.1_) or [download 32-bit installer][windows_32_installer_url] (require [vc 2010 runtime][vs2010_x86] on _windows xp sp3_) or [download arm64 installer][windows_arm64_installer_url] (require _windows 10/11_) +- macOS [download intel dmg][macos_intel_dmg_url] or [download apple silicon dmg][macos_arm_dmg_url] (require _macOS 10.14_ or above) > via homebrew: `brew install --cask yass` [![homebrew cask](https://img.shields.io/homebrew/cask/v/yass)](https://formulae.brew.sh/cask/yass) @@ -135,5 +135,41 @@ Please visit [the pages site](https://letshack.info). [![Clang Tidy](https://github.com/Chilledheart/yass/actions/workflows/clang-tidy.yml/badge.svg)](https://github.com/Chilledheart/yass/actions/workflows/clang-tidy.yml) [license-link]: LICENSE + +[gtk3_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-gtk3.el8.x86_64.1.12.3.rpm +[gtk3_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-gtk3-ubuntu-16.04-xenial_amd64.1.12.3.deb +[qt5_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-qt5.el8.x86_64.1.12.3.rpm +[qt5_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-qt5-ubuntu-16.04-xenial_amd64.1.12.3.deb +[gtk4_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-gtk4.lp155.x86_64.1.12.3.rpm +[gtk4_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-gtk4-ubuntu-22.04-jammy_amd64.1.12.3.deb +[qt6_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-qt6.lp155.x86_64.1.12.3.rpm +[qt6_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-qt6-ubuntu-22.04-jammy_amd64.1.12.3.deb + +[qt5_flatpak_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-1.12.3.flatpak +[gtk4_arch_url]: https://repo.archlinuxcn.org/x86_64/yass-proxy-1.12.3-1-x86_64.pkg.tar.zst + +[cli_tgz_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-release-amd64-1.12.3.tgz +[cli_tgz_i386_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-release-amd64-1.12.3.tgz +[cli_tgz_arm64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-release-arm64-1.12.3.tgz +[cli_tgz_loongarch64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-release-loongarch64-1.12.3.tgz +[cli_tgz_riscv64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-release-riscv64-1.12.3.tgz +[cli_tgz_riscv32_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-release-riscv32-1.12.3.tgz + +[cli_openwrt_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-openwrt-release-x86_64-1.12.3.tgz +[cli_openwrt_i486_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-openwrt-release-i486-1.12.3.tgz +[cli_openwrt_aarch64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-openwrt-release-aarch64-1.12.3.tgz + +[cli_musl_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-musl-release-amd64-1.12.3.tgz +[cli_musl_i386_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass_cli-linux-musl-release-i386-1.12.3.tgz + +[ios_testflight_invitation]: https://testflight.apple.com/join/6AkiEq09 +[ios_testflight_appstore_url]: https://apps.apple.com/us/app/testflight/id899247664 +[android_64_apk_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-android-release-arm64-1.12.3.apk +[android_32_apk_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-android-release-arm-1.12.3.apk [KB2999226]: https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c [vs2010_x86]: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe +[windows_64_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-mingw-win7-release-x86_64-1.12.3-system-installer.exe +[windows_32_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-mingw-winxp-release-i686-1.12.3-system-installer.exe +[windows_arm64_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-mingw-release-aarch64-1.12.3-system-installer.exe +[macos_intel_dmg_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-macos-release-x64-1.12.3.dmg +[macos_arm_dmg_url]: https://github.com/Chilledheart/yass/releases/download/1.12.3/yass-macos-release-arm64-1.12.3.dmg diff --git a/yass/debian/changelog b/yass/debian/changelog index 9ebf22db31..5e7507d8bc 100644 --- a/yass/debian/changelog +++ b/yass/debian/changelog @@ -1,3 +1,14 @@ +yass (1.12.3-1) UNRELEASED; urgency=medium + + * gtk4: fix crash. + + -- Chilledheart Wed, 7 Aug 2024 11:43:24 +0800 +yass (1.12.2-1) UNRELEASED; urgency=medium + + * transfer: optimize rate limit's algorithm. + * replace app id. + + -- Chilledheart Wed, 7 Aug 2024 10:55:31 +0800 yass (1.12.1-1) UNRELEASED; urgency=medium * ui: lower veritical spacing to 6 pixels. diff --git a/yass/debian/yass.install b/yass/debian/yass.install index bd0f4c5412..57abc99fe5 100644 --- a/yass/debian/yass.install +++ b/yass/debian/yass.install @@ -1,6 +1,6 @@ usr/bin/yass -usr/share/pixmaps/it.gui.yass.png -usr/share/applications/it.gui.yass.desktop -usr/share/icons/hicolor/*/apps/it.gui.yass.png +usr/share/pixmaps/io.github.chilledheart.yass.png +usr/share/applications/io.github.chilledheart.yass.desktop +usr/share/icons/hicolor/*/apps/io.github.chilledheart.yass.png usr/share/locale/*/LC_MESSAGES/yass.mo usr/share/doc/yass/LICENSE diff --git a/yass/flatpak/.gitignore b/yass/flatpak/.gitignore index 06290be9fa..fd97709aa6 100644 --- a/yass/flatpak/.gitignore +++ b/yass/flatpak/.gitignore @@ -2,5 +2,3 @@ /repo /.flatpak /.flatpak-builder -/it.gui.yass.yml -/it.gui.yass.checksum diff --git a/yass/flatpak/Makefile b/yass/flatpak/Makefile deleted file mode 100644 index 204ed73477..0000000000 --- a/yass/flatpak/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -TAG:=$(shell git describe --abbrev=0 --tags HEAD) - -all: it.gui.yass.yml - -it.gui.yass.checksum: - ../scripts/build-src.sh - cp -fv ../yass-$(TAG).tar.bz2 . - sha256sum yass-$(TAG).tar.bz2 > it.gui.yass.checksum - -it.gui.yass.yml: it.gui.yass.checksum it.gui.yass.yml.tmpl - cp -fv it.gui.yass.yml.tmpl it.gui.yass.yml - sed -i s#PWD#$(PWD)#g it.gui.yass.yml - sed -i s/TAG_NAME/$(TAG)/g it.gui.yass.yml - $(eval SHA256 := $(shell cat it.gui.yass.checksum | cut -d ' ' -f1)) - sed -i s/SHA256/$(SHA256)/g it.gui.yass.yml - -clean: - rm -f yass-$(TAG).tar.bz2 - rm -f it.gui.yass.checksum - rm -f it.gui.yass.yml diff --git a/yass/flatpak/it.gui.yass.yml.tmpl b/yass/flatpak/io.github.chilledheart.yass.yml similarity index 74% rename from yass/flatpak/it.gui.yass.yml.tmpl rename to yass/flatpak/io.github.chilledheart.yass.yml index 1b59f7b904..1d82084374 100644 --- a/yass/flatpak/it.gui.yass.yml.tmpl +++ b/yass/flatpak/io.github.chilledheart.yass.yml @@ -1,4 +1,4 @@ -id: it.gui.yass +id: io.github.chilledheart.yass runtime: org.kde.Platform runtime-version: '5.15-23.08' sdk: org.kde.Sdk @@ -11,6 +11,8 @@ finish-args: - --device=dri - --filesystem=~/.yass - --talk-name=org.kde.StatusNotifierWatcher + - --talk-name=com.canonical.indicator.application + - --talk-name=org.ayatana.indicator.application modules: - name: yass buildsystem: cmake-ninja @@ -22,6 +24,5 @@ modules: - -DCLI=off - -DSERVER=off sources: - - type: archive - url: file://PWD/yass-TAG_NAME.tar.bz2 - sha256: SHA256 + - type: dir + path: ../ diff --git a/yass/src/freedesktop/icons/128x128/apps/it.gui.yass.png b/yass/src/freedesktop/icons/128x128/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/128x128/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/128x128/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/16x16/apps/it.gui.yass.png b/yass/src/freedesktop/icons/16x16/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/16x16/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/16x16/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/22x22/apps/it.gui.yass.png b/yass/src/freedesktop/icons/22x22/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/22x22/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/22x22/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/24x24/apps/it.gui.yass.png b/yass/src/freedesktop/icons/24x24/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/24x24/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/24x24/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/256x256/apps/it.gui.yass.png b/yass/src/freedesktop/icons/256x256/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/256x256/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/256x256/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/32x32/apps/it.gui.yass.png b/yass/src/freedesktop/icons/32x32/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/32x32/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/32x32/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/48x48/apps/it.gui.yass.png b/yass/src/freedesktop/icons/48x48/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/48x48/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/48x48/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/icons/512x512/apps/it.gui.yass.png b/yass/src/freedesktop/icons/512x512/apps/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/icons/512x512/apps/it.gui.yass.png rename to yass/src/freedesktop/icons/512x512/apps/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/it.gui.yass.png b/yass/src/freedesktop/io.github.chilledheart.yass.png similarity index 100% rename from yass/src/freedesktop/it.gui.yass.png rename to yass/src/freedesktop/io.github.chilledheart.yass.png diff --git a/yass/src/freedesktop/utils.cpp b/yass/src/freedesktop/utils.cpp index dbdce90c6a..b118f91dec 100644 --- a/yass/src/freedesktop/utils.cpp +++ b/yass/src/freedesktop/utils.cpp @@ -18,7 +18,7 @@ using namespace std::string_literals; using namespace yass; -static constexpr const char kDefaultAutoStartName[] = "it.gui.yass"; +static constexpr const char kDefaultAutoStartName[] = "io.github.chilledheart.yass"; static constexpr const std::string_view kAutoStartFileContent = "[Desktop Entry]\n" @@ -27,7 +27,7 @@ static constexpr const std::string_view kAutoStartFileContent = "Name=yass\n" "Comment=Yet Another Shadow Socket is a lightweight and secure http/socks4/socks5 proxy for embedded devices and " "low end boxes.\n" - "Icon=it.gui.yass\n" + "Icon=io.github.chilledheart.yass\n" "Exec=\"%s\" --background\n" "Terminal=false\n" "Categories=Network;GTK;Utility\n"; diff --git a/yass/src/freedesktop/it.gui.yass.desktop b/yass/src/freedesktop/yass.desktop similarity index 87% rename from yass/src/freedesktop/it.gui.yass.desktop rename to yass/src/freedesktop/yass.desktop index 4f9e9ef768..804342da66 100644 --- a/yass/src/freedesktop/it.gui.yass.desktop +++ b/yass/src/freedesktop/yass.desktop @@ -2,7 +2,7 @@ Type=Application Name=yass Comment=Yet Another Shadow Socket is a lightweight and secure http/socks4/socks5 proxy for embedded devices and low end boxes. -Icon=it.gui.yass +Icon=io.github.chilledheart.yass Exec=yass Terminal=false Categories=Network;GTK;Utility diff --git a/yass/src/gtk/yass.cpp b/yass/src/gtk/yass.cpp index c8a2396cce..22bd5823fe 100644 --- a/yass/src/gtk/yass.cpp +++ b/yass/src/gtk/yass.cpp @@ -33,7 +33,7 @@ ABSL_FLAG(bool, background, false, "start up background"); YASSApp* mApp = nullptr; -static const char* kAppId = "it.gui.yass"; +static const char* kAppId = "io.github.chilledheart.yass"; static const char* kAppName = YASS_APP_PRODUCT_NAME; int main(int argc, const char** argv) { diff --git a/yass/src/gtk/yass_window.cpp b/yass/src/gtk/yass_window.cpp index 3bce326548..84f2109ef6 100644 --- a/yass/src/gtk/yass_window.cpp +++ b/yass/src/gtk/yass_window.cpp @@ -28,7 +28,7 @@ YASSWindow::YASSWindow() : impl_(GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)) gtk_window_set_title(GTK_WINDOW(impl_), YASS_APP_PRODUCT_NAME); gtk_window_set_position(GTK_WINDOW(impl_), GTK_WIN_POS_CENTER); gtk_window_set_resizable(GTK_WINDOW(impl_), false); - gtk_window_set_icon_name(GTK_WINDOW(impl_), "it.gui.yass"); + gtk_window_set_icon_name(GTK_WINDOW(impl_), "io.github.chilledheart.yass"); auto show_callback = [](GtkWidget* self, gpointer pointer) { YASSWindow* window = (YASSWindow*)pointer; @@ -311,7 +311,7 @@ YASSWindow::~YASSWindow() { void YASSWindow::CreateStatusIcon() { // set try icon file G_GNUC_BEGIN_IGNORE_DEPRECATIONS - tray_icon_ = gtk_status_icon_new_from_icon_name("it.gui.yass"); + tray_icon_ = gtk_status_icon_new_from_icon_name("io.github.chilledheart.yass"); G_GNUC_END_IGNORE_DEPRECATIONS // set popup menu for tray icon @@ -368,7 +368,8 @@ void YASSWindow::CreateStatusIcon() { #ifdef HAVE_APP_INDICATOR void YASSWindow::CreateAppIndicator() { // set try icon file - tray_indicator_ = G_OBJECT(app_indicator_new("it.gui.yass", "it.gui.yass", APP_INDICATOR_CATEGORY_APPLICATION_STATUS)); + tray_indicator_ = G_OBJECT(app_indicator_new("io.github.chilledheart.yass", "io.github.chilledheart.yass", + APP_INDICATOR_CATEGORY_APPLICATION_STATUS)); app_indicator_set_status(APP_INDICATOR(tray_indicator_), APP_INDICATOR_STATUS_ACTIVE); // set popup menu for tray icon @@ -676,7 +677,7 @@ void YASSWindow::OnAbout() { gtk_about_dialog_set_comments(about_dialog, comments.c_str()); gtk_about_dialog_set_copyright(about_dialog, YASS_APP_COPYRIGHT); gtk_about_dialog_set_license_type(about_dialog, GTK_LICENSE_GPL_2_0_ONLY); - gtk_about_dialog_set_logo_icon_name(about_dialog, "it.gui.yass"); + gtk_about_dialog_set_logo_icon_name(about_dialog, "io.github.chilledheart.yass"); gtk_about_dialog_set_program_name(about_dialog, YASS_APP_PRODUCT_NAME); gtk_about_dialog_set_version(about_dialog, YASS_APP_PRODUCT_VERSION); gtk_about_dialog_set_website(about_dialog, YASS_APP_WEBSITE); diff --git a/yass/src/gtk4/option_dialog.cpp b/yass/src/gtk4/option_dialog.cpp index e1fcdcf54c..e065d37ef0 100644 --- a/yass/src/gtk4/option_dialog.cpp +++ b/yass/src/gtk4/option_dialog.cpp @@ -53,7 +53,7 @@ static void option_dialog_dispose(GObject* object) { } static void option_dialog_class_init(OptionGtkDialogClass* cls) { - gtk_widget_class_set_template_from_resource(GTK_WIDGET_CLASS(cls), "/it/gui/yass/option_dialog.ui"); + gtk_widget_class_set_template_from_resource(GTK_WIDGET_CLASS(cls), "/io/github/chilledheart/yass/option_dialog.ui"); gtk_widget_class_bind_template_child(GTK_WIDGET_CLASS(cls), OptionGtkDialog, tcp_keep_alive_check); gtk_widget_class_bind_template_child(GTK_WIDGET_CLASS(cls), OptionGtkDialog, tcp_keep_alive_cnt); diff --git a/yass/src/gtk4/yass.cpp b/yass/src/gtk4/yass.cpp index 765f82cf06..1d3a91e0d4 100644 --- a/yass/src/gtk4/yass.cpp +++ b/yass/src/gtk4/yass.cpp @@ -32,7 +32,7 @@ ABSL_FLAG(bool, background, false, "start up background"); YASSApp* mApp = nullptr; -static const char* kAppId = "it.gui.yass"; +static const char* kAppId = "io.github.Chilledheart.yass"; static const char* kAppName = YASS_APP_PRODUCT_NAME; extern "C" { diff --git a/yass/src/gtk4/yass.gresource.xml b/yass/src/gtk4/yass.gresource.xml index 46ae2a2e16..49e67b08d3 100644 --- a/yass/src/gtk4/yass.gresource.xml +++ b/yass/src/gtk4/yass.gresource.xml @@ -1,6 +1,6 @@ - + menu.ui yass_window.ui option_dialog.ui diff --git a/yass/src/gtk4/yass_window.cpp b/yass/src/gtk4/yass_window.cpp index 4524245475..451b609879 100644 --- a/yass/src/gtk4/yass_window.cpp +++ b/yass/src/gtk4/yass_window.cpp @@ -58,7 +58,7 @@ static void yass_window_init(YASSGtkWindow* win) { gtk_widget_init_template(GTK_WIDGET(win)); - builder = gtk_builder_new_from_resource("/it/gui/yass/menu.ui"); + builder = gtk_builder_new_from_resource("/io/github/chilledheart/yass/menu.ui"); menu = G_MENU_MODEL(gtk_builder_get_object(builder, "menu")); gtk_menu_button_set_menu_model(GTK_MENU_BUTTON(win->gears), menu); g_object_unref(builder); @@ -95,7 +95,7 @@ static void yass_window_dispose(GObject* object) { } static void yass_window_class_init(YASSGtkWindowClass* cls) { - gtk_widget_class_set_template_from_resource(GTK_WIDGET_CLASS(cls), "/it/gui/yass/yass_window.ui"); + gtk_widget_class_set_template_from_resource(GTK_WIDGET_CLASS(cls), "/io/github/chilledheart/yass/yass_window.ui"); gtk_widget_class_bind_template_child(GTK_WIDGET_CLASS(cls), YASSGtkWindow, gears); gtk_widget_class_bind_template_child(GTK_WIDGET_CLASS(cls), YASSGtkWindow, status_bar); @@ -124,7 +124,7 @@ static void yass_window_class_init(YASSGtkWindowClass* cls) { YASSGtkWindow* yass_window_new(YASSGtkApp* app) { auto window = YASSGtk_WINDOW(g_object_new(yass_window_get_type(), "application", app, nullptr)); gtk_window_set_resizable(GTK_WINDOW(window), false); - gtk_window_set_icon_name(GTK_WINDOW(window), "it.gui.yass"); + gtk_window_set_icon_name(GTK_WINDOW(window), "io.github.chilledheart.yass"); return window; } @@ -274,7 +274,7 @@ void YASSWindow::OnAbout() { gtk_about_dialog_set_comments(about_dialog, comments.c_str()); gtk_about_dialog_set_copyright(about_dialog, YASS_APP_COPYRIGHT); gtk_about_dialog_set_license_type(about_dialog, GTK_LICENSE_GPL_2_0_ONLY); - gtk_about_dialog_set_logo_icon_name(about_dialog, "it.gui.yass"); + gtk_about_dialog_set_logo_icon_name(about_dialog, "io.github.chilledheart.yass"); gtk_about_dialog_set_program_name(about_dialog, YASS_APP_PRODUCT_NAME); gtk_about_dialog_set_version(about_dialog, YASS_APP_PRODUCT_VERSION); gtk_about_dialog_set_website(about_dialog, YASS_APP_WEBSITE); diff --git a/yass/src/gtk4/yass_window.ui b/yass/src/gtk4/yass_window.ui index e778c69f6b..9764307fac 100644 --- a/yass/src/gtk4/yass_window.ui +++ b/yass/src/gtk4/yass_window.ui @@ -9,7 +9,7 @@ none - it.gui.yass + io.github.Chilledheart.yass diff --git a/yass/src/qt6/tray_icon.cpp b/yass/src/qt6/tray_icon.cpp index a51f8789c5..be65be084e 100644 --- a/yass/src/qt6/tray_icon.cpp +++ b/yass/src/qt6/tray_icon.cpp @@ -11,7 +11,7 @@ #include "qt6/yass_window.hpp" TrayIcon::TrayIcon(QObject* parent) : QSystemTrayIcon(parent) { - setIcon(QIcon(":/res/images/it.gui.yass.png")); + setIcon(QIcon(":/res/images/io.github.chilledheart.yass.png")); // create action QAction* show_action = new QAction(tr("Show"), this); diff --git a/yass/src/qt6/yass.cpp b/yass/src/qt6/yass.cpp index 32d9a4694a..67a864ff68 100644 --- a/yass/src/qt6/yass.cpp +++ b/yass/src/qt6/yass.cpp @@ -145,10 +145,10 @@ YASSApp::YASSApp(int& argc, char** argv) : QApplication(argc, argv) { setApplicationVersion(YASS_APP_TAG); #ifndef __APPLE__ - setWindowIcon(QIcon::fromTheme("it.gui.yass", QIcon(":/res/images/it.gui.yass.png"))); + setWindowIcon(QIcon::fromTheme("io.github.chilledheart.yass", QIcon(":/res/images/io.github.chilledheart.yass.png"))); #endif #if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) - setDesktopFileName("it.gui.yass"); + setDesktopFileName("io.github.chilledheart.yass"); #endif } diff --git a/yass/src/qt6/yass.qrc b/yass/src/qt6/yass.qrc index 6e35290ff5..bdc766505b 100644 --- a/yass/src/qt6/yass.qrc +++ b/yass/src/qt6/yass.qrc @@ -1,5 +1,5 @@ - images/it.gui.yass.png + images/io.github.chilledheart.yass.png diff --git a/yass/src/qt6/yass_window.cpp b/yass/src/qt6/yass_window.cpp index 3a477c4853..b5b1e8812a 100644 --- a/yass/src/qt6/yass_window.cpp +++ b/yass/src/qt6/yass_window.cpp @@ -30,7 +30,7 @@ #include "version.h" YASSWindow::YASSWindow(QWidget* parent) : QMainWindow(parent) { - setWindowIcon(QIcon::fromTheme("it.gui.yass", QIcon(":/res/images/it.gui.yass.png"))); + setWindowIcon(QIcon::fromTheme("io.github.chilledheart.yass", QIcon(":/res/images/io.github.chilledheart.yass.png"))); setWindowTitle(tr("YASS")); // Vertical Box diff --git a/yass/yass.spec.in b/yass/yass.spec.in index 18f378091e..f732ff6486 100644 --- a/yass/yass.spec.in +++ b/yass/yass.spec.in @@ -239,7 +239,7 @@ rm -rf %{buildroot} ninja install rm -rf %{buildroot}/%{_datadir}/doc cd .. -desktop-file-validate %{buildroot}%{_datadir}/applications/it.gui.yass.desktop +desktop-file-validate %{buildroot}%{_datadir}/applications/io.github.chilledheart.yass.desktop %find_lang %{name} %post @@ -252,16 +252,16 @@ update-desktop-database %dir /usr/share/applications/ %dir /usr/share/pixmaps/ %{_bindir}/yass -%{_datadir}/applications/it.gui.yass.desktop -%{_datadir}/pixmaps/it.gui.yass.png -%{_datadir}/icons/hicolor/16x16/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/22x22/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/24x24/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/32x32/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/48x48/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/128x128/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/256x256/apps/it.gui.yass.png -%{_datadir}/icons/hicolor/512x512/apps/it.gui.yass.png +%{_datadir}/applications/io.github.chilledheart.yass.desktop +%{_datadir}/pixmaps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/16x16/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/22x22/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/24x24/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/32x32/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/48x48/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/128x128/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/256x256/apps/io.github.chilledheart.yass.png +%{_datadir}/icons/hicolor/512x512/apps/io.github.chilledheart.yass.png %package server Summary: Lightweight and Secure http/socks4/socks5 Proxy (Server Side) @@ -317,6 +317,11 @@ for embedded devices and low end boxes. %systemd_postun_with_restart yass-redir.service %changelog +* Wed Aug 7 2024 Chilledheart - 1.12.3-1 + - gtk4: fix crash +* Wed Aug 7 2024 Chilledheart - 1.12.2-1 + - transfer: optimize rate limit algorithm + - replace app id * Fri Jul 26 2024 Chilledheart - 1.12.1-1 - ui: lower veritical spacing to 6 pixels - gtk4: close dialogs on signal SIGINT diff --git a/yesplaymusic/public/robots.txt b/yesplaymusic/public/robots.txt index eb0536286f..1f53798bb4 100644 --- a/yesplaymusic/public/robots.txt +++ b/yesplaymusic/public/robots.txt @@ -1,2 +1,2 @@ User-agent: * -Disallow: +Disallow: / diff --git a/yesplaymusic/src/components/CoverRow.vue b/yesplaymusic/src/components/CoverRow.vue index 77eb66ef5d..46857a4dc7 100644 --- a/yesplaymusic/src/components/CoverRow.vue +++ b/yesplaymusic/src/components/CoverRow.vue @@ -96,7 +96,7 @@ export default { return this.type === 'playlist' && item.privacy === 10; }, isExplicit(item) { - return this.type === 'album' && item.mark === 1056768; + return this.type === 'album' && (item.mark & 1048576) === 1048576; }, getTitleLink(item) { return `/${this.type}/${item.id}`; diff --git a/yesplaymusic/src/components/TrackListItem.vue b/yesplaymusic/src/components/TrackListItem.vue index 3eef677d27..becdc40568 100644 --- a/yesplaymusic/src/components/TrackListItem.vue +++ b/yesplaymusic/src/components/TrackListItem.vue @@ -42,13 +42,13 @@ :exclude="$parent.albumObject.artist.name" prefix="-" /> -
diff --git a/yesplaymusic/src/views/album.vue b/yesplaymusic/src/views/album.vue index 7b032b754f..439f10b556 100644 --- a/yesplaymusic/src/views/album.vue +++ b/yesplaymusic/src/views/album.vue @@ -28,7 +28,7 @@ Compilation by Various Artists
- {{ diff --git a/youtube-dl/test/test_jsinterp.py b/youtube-dl/test/test_jsinterp.py index 104e766be3..c7a4f2cbf2 100644 --- a/youtube-dl/test/test_jsinterp.py +++ b/youtube-dl/test/test_jsinterp.py @@ -425,6 +425,34 @@ class TestJSInterpreter(unittest.TestCase): self._test(jsi, [''], args=['', '-']) self._test(jsi, [], args=['', '']) + def test_slice(self): + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice()}', [0, 1, 2, 3, 4, 5, 6, 7, 8]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(0)}', [0, 1, 2, 3, 4, 5, 6, 7, 8]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(5)}', [5, 6, 7, 8]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(99)}', []) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(-2)}', [7, 8]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(-99)}', [0, 1, 2, 3, 4, 5, 6, 7, 8]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(0, 0)}', []) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(1, 0)}', []) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(0, 1)}', [0]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(3, 6)}', [3, 4, 5]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(1, -1)}', [1, 2, 3, 4, 5, 6, 7]) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(-1, 1)}', []) + self._test('function f(){return [0, 1, 2, 3, 4, 5, 6, 7, 8].slice(-3, -1)}', [6, 7]) + self._test('function f(){return "012345678".slice()}', '012345678') + self._test('function f(){return "012345678".slice(0)}', '012345678') + self._test('function f(){return "012345678".slice(5)}', '5678') + self._test('function f(){return "012345678".slice(99)}', '') + self._test('function f(){return "012345678".slice(-2)}', '78') + self._test('function f(){return "012345678".slice(-99)}', '012345678') + self._test('function f(){return "012345678".slice(0, 0)}', '') + self._test('function f(){return "012345678".slice(1, 0)}', '') + self._test('function f(){return "012345678".slice(0, 1)}', '0') + self._test('function f(){return "012345678".slice(3, 6)}', '345') + self._test('function f(){return "012345678".slice(1, -1)}', '1234567') + self._test('function f(){return "012345678".slice(-1, 1)}', '') + self._test('function f(){return "012345678".slice(-3, -1)}', '67') + if __name__ == '__main__': unittest.main() diff --git a/youtube-dl/test/test_youtube_signature.py b/youtube-dl/test/test_youtube_signature.py index 1c5f667f57..56e92fac5d 100644 --- a/youtube-dl/test/test_youtube_signature.py +++ b/youtube-dl/test/test_youtube_signature.py @@ -178,6 +178,10 @@ _NSIG_TESTS = [ 'https://www.youtube.com/s/player/20dfca59/player_ias.vflset/en_US/base.js', '-fLCxedkAk4LUTK2', 'O8kfRq1y1eyHGw', ), + ( + 'https://www.youtube.com/s/player/b12cc44b/player_ias.vflset/en_US/base.js', + 'keLa5R2U00sR9SQK', 'N1OGyujjEwMnLw', + ), ] diff --git a/youtube-dl/youtube_dl/extractor/youtube.py b/youtube-dl/youtube_dl/extractor/youtube.py index 509e374a4d..6fe520e9a4 100644 --- a/youtube-dl/youtube_dl/extractor/youtube.py +++ b/youtube-dl/youtube_dl/extractor/youtube.py @@ -1661,23 +1661,33 @@ class YoutubeIE(YoutubeBaseInfoExtractor): # new: (b=String.fromCharCode(110),c=a.get(b))&&c=nfunc[idx](c) # or: (b="nn"[+a.D],c=a.get(b))&&(c=nfunc[idx](c) # or: (PL(a),b=a.j.n||null)&&(b=nfunc[idx](b) - # old: .get("n"))&&(b=nfunc[idx](b) - # older: .get("n"))&&(b=nfunc(b) + # or: (b="nn"[+a.D],vL(a),c=a.j[b]||null)&&(c=narray[idx](c),a.set(b,c),narray.length||nfunc("") + # old: (b=a.get("n"))&&(b=nfunc[idx](b)(?P[a-z])\s*=\s*[a-z]\s* + # older: (b=a.get("n"))&&(b=nfunc(b) r'''(?x) - (?:\((?:[\w$()\s]+,)*?\s*(?P[a-z])\s*=\s*(?: - String\s*\.\s*fromCharCode\s*\(\s*110\s*\)| - "n+"\[\s*\+?s*[\w$.]+\s*]| - (?P(?:[\w$]+\s*\.\s*)+n\b(?:(?!&&).)+\)) - )\s* - (?(b1) - &&\s*\(\s*(?P=b)| - (?: - ,(?P[a-z])\s*=\s*[a-z]\s*)? - \.\s*get\s*\(\s*(?(b)(?P=b)|"n{1,2}")(?:\s*\)){2}\s* - &&\s*\(\s*(?(c)(?P=c)|(?P=b)) - ) - )\s*=\s* - (?P[a-zA-Z_$][\w$]*)(?:\s*\[(?P\d+)\])?\s*\(\s*[\w$]+\s*\) + \((?:[\w$()\s]+,)*?\s* # ( + (?P[a-z])\s*=\s* # b= + (?: + (?: # expect ,c=a.get(b) (etc) + String\s*\.\s*fromCharCode\s*\(\s*110\s*\)| + "n+"\[\s*\+?s*[\w$.]+\s*] + )\s*(?:,[\w$()\s]+(?=,))*| + (?P[\w$]+) # a (old[er]) + )\s* + (?(old) + # b.get("n") + (?:\.\s*[\w$]+\s*|\[\s*[\w$]+\s*]\s*)*? + (?:\.\s*n|\[\s*"n"\s*]|\.\s*get\s*\(\s*"n"\s*\)) + | # ,c=a.get(b) + ,\s*(?P[a-z])\s*=\s*[a-z]\s* + (?:\.\s*[\w$]+\s*|\[\s*[\w$]+\s*]\s*)*? + (?:\[\s*(?P=b)\s*]|\.\s*get\s*\(\s*(?P=b)\s*\)) + ) + # interstitial junk + \s*(?:\|\|\s*null\s*)?(?:\)\s*)?&&\s*(?:\(\s*)? + (?(c)(?P=c)|(?P=b))\s*=\s* # [c|b]= + # nfunc|nfunc[idx] + (?P[a-zA-Z_$][\w$]*)(?:\s*\[(?P\d+)\])?\s*\(\s*[\w$]+\s*\) ''', jscode, 'Initial JS player n function name', group=('nfunc', 'idx'), default=(None, None)) # thx bashonly: yt-dlp/yt-dlp/pull/10611 @@ -1690,7 +1700,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor): \s*\{(?:(?!};).)+?["']enhanced_except_ ''', jscode, 'Initial JS player n function name', group='name') if not idx: - self.report_warning('Falling back to generic n function search') return func_name return self._parse_json(self._search_regex( diff --git a/youtube-dl/youtube_dl/jsinterp.py b/youtube-dl/youtube_dl/jsinterp.py index 949f77775e..a616ad070b 100644 --- a/youtube-dl/youtube_dl/jsinterp.py +++ b/youtube-dl/youtube_dl/jsinterp.py @@ -925,9 +925,16 @@ class JSInterpreter(object): obj.reverse() return obj elif member == 'slice': - assertion(isinstance(obj, list), 'must be applied on a list') - assertion(len(argvals) == 1, 'takes exactly one argument') - return obj[argvals[0]:] + assertion(isinstance(obj, (list, compat_str)), 'must be applied on a list or string') + # From [1]: + # .slice() - like [:] + # .slice(n) - like [n:] (not [slice(n)] + # .slice(m, n) - like [m:n] or [slice(m, n)] + # [1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice + assertion(len(argvals) <= 2, 'takes between 0 and 2 arguments') + if len(argvals) < 2: + argvals += (None,) + return obj[slice(*argvals)] elif member == 'splice': assertion(isinstance(obj, list), 'must be applied on a list') assertion(argvals, 'takes one or more arguments')