mirror of
https://github.com/bolucat/Archive.git
synced 2025-10-26 17:50:48 +08:00
Update On Wed Dec 4 19:40:20 CET 2024
This commit is contained in:
1
.github/update.log
vendored
1
.github/update.log
vendored
@@ -844,3 +844,4 @@ Update On Sat Nov 30 19:35:41 CET 2024
|
||||
Update On Sun Dec 1 19:36:04 CET 2024
|
||||
Update On Mon Dec 2 19:39:13 CET 2024
|
||||
Update On Tue Dec 3 19:35:29 CET 2024
|
||||
Update On Wed Dec 4 19:40:09 CET 2024
|
||||
|
||||
@@ -127,10 +127,10 @@ func router(isDebug bool, secret string, dohServer string, cors Cors) *chi.Mux {
|
||||
r.Mount("/providers/rules", ruleProviderRouter())
|
||||
r.Mount("/cache", cacheRouter())
|
||||
r.Mount("/dns", dnsRouter())
|
||||
if !embedMode { // disallow restart and upgrade in embed mode
|
||||
if !embedMode { // disallow restart in embed mode
|
||||
r.Mount("/restart", restartRouter())
|
||||
r.Mount("/upgrade", upgradeRouter())
|
||||
}
|
||||
r.Mount("/upgrade", upgradeRouter())
|
||||
addExternalRouters(r)
|
||||
|
||||
})
|
||||
|
||||
@@ -14,9 +14,11 @@ import (
|
||||
|
||||
func upgradeRouter() http.Handler {
|
||||
r := chi.NewRouter()
|
||||
r.Post("/", upgradeCore)
|
||||
r.Post("/ui", updateUI)
|
||||
if !embedMode { // disallow upgrade core/geo in embed mode
|
||||
r.Post("/", upgradeCore)
|
||||
r.Post("/geo", updateGeoDatabases)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
|
||||
52
clash-nyanpasu/backend/Cargo.lock
generated
52
clash-nyanpasu/backend/Cargo.lock
generated
@@ -313,9 +313,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.93"
|
||||
version = "1.0.94"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
|
||||
checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
|
||||
|
||||
[[package]]
|
||||
name = "arbitrary"
|
||||
@@ -683,7 +683,7 @@ version = "0.5.0"
|
||||
source = "git+https://github.com/libnyanpasu/auto-launch.git#729d5429dd689067047489af4a0a32f7013854c8"
|
||||
dependencies = [
|
||||
"dirs 5.0.1",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"windows-registry 0.3.0",
|
||||
"windows-result 0.2.0",
|
||||
]
|
||||
@@ -1433,9 +1433,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.21"
|
||||
version = "4.5.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f"
|
||||
checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
@@ -1443,9 +1443,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.21"
|
||||
version = "4.5.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec"
|
||||
checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
@@ -1573,7 +1573,7 @@ dependencies = [
|
||||
"tauri-plugin-updater",
|
||||
"tempfile",
|
||||
"test-log",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"timeago",
|
||||
"tokio",
|
||||
"tracing",
|
||||
@@ -4707,7 +4707,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]]
|
||||
@@ -6694,7 +6694,7 @@ dependencies = [
|
||||
"rustc-hash 2.1.0",
|
||||
"rustls",
|
||||
"socket2",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tracing",
|
||||
]
|
||||
@@ -6713,7 +6713,7 @@ dependencies = [
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"slab",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tinyvec",
|
||||
"tracing",
|
||||
"web-time",
|
||||
@@ -6730,7 +6730,7 @@ dependencies = [
|
||||
"once_cell",
|
||||
"socket2",
|
||||
"tracing",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8411,7 +8411,7 @@ dependencies = [
|
||||
"tauri-runtime",
|
||||
"tauri-runtime-wry",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tray-icon",
|
||||
"url",
|
||||
@@ -8464,7 +8464,7 @@ dependencies = [
|
||||
"sha2 0.10.8",
|
||||
"syn 2.0.90",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"time",
|
||||
"url",
|
||||
"uuid",
|
||||
@@ -8546,7 +8546,7 @@ dependencies = [
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"tauri-plugin-fs",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"url",
|
||||
]
|
||||
|
||||
@@ -8567,7 +8567,7 @@ dependencies = [
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"toml 0.8.19",
|
||||
"url",
|
||||
"uuid",
|
||||
@@ -8700,7 +8700,7 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"url",
|
||||
"windows 0.58.0",
|
||||
]
|
||||
@@ -8760,7 +8760,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"serde_with",
|
||||
"swift-rs",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"toml 0.8.19",
|
||||
"url",
|
||||
"urlpattern",
|
||||
@@ -8799,7 +8799,7 @@ dependencies = [
|
||||
"fastrand 2.2.0",
|
||||
"once_cell",
|
||||
"rustix",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8932,11 +8932,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "2.0.3"
|
||||
version = "2.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
|
||||
checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
|
||||
dependencies = [
|
||||
"thiserror-impl 2.0.3",
|
||||
"thiserror-impl 2.0.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8952,9 +8952,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "2.0.3"
|
||||
version = "2.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
|
||||
checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -10430,7 +10430,7 @@ version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||
dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -11393,7 +11393,7 @@ dependencies = [
|
||||
"pbkdf2",
|
||||
"rand 0.8.5",
|
||||
"sha1",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"time",
|
||||
"zeroize",
|
||||
"zopfli",
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
"@emotion/styled": "11.13.5",
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@material/material-color-utilities": "0.3.0",
|
||||
"@mui/icons-material": "6.1.9",
|
||||
"@mui/lab": "6.0.0-beta.17",
|
||||
"@mui/material": "6.1.9",
|
||||
"@mui/icons-material": "6.1.10",
|
||||
"@mui/lab": "6.0.0-beta.18",
|
||||
"@mui/material": "6.1.10",
|
||||
"@nyanpasu/interface": "workspace:^",
|
||||
"@nyanpasu/ui": "workspace:^",
|
||||
"@tanstack/router-zod-adapter": "1.81.5",
|
||||
@@ -29,7 +29,7 @@
|
||||
"country-code-emoji": "2.3.0",
|
||||
"dayjs": "1.11.13",
|
||||
"framer-motion": "12.0.0-alpha.2",
|
||||
"i18next": "24.0.2",
|
||||
"i18next": "24.0.5",
|
||||
"jotai": "2.10.3",
|
||||
"json-schema": "0.4.0",
|
||||
"material-react-table": "3.0.1",
|
||||
@@ -54,8 +54,8 @@
|
||||
"@emotion/react": "11.13.5",
|
||||
"@iconify/json": "2.2.279",
|
||||
"@monaco-editor/react": "4.6.0",
|
||||
"@tanstack/react-router": "1.85.4",
|
||||
"@tanstack/router-devtools": "1.85.4",
|
||||
"@tanstack/react-router": "1.85.5",
|
||||
"@tanstack/router-devtools": "1.85.5",
|
||||
"@tanstack/router-plugin": "1.85.3",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.0.1",
|
||||
"@tauri-apps/plugin-dialog": "2.0.1",
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@material/material-color-utilities": "0.3.0",
|
||||
"@mui/icons-material": "6.1.9",
|
||||
"@mui/lab": "6.0.0-beta.17",
|
||||
"@mui/material": "6.1.9",
|
||||
"@mui/icons-material": "6.1.10",
|
||||
"@mui/lab": "6.0.0-beta.18",
|
||||
"@mui/material": "6.1.10",
|
||||
"@radix-ui/react-portal": "1.1.2",
|
||||
"@radix-ui/react-scroll-area": "1.2.1",
|
||||
"@tauri-apps/api": "2.1.1",
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"latest": {
|
||||
"mihomo": "v1.18.10",
|
||||
"mihomo_alpha": "alpha-5a24efd",
|
||||
"clash_rs": "v0.7.2",
|
||||
"clash_rs": "v0.7.3",
|
||||
"clash_premium": "2023-09-05-gdcc8d87",
|
||||
"clash_rs_alpha": "0.7.2-alpha+sha.866f844"
|
||||
"clash_rs_alpha": "0.7.3-alpha+sha.e711fd9"
|
||||
},
|
||||
"arch_template": {
|
||||
"mihomo": {
|
||||
@@ -69,5 +69,5 @@
|
||||
"linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf"
|
||||
}
|
||||
},
|
||||
"updated_at": "2024-12-02T22:21:14.102Z"
|
||||
"updated_at": "2024-12-03T22:20:58.004Z"
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
|
||||
"stylelint-order": "6.0.4",
|
||||
"stylelint-scss": "6.10.0",
|
||||
"tailwindcss": "3.4.15",
|
||||
"tailwindcss": "3.4.16",
|
||||
"tsx": "4.19.2",
|
||||
"typescript": "5.7.2"
|
||||
},
|
||||
|
||||
247
clash-nyanpasu/pnpm-lock.yaml
generated
247
clash-nyanpasu/pnpm-lock.yaml
generated
@@ -150,8 +150,8 @@ importers:
|
||||
specifier: 6.10.0
|
||||
version: 6.10.0(stylelint@16.11.0(typescript@5.7.2))
|
||||
tailwindcss:
|
||||
specifier: 3.4.15
|
||||
version: 3.4.15
|
||||
specifier: 3.4.16
|
||||
version: 3.4.16
|
||||
tsx:
|
||||
specifier: 4.19.2
|
||||
version: 4.19.2
|
||||
@@ -202,14 +202,14 @@ importers:
|
||||
specifier: 0.3.0
|
||||
version: 0.3.0
|
||||
'@mui/icons-material':
|
||||
specifier: 6.1.9
|
||||
version: 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
specifier: 6.1.10
|
||||
version: 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/lab':
|
||||
specifier: 6.0.0-beta.17
|
||||
version: 6.0.0-beta.17(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
specifier: 6.0.0-beta.18
|
||||
version: 6.0.0-beta.18(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material':
|
||||
specifier: 6.1.9
|
||||
version: 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
specifier: 6.1.10
|
||||
version: 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@nyanpasu/interface':
|
||||
specifier: workspace:^
|
||||
version: link:../interface
|
||||
@@ -218,7 +218,7 @@ importers:
|
||||
version: link:../ui
|
||||
'@tanstack/router-zod-adapter':
|
||||
specifier: 1.81.5
|
||||
version: 1.81.5(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)
|
||||
version: 1.81.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)
|
||||
'@tauri-apps/api':
|
||||
specifier: 2.1.1
|
||||
version: 2.1.1
|
||||
@@ -241,8 +241,8 @@ importers:
|
||||
specifier: 12.0.0-alpha.2
|
||||
version: 12.0.0-alpha.2(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
i18next:
|
||||
specifier: 24.0.2
|
||||
version: 24.0.2(typescript@5.7.2)
|
||||
specifier: 24.0.5
|
||||
version: 24.0.5(typescript@5.7.2)
|
||||
jotai:
|
||||
specifier: 2.10.3
|
||||
version: 2.10.3(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
@@ -251,13 +251,13 @@ importers:
|
||||
version: 0.4.0
|
||||
material-react-table:
|
||||
specifier: 3.0.1
|
||||
version: 3.0.1(6jmykk7zxkzevdzoaapf5k5sq4)
|
||||
version: 3.0.1(deedw3wfuk6nv6e6dqhqulobfi)
|
||||
monaco-editor:
|
||||
specifier: 0.52.0
|
||||
version: 0.52.0
|
||||
mui-color-input:
|
||||
specifier: 5.0.1
|
||||
version: 5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
version: 5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
react:
|
||||
specifier: rc
|
||||
version: 19.0.0-rc.1
|
||||
@@ -272,10 +272,10 @@ importers:
|
||||
version: 1.6.5(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
react-hook-form-mui:
|
||||
specifier: 7.4.0
|
||||
version: 7.4.0(l2o4yer4mnv5n4s7ohpbf3i6j4)
|
||||
version: 7.4.0(sivtflucb74mxg45qzhfuk7yha)
|
||||
react-i18next:
|
||||
specifier: 15.1.3
|
||||
version: 15.1.3(i18next@24.0.2(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
version: 15.1.3(i18next@24.0.5(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
react-markdown:
|
||||
specifier: 9.0.1
|
||||
version: 9.0.1(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
@@ -311,11 +311,11 @@ importers:
|
||||
specifier: 4.6.0
|
||||
version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@tanstack/react-router':
|
||||
specifier: 1.85.4
|
||||
version: 1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
specifier: 1.85.5
|
||||
version: 1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@tanstack/router-devtools':
|
||||
specifier: 1.85.4
|
||||
version: 1.85.4(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
specifier: 1.85.5
|
||||
version: 1.85.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@tanstack/router-plugin':
|
||||
specifier: 1.85.3
|
||||
version: 1.85.3(vite@6.0.2(@types/node@22.10.1)(jiti@2.4.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.81.1)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.5.1))
|
||||
@@ -422,14 +422,14 @@ importers:
|
||||
specifier: 0.3.0
|
||||
version: 0.3.0
|
||||
'@mui/icons-material':
|
||||
specifier: 6.1.9
|
||||
version: 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
specifier: 6.1.10
|
||||
version: 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/lab':
|
||||
specifier: 6.0.0-beta.17
|
||||
version: 6.0.0-beta.17(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
specifier: 6.0.0-beta.18
|
||||
version: 6.0.0-beta.18(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material':
|
||||
specifier: 6.1.9
|
||||
version: 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
specifier: 6.1.10
|
||||
version: 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@radix-ui/react-portal':
|
||||
specifier: 1.1.2
|
||||
version: 1.1.2(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
@@ -468,7 +468,7 @@ importers:
|
||||
version: 4.1.2(react@19.0.0-rc.1)
|
||||
react-i18next:
|
||||
specifier: 15.1.3
|
||||
version: 15.1.3(i18next@24.0.2(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
version: 15.1.3(i18next@24.0.5(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
react-use:
|
||||
specifier: 17.5.1
|
||||
version: 17.5.1(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
@@ -1779,28 +1779,39 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/core-downloads-tracker@6.1.9':
|
||||
resolution: {integrity: sha512-TWqj7b1w5cmSz4H/uf+y2AHxAH4ldPR7D2bz0XVyn60GCAo/zRbRPx7cF8gTs/i7CiYeHzV6dtat0VpMwOtolw==}
|
||||
|
||||
'@mui/icons-material@6.1.9':
|
||||
resolution: {integrity: sha512-AzlhIT51rdjkZ/EcUV2dbhNkNSUHIqCnNoUxodpiTw8buyAUBd+qnxg5OBSuPpun/ZEdSSB8Q7Uyh6zqjiMsEQ==}
|
||||
'@mui/base@5.0.0-beta.64':
|
||||
resolution: {integrity: sha512-nu663PoZs/Pee0fkPYkjUADfT+AAi2QWvvHghDhLeSx8sa3i+GGaOoUsFmB4CPlyYqWfq9hRGA7H1T3d6VrGgw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@mui/material': ^6.1.9
|
||||
'@types/react': npm:types-react@rc
|
||||
react: ^17.0.0 || ^18.0.0
|
||||
react-dom: ^17.0.0 || ^18.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/core-downloads-tracker@6.1.10':
|
||||
resolution: {integrity: sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==}
|
||||
|
||||
'@mui/icons-material@6.1.10':
|
||||
resolution: {integrity: sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@mui/material': ^6.1.10
|
||||
'@types/react': npm:types-react@rc
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/lab@6.0.0-beta.17':
|
||||
resolution: {integrity: sha512-Ls1pIuYi5D9wq9mUwncky6CWokd6CCqQDCxXbm0TP0e7ksU5DcCPUZXBmTWQgbkldLu14aUXbJHyts63L0rycQ==}
|
||||
'@mui/lab@6.0.0-beta.18':
|
||||
resolution: {integrity: sha512-O7jNn36Jb0530NOZeFLj33RGB57x3kfyiYOaj5sL/j/Pmq9T0tonKMkoW/AUCucmBa7RuEzEYMyqBpfqminebA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
'@emotion/styled': ^11.3.0
|
||||
'@mui/material': ^6.1.9
|
||||
'@mui/material-pigment-css': ^6.1.9
|
||||
'@mui/material': ^6.1.10
|
||||
'@mui/material-pigment-css': ^6.1.10
|
||||
'@types/react': npm:types-react@rc
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
@@ -1814,13 +1825,13 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/material@6.1.9':
|
||||
resolution: {integrity: sha512-NwqIN0bdsgzSbZd5JFcC+2ez0XW/XNs8uiV2PDHrqQ4qf/FEasFJG1z6g8JbCN0YlTrHZekVb17X0Fv0qcYJfQ==}
|
||||
'@mui/material@6.1.10':
|
||||
resolution: {integrity: sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
'@emotion/styled': ^11.3.0
|
||||
'@mui/material-pigment-css': ^6.1.9
|
||||
'@mui/material-pigment-css': ^6.1.10
|
||||
'@types/react': npm:types-react@rc
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
@@ -1844,8 +1855,8 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/private-theming@6.1.9':
|
||||
resolution: {integrity: sha512-7aum/O1RquBYhfwL/7egDyl9GqJgPM6hoJDFFBbhF6Sgv9yI9v4w3ArKUkuVvR0CtVj4NXRVMKEioh1bjUzvuA==}
|
||||
'@mui/private-theming@6.1.10':
|
||||
resolution: {integrity: sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@types/react': npm:types-react@rc
|
||||
@@ -1867,8 +1878,8 @@ packages:
|
||||
'@emotion/styled':
|
||||
optional: true
|
||||
|
||||
'@mui/styled-engine@6.1.9':
|
||||
resolution: {integrity: sha512-xynSLlJRxHLzSfQaiDjkaTx8LiFb9ByVa7aOdwFnTxGWFMY1F+mkXwAUY4jDDE+MAxkWxlzzQE0wOohnsxhdQg==}
|
||||
'@mui/styled-engine@6.1.10':
|
||||
resolution: {integrity: sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.4.1
|
||||
@@ -1896,8 +1907,8 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/system@6.1.9':
|
||||
resolution: {integrity: sha512-8x+RucnNp21gfFYsklCaZf0COXbv3+v0lrVuXONxvPEkESi2rwLlOi8UPJfcz6LxZOAX3v3oQ7qw18vnpgueRg==}
|
||||
'@mui/system@6.1.10':
|
||||
resolution: {integrity: sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
@@ -1930,6 +1941,16 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/utils@6.1.10':
|
||||
resolution: {integrity: sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@types/react': npm:types-react@rc
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/utils@6.1.9':
|
||||
resolution: {integrity: sha512-N7uzBp7p2or+xanXn3aH2OTINC6F/Ru/U8h6amhRZEev8bJhKN86rIDIoxZZ902tj+09LXtH83iLxFMjMHyqNA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -2648,8 +2669,8 @@ packages:
|
||||
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@tanstack/react-router@1.85.4':
|
||||
resolution: {integrity: sha512-CmrgrMtIIVnXS/og5W3glP1noBlFSD3mRaBgP6nTEbkZZ25nN1s52C35dnsMNuAQayQsVJNlkuSNZv3elfrBmA==}
|
||||
'@tanstack/react-router@1.85.5':
|
||||
resolution: {integrity: sha512-OCPka0mj+lPCUPiZmQUavRKu7NB8/HrDZIl8MHpjgzkvSOV0U+mszUl3FJxiMb1vXOJaY0/gny/96YbCzcsgdA==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
'@tanstack/router-generator': 1.85.3
|
||||
@@ -2678,11 +2699,11 @@ packages:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
|
||||
'@tanstack/router-devtools@1.85.4':
|
||||
resolution: {integrity: sha512-Io8qyv5WMYa+gk83/dQ0OlcOsvCxSY2PTNEYUQ4wHfbEV1RW3IjwOVL6/n7p7TDhjD5ou4eKufF9zDykdyFldQ==}
|
||||
'@tanstack/router-devtools@1.85.5':
|
||||
resolution: {integrity: sha512-C5A0TP2dFSu3o4Bc1jHzX6ZRC4FC3BmjPJbUx3wJJduPaW72FwTqbGfeT79oyk8mOC69bvLTLydRGfMHQZbIRQ==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
'@tanstack/react-router': ^1.85.4
|
||||
'@tanstack/react-router': ^1.85.5
|
||||
react: '>=18'
|
||||
react-dom: '>=18'
|
||||
|
||||
@@ -4824,8 +4845,8 @@ packages:
|
||||
hyphenate-style-name@1.1.0:
|
||||
resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
|
||||
|
||||
i18next@24.0.2:
|
||||
resolution: {integrity: sha512-D88xyIGcWAKwBTAs4RSqASi8NXR/NhCVSTM4LDbdoU8qb/5dcEZjNCLDhtQBB7Epw/Cp1w2vH/3ujoTbqLSs5g==}
|
||||
i18next@24.0.5:
|
||||
resolution: {integrity: sha512-1jSdEzgFPGLZRsQwydoMFCBBaV+PmrVEO5WhANllZPX4y2JSGTxUjJ+xVklHIsiS95uR8gYc/y0hYZWevucNjg==}
|
||||
peerDependencies:
|
||||
typescript: ^5
|
||||
peerDependenciesMeta:
|
||||
@@ -5329,6 +5350,10 @@ packages:
|
||||
resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
lilconfig@3.1.3:
|
||||
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
lines-and-columns@1.2.4:
|
||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||
|
||||
@@ -7129,8 +7154,8 @@ packages:
|
||||
engines: {node: '>=8.9.0'}
|
||||
hasBin: true
|
||||
|
||||
tailwindcss@3.4.15:
|
||||
resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==}
|
||||
tailwindcss@3.4.16:
|
||||
resolution: {integrity: sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -9148,24 +9173,38 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/core-downloads-tracker@6.1.9': {}
|
||||
|
||||
'@mui/icons-material@6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
'@mui/base@5.0.0-beta.64(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@popperjs/core': 2.11.8
|
||||
clsx: 2.1.1
|
||||
prop-types: 15.8.1
|
||||
react: 19.0.0-rc.1
|
||||
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/core-downloads-tracker@6.1.10': {}
|
||||
|
||||
'@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
react: 19.0.0-rc.1
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/lab@6.0.0-beta.17(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
'@mui/lab@6.0.0-beta.18(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/base': 5.0.0-beta.63(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/system': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/base': 5.0.0-beta.64(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/system': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
clsx: 2.1.1
|
||||
prop-types: 15.8.1
|
||||
react: 19.0.0-rc.1
|
||||
@@ -9175,13 +9214,13 @@ snapshots:
|
||||
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
'@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/core-downloads-tracker': 6.1.9
|
||||
'@mui/system': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/core-downloads-tracker': 6.1.10
|
||||
'@mui/system': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@popperjs/core': 2.11.8
|
||||
'@types/react-transition-group': 4.4.11
|
||||
clsx: 2.1.1
|
||||
@@ -9205,10 +9244,10 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/private-theming@6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
'@mui/private-theming@6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
prop-types: 15.8.1
|
||||
react: 19.0.0-rc.1
|
||||
optionalDependencies:
|
||||
@@ -9225,7 +9264,7 @@ snapshots:
|
||||
'@emotion/react': 11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
|
||||
'@mui/styled-engine@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)':
|
||||
'@mui/styled-engine@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@emotion/cache': 11.13.5
|
||||
@@ -9254,13 +9293,13 @@ snapshots:
|
||||
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/system@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
'@mui/system@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/private-theming': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/styled-engine': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@mui/private-theming': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/styled-engine': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
clsx: 2.1.1
|
||||
csstype: 3.1.3
|
||||
prop-types: 15.8.1
|
||||
@@ -9286,6 +9325,18 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/utils@6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
|
||||
'@types/prop-types': 15.7.13
|
||||
clsx: 2.1.1
|
||||
prop-types: 15.8.1
|
||||
react: 19.0.0-rc.1
|
||||
react-is: 18.3.1
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/utils@6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
@@ -9298,11 +9349,11 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': types-react@19.0.0-rc.1
|
||||
|
||||
'@mui/x-date-pickers@7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
'@mui/x-date-pickers@7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
'@mui/base': 5.0.0-beta.63(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/system': 5.16.7(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/utils': 5.16.6(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@types/react-transition-group': 4.4.11
|
||||
@@ -9949,7 +10000,7 @@ snapshots:
|
||||
dependencies:
|
||||
remove-accents: 0.5.0
|
||||
|
||||
'@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
|
||||
'@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@tanstack/history': 1.85.3
|
||||
'@tanstack/react-store': 0.6.1(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
@@ -9980,9 +10031,9 @@ snapshots:
|
||||
react: 19.0.0-rc.1
|
||||
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
|
||||
|
||||
'@tanstack/router-devtools@1.85.4(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
|
||||
'@tanstack/router-devtools@1.85.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
|
||||
dependencies:
|
||||
'@tanstack/react-router': 1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@tanstack/react-router': 1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
clsx: 2.1.1
|
||||
goober: 2.1.16(csstype@3.1.3)
|
||||
react: 19.0.0-rc.1
|
||||
@@ -10022,9 +10073,9 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)':
|
||||
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)':
|
||||
dependencies:
|
||||
'@tanstack/react-router': 1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@tanstack/react-router': 1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
zod: 3.23.8
|
||||
|
||||
'@tanstack/store@0.6.0': {}
|
||||
@@ -12498,7 +12549,7 @@ snapshots:
|
||||
|
||||
hyphenate-style-name@1.1.0: {}
|
||||
|
||||
i18next@24.0.2(typescript@5.7.2):
|
||||
i18next@24.0.5(typescript@5.7.2):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
optionalDependencies:
|
||||
@@ -12923,6 +12974,8 @@ snapshots:
|
||||
|
||||
lilconfig@3.1.2: {}
|
||||
|
||||
lilconfig@3.1.3: {}
|
||||
|
||||
lines-and-columns@1.2.4: {}
|
||||
|
||||
lint-staged@15.2.10:
|
||||
@@ -13059,13 +13112,13 @@ snapshots:
|
||||
escape-string-regexp: 4.0.0
|
||||
optional: true
|
||||
|
||||
material-react-table@3.0.1(6jmykk7zxkzevdzoaapf5k5sq4):
|
||||
material-react-table@3.0.1(deedw3wfuk6nv6e6dqhqulobfi):
|
||||
dependencies:
|
||||
'@emotion/react': 11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/icons-material': 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/icons-material': 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@tanstack/match-sorter-utils': 8.19.4
|
||||
'@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
'@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
|
||||
@@ -13406,12 +13459,12 @@ snapshots:
|
||||
|
||||
muggle-string@0.4.1: {}
|
||||
|
||||
mui-color-input@5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1):
|
||||
mui-color-input@5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1):
|
||||
dependencies:
|
||||
'@ctrl/tinycolor': 4.1.0
|
||||
'@emotion/react': 11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
react: 19.0.0-rc.1
|
||||
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
|
||||
optionalDependencies:
|
||||
@@ -13797,7 +13850,7 @@ snapshots:
|
||||
|
||||
postcss-load-config@4.0.2(postcss@8.4.49):
|
||||
dependencies:
|
||||
lilconfig: 3.1.2
|
||||
lilconfig: 3.1.3
|
||||
yaml: 2.5.1
|
||||
optionalDependencies:
|
||||
postcss: 8.4.49
|
||||
@@ -13999,24 +14052,24 @@ snapshots:
|
||||
react: 19.0.0-rc.1
|
||||
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
|
||||
|
||||
react-hook-form-mui@7.4.0(l2o4yer4mnv5n4s7ohpbf3i6j4):
|
||||
react-hook-form-mui@7.4.0(sivtflucb74mxg45qzhfuk7yha):
|
||||
dependencies:
|
||||
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
react: 19.0.0-rc.1
|
||||
react-hook-form: 7.52.1(react@19.0.0-rc.1)
|
||||
optionalDependencies:
|
||||
'@mui/icons-material': 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/icons-material': 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
|
||||
|
||||
react-hook-form@7.52.1(react@19.0.0-rc.1):
|
||||
dependencies:
|
||||
react: 19.0.0-rc.1
|
||||
|
||||
react-i18next@15.1.3(i18next@24.0.2(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1):
|
||||
react-i18next@15.1.3(i18next@24.0.5(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
html-parse-stringify: 3.0.1
|
||||
i18next: 24.0.2(typescript@5.7.2)
|
||||
i18next: 24.0.5(typescript@5.7.2)
|
||||
react: 19.0.0-rc.1
|
||||
optionalDependencies:
|
||||
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
|
||||
@@ -14879,7 +14932,7 @@ snapshots:
|
||||
reduce-css-calc: 2.1.8
|
||||
resolve: 1.22.8
|
||||
|
||||
tailwindcss@3.4.15:
|
||||
tailwindcss@3.4.16:
|
||||
dependencies:
|
||||
'@alloc/quick-lru': 5.2.0
|
||||
arg: 5.0.2
|
||||
@@ -14890,7 +14943,7 @@ snapshots:
|
||||
glob-parent: 6.0.2
|
||||
is-glob: 4.0.3
|
||||
jiti: 1.21.6
|
||||
lilconfig: 2.1.0
|
||||
lilconfig: 3.1.3
|
||||
micromatch: 4.0.8
|
||||
normalize-path: 3.0.0
|
||||
object-hash: 3.0.0
|
||||
|
||||
51
lede/package/kernel/ksmbd/Makefile
Normal file
51
lede/package/kernel/ksmbd/Makefile
Normal file
@@ -0,0 +1,51 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ksmbd
|
||||
PKG_VERSION:=2024.10.14
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/namjaejeon/ksmbd.git
|
||||
PKG_SOURCE_VERSION:=6a0efcd1301d72ccd76b2f457c1d0b56702f4908
|
||||
PKG_MIRROR_HASH:=02ba5828aae66d4fac202b8c4dcb1f45beb255655927741eb293d4a257822624
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define KernelPackage/fs-ksmbd
|
||||
SUBMENU:=Filesystems
|
||||
TITLE:=SMB kernel server support
|
||||
URL:=https://github.com/cifsd-team/cifsd
|
||||
FILES:=$(PKG_BUILD_DIR)/ksmbd.ko
|
||||
DEPENDS:= \
|
||||
+kmod-nls-base \
|
||||
+kmod-nls-utf8 \
|
||||
+kmod-crypto-md4 \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-ecb \
|
||||
+kmod-crypto-des \
|
||||
+kmod-crypto-sha256 \
|
||||
+kmod-crypto-cmac \
|
||||
+kmod-crypto-sha512 \
|
||||
+kmod-crypto-aead \
|
||||
+kmod-crypto-ccm \
|
||||
+kmod-crypto-gcm \
|
||||
+kmod-asn1-decoder \
|
||||
+kmod-oid-registry
|
||||
endef
|
||||
|
||||
|
||||
# The last two DEPENDS are hacks in order to get CONFIG_ASN1 and CONFIG_OID_REGISTRY
|
||||
# which it seems can't be selected independently. Some bug in either base or upstream.
|
||||
|
||||
define Build/Compile
|
||||
$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" \
|
||||
CONFIG_SMB_SERVER=m \
|
||||
modules
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-ksmbd))
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/glob.h
|
||||
+++ b/glob.h
|
||||
@@ -7,6 +7,8 @@
|
||||
#ifndef __KSMBD_GLOB_H
|
||||
#define __KSMBD_GLOB_H
|
||||
|
||||
+#undef CONFIG_MODULE_STRIPPED
|
||||
+
|
||||
#include <linux/ctype.h>
|
||||
|
||||
#include "unicode.h"
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/vfs.c
|
||||
+++ b/vfs.c
|
||||
@@ -2662,7 +2662,7 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 9, 0)
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 60)
|
||||
static inline bool is_dot_dotdot(const char *name, size_t len)
|
||||
{
|
||||
return len && unlikely(name[0] == '.') &&
|
||||
@@ -359,42 +359,6 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-jfs))
|
||||
|
||||
define KernelPackage/fs-ksmbd
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=SMB kernel server support
|
||||
DEPENDS:= \
|
||||
+kmod-nls-base \
|
||||
+kmod-nls-utf8 \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-ecb \
|
||||
+kmod-crypto-des \
|
||||
+kmod-crypto-sha256 \
|
||||
+kmod-crypto-cmac \
|
||||
+kmod-crypto-sha512 \
|
||||
+kmod-crypto-aead \
|
||||
+kmod-crypto-ccm \
|
||||
+kmod-crypto-gcm \
|
||||
+kmod-asn1-decoder \
|
||||
+kmod-oid-registry \
|
||||
+kmod-fs-smbfs-common
|
||||
KCONFIG:= \
|
||||
CONFIG_SMB_SERVER \
|
||||
CONFIG_SMB_SERVER_SMBDIRECT=n \
|
||||
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=n \
|
||||
CONFIG_SMB_SERVER_KERBEROS5=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/smb/server/ksmbd.ko
|
||||
AUTOLOAD:=$(call AutoLoad,41,ksmbd)
|
||||
endef
|
||||
|
||||
define KernelPackage/fs-ksmbd/description
|
||||
Kernel module for SMB kernel server support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fs-ksmbd))
|
||||
|
||||
|
||||
define KernelPackage/fs-minix
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=Minix filesystem support
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=readline
|
||||
PKG_VERSION:=8.2
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=@GNU/readline
|
||||
@@ -48,9 +48,13 @@ endef
|
||||
HOST_CONFIGURE_ARGS += --disable-shared --with-pic
|
||||
CONFIGURE_ARGS += --with-curses --disable-install-examples
|
||||
|
||||
HOST_CONFIGURE_VARS += \
|
||||
bash_cv_termcap_lib=libncurses
|
||||
|
||||
CONFIGURE_VARS += \
|
||||
bash_cv_wcwidth_broken=no \
|
||||
bash_cv_func_sigsetjmp=yes \
|
||||
bash_cv_termcap_lib=libncursesw
|
||||
|
||||
TARGET_CFLAGS += $(FPIC)
|
||||
HOST_CFLAGS += $(FPIC)
|
||||
@@ -65,7 +69,7 @@ endef
|
||||
|
||||
define Package/libreadline/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.so.* $(1)/usr/lib/
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.so* $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
|
||||
20
lede/package/libs/readline/patches/010-ncursesw-first.patch
Normal file
20
lede/package/libs/readline/patches/010-ncursesw-first.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -7305,6 +7305,9 @@ TERMCAP_DEP=
|
||||
elif test $bash_cv_termcap_lib = libncurses; then
|
||||
TERMCAP_LIB=-lncurses
|
||||
TERMCAP_DEP=
|
||||
+elif test $bash_cv_termcap_lib = libncursesw; then
|
||||
+TERMCAP_LIB=-lncursesw
|
||||
+TERMCAP_DEP=
|
||||
elif test $bash_cv_termcap_lib = libc; then
|
||||
TERMCAP_LIB=
|
||||
TERMCAP_DEP=
|
||||
@@ -7340,6 +7343,7 @@ case "$TERMCAP_LIB" in
|
||||
-ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;;
|
||||
-lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
|
||||
-lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
|
||||
+-lncursesw) TERMCAP_PKG_CONFIG_LIB=ncursesw ;;
|
||||
-ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
|
||||
*) TERMCAP_PKG_CONFIG_LIB=termcap ;;
|
||||
esac
|
||||
@@ -127,10 +127,10 @@ func router(isDebug bool, secret string, dohServer string, cors Cors) *chi.Mux {
|
||||
r.Mount("/providers/rules", ruleProviderRouter())
|
||||
r.Mount("/cache", cacheRouter())
|
||||
r.Mount("/dns", dnsRouter())
|
||||
if !embedMode { // disallow restart and upgrade in embed mode
|
||||
if !embedMode { // disallow restart in embed mode
|
||||
r.Mount("/restart", restartRouter())
|
||||
r.Mount("/upgrade", upgradeRouter())
|
||||
}
|
||||
r.Mount("/upgrade", upgradeRouter())
|
||||
addExternalRouters(r)
|
||||
|
||||
})
|
||||
|
||||
@@ -14,9 +14,11 @@ import (
|
||||
|
||||
func upgradeRouter() http.Handler {
|
||||
r := chi.NewRouter()
|
||||
r.Post("/", upgradeCore)
|
||||
r.Post("/ui", updateUI)
|
||||
if !embedMode { // disallow upgrade core/geo in embed mode
|
||||
r.Post("/", upgradeCore)
|
||||
r.Post("/geo", updateGeoDatabases)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
|
||||
46
shadowsocks-rust/Cargo.lock
generated
46
shadowsocks-rust/Cargo.lock
generated
@@ -545,18 +545,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.21"
|
||||
version = "4.5.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f"
|
||||
checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.21"
|
||||
version = "4.5.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec"
|
||||
checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
@@ -751,7 +751,7 @@ version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3983b127f13995e68c1e29071e5d115cd96f215ccb5e6812e3728cd6f92653b3"
|
||||
dependencies = [
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1348,7 +1348,7 @@ dependencies = [
|
||||
"rustls",
|
||||
"rustls-native-certs",
|
||||
"serde",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tinyvec",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
@@ -1378,7 +1378,7 @@ dependencies = [
|
||||
"rustls-native-certs",
|
||||
"serde",
|
||||
"smallvec",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tokio-rustls",
|
||||
@@ -1417,9 +1417,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
|
||||
checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
@@ -1880,7 +1880,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.52.6",
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2559,7 +2559,7 @@ dependencies = [
|
||||
"rustc-hash",
|
||||
"rustls",
|
||||
"socket2",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tracing",
|
||||
]
|
||||
@@ -2578,7 +2578,7 @@ dependencies = [
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"slab",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tinyvec",
|
||||
"tracing",
|
||||
"web-time",
|
||||
@@ -3175,7 +3175,7 @@ dependencies = [
|
||||
"shadowsocks-crypto",
|
||||
"socket2",
|
||||
"spin",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tokio-tfo",
|
||||
"trait-variant",
|
||||
@@ -3243,7 +3243,7 @@ dependencies = [
|
||||
"snmalloc-rs",
|
||||
"sysexits",
|
||||
"tcmalloc",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"time",
|
||||
"tokio",
|
||||
"tracing",
|
||||
@@ -3293,7 +3293,7 @@ dependencies = [
|
||||
"smoltcp",
|
||||
"socket2",
|
||||
"spin",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tokio-rustls",
|
||||
@@ -3593,11 +3593,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "2.0.3"
|
||||
version = "2.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
|
||||
checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
|
||||
dependencies = [
|
||||
"thiserror-impl 2.0.3",
|
||||
"thiserror-impl 2.0.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3613,9 +3613,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "2.0.3"
|
||||
version = "2.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
|
||||
checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -3886,7 +3886,7 @@ dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"nix",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"windows-sys 0.59.0",
|
||||
@@ -4159,7 +4159,7 @@ version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||
dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4387,7 +4387,7 @@ dependencies = [
|
||||
"futures",
|
||||
"libloading",
|
||||
"log",
|
||||
"thiserror 2.0.3",
|
||||
"thiserror 2.0.4",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
|
||||
187
sing-box/.github/workflows/build.yml
vendored
Normal file
187
sing-box/.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- dev-next
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build binary
|
||||
if: false
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- name: linux_386
|
||||
goos: linux
|
||||
goarch: 386
|
||||
- name: linux_amd64
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
- name: linux_arm64
|
||||
goos: linux
|
||||
goarch: arm64
|
||||
- name: linux_arm
|
||||
goos: linux
|
||||
goarch: arm
|
||||
- name: linux_s390x
|
||||
goos: linux
|
||||
goarch: s390x
|
||||
- name: linux_riscv64
|
||||
goos: linux
|
||||
goarch: riscv64
|
||||
- name: linux_mips64le
|
||||
goos: linux
|
||||
goarch: mips64le
|
||||
- name: windows_amd64
|
||||
goos: windows
|
||||
goarch: amd64
|
||||
require_legacy_go: true
|
||||
- name: windows_386
|
||||
goos: windows
|
||||
goarch: 386
|
||||
require_legacy_go: true
|
||||
- name: windows_arm64
|
||||
goos: windows
|
||||
goarch: arm64
|
||||
- name: darwin_amd64
|
||||
goos: darwin
|
||||
goarch: amd64
|
||||
require_legacy_go: true
|
||||
- name: android_arm64
|
||||
goos: android
|
||||
goarch: arm64
|
||||
- name: android_arm
|
||||
goos: android
|
||||
goarch: arm
|
||||
- name: android_amd64
|
||||
goos: android
|
||||
goarch: amd64
|
||||
- name: android_386
|
||||
goos: android
|
||||
goarch: 386
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.23
|
||||
- name: Cache legacy Go
|
||||
if: matrix.require_legacy_go
|
||||
id: cache-legacy-go
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/go/go1.20.14
|
||||
key: go120
|
||||
- name: Setup legacy Go
|
||||
if: matrix.require_legacy_go == 'true' && steps.cache-legacy-go.outputs.cache-hit != 'true'
|
||||
run: |-
|
||||
wget https://dl.google.com/go/go1.20.14.linux-amd64.tar.gz
|
||||
tar -xzf go1.20.14.linux-amd64.tar.gz
|
||||
mv go $HOME/go/go1.20.14
|
||||
- name: Setup Android NDK
|
||||
if: matrix.goos == 'android'
|
||||
uses: nttld/setup-ndk@v1
|
||||
with:
|
||||
ndk-version: r26b
|
||||
local-cache: true
|
||||
- name: Setup Goreleaser
|
||||
uses: goreleaser/goreleaser-action@v6
|
||||
with:
|
||||
distribution: goreleaser-pro
|
||||
version: latest
|
||||
install-only: true
|
||||
- name: Extract signing key
|
||||
run: |-
|
||||
mkdir -p $HOME/.gnupg
|
||||
cat > $HOME/.gnupg/sagernet.key <<EOF
|
||||
${{ secrets.GPG_KEY }}
|
||||
EOF
|
||||
- name: Build
|
||||
if: matrix.goos != 'android'
|
||||
run: |-
|
||||
goreleaser release --clean --split
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
|
||||
NFPM_KEY_PATH: ${{ env.HOME }}/.gnupg/sagernet.key
|
||||
NFPM_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
|
||||
- name: Build Android
|
||||
if: matrix.goos == 'android'
|
||||
run: |-
|
||||
go run -v ./cmd/internal/build goreleaser release --clean --split
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
|
||||
NFPM_KEY_PATH: ${{ env.HOME }}/.gnupg/sagernet.key
|
||||
NFPM_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.name }}
|
||||
path: 'dist/*'
|
||||
build_android_lib:
|
||||
name: Build Android
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: 'recursive'
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.23
|
||||
- name: Setup Android NDK
|
||||
id: setup-ndk
|
||||
uses: nttld/setup-ndk@v1
|
||||
with:
|
||||
ndk-version: r26c
|
||||
- name: Setup OpenJDK
|
||||
run: |-
|
||||
sudo apt update && sudo apt install -y openjdk-17-jdk-headless
|
||||
/usr/lib/jvm/java-17-openjdk-amd64/bin/java --version
|
||||
- name: Build library
|
||||
run: |-
|
||||
make lib_install
|
||||
export PATH="$PATH:$(go env GOPATH)/bin"
|
||||
make lib_android
|
||||
env:
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
- name: Checkout dev branch
|
||||
if: github.ref == 'refs/heads/dev-next'
|
||||
run: |-
|
||||
cd clients/android &&
|
||||
git checkout dev &&
|
||||
mkdir app/libs
|
||||
- name: Gradle cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: gradle-${{ hashFiles('**/*.gradle') }}
|
||||
- name: Extract signing key
|
||||
run: |-
|
||||
cat > clients/android/local.properties <<EOF
|
||||
${{ secrets.LOCAL_PROPERTIES }}
|
||||
EOF
|
||||
- name: Build Android
|
||||
run: |-
|
||||
mv libbox.aar clients/android/app/libs
|
||||
cd clients/android &&
|
||||
./gradlew :app:assemblePlayRelease
|
||||
env:
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android_apks
|
||||
path: clients/android/app/build/outputs/apk/play/release/*.apk
|
||||
219
sing-box/.github/workflows/debug.yml
vendored
219
sing-box/.github/workflows/debug.yml
vendored
@@ -1,219 +0,0 @@
|
||||
name: Debug build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- stable-next
|
||||
- main-next
|
||||
- dev-next
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- '.github/**'
|
||||
- '!.github/workflows/debug.yml'
|
||||
pull_request:
|
||||
branches:
|
||||
- stable-next
|
||||
- main-next
|
||||
- dev-next
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Debug build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.23
|
||||
- name: Run Test
|
||||
run: |
|
||||
go test -v ./...
|
||||
build_go120:
|
||||
name: Debug build (Go 1.20)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ~1.20
|
||||
- name: Cache go module
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/go/pkg/mod
|
||||
key: go120-${{ hashFiles('**/go.sum') }}
|
||||
- name: Run Test
|
||||
run: make ci_build_go120
|
||||
build_go121:
|
||||
name: Debug build (Go 1.21)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ~1.21
|
||||
- name: Cache go module
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/go/pkg/mod
|
||||
key: go121-${{ hashFiles('**/go.sum') }}
|
||||
- name: Run Test
|
||||
run: make ci_build
|
||||
build_go122:
|
||||
name: Debug build (Go 1.22)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ~1.22
|
||||
- name: Cache go module
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/go/pkg/mod
|
||||
key: go122-${{ hashFiles('**/go.sum') }}
|
||||
- name: Run Test
|
||||
run: make ci_build
|
||||
cross:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
# windows
|
||||
- name: windows-amd64
|
||||
goos: windows
|
||||
goarch: amd64
|
||||
goamd64: v1
|
||||
- name: windows-amd64-v3
|
||||
goos: windows
|
||||
goarch: amd64
|
||||
goamd64: v3
|
||||
- name: windows-386
|
||||
goos: windows
|
||||
goarch: 386
|
||||
- name: windows-arm64
|
||||
goos: windows
|
||||
goarch: arm64
|
||||
- name: windows-arm32v7
|
||||
goos: windows
|
||||
goarch: arm
|
||||
goarm: 7
|
||||
|
||||
# linux
|
||||
- name: linux-amd64
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
goamd64: v1
|
||||
- name: linux-amd64-v3
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
goamd64: v3
|
||||
- name: linux-386
|
||||
goos: linux
|
||||
goarch: 386
|
||||
- name: linux-arm64
|
||||
goos: linux
|
||||
goarch: arm64
|
||||
- name: linux-armv5
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: 5
|
||||
- name: linux-armv6
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: 6
|
||||
- name: linux-armv7
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: 7
|
||||
- name: linux-mips-softfloat
|
||||
goos: linux
|
||||
goarch: mips
|
||||
gomips: softfloat
|
||||
- name: linux-mips-hardfloat
|
||||
goos: linux
|
||||
goarch: mips
|
||||
gomips: hardfloat
|
||||
- name: linux-mipsel-softfloat
|
||||
goos: linux
|
||||
goarch: mipsle
|
||||
gomips: softfloat
|
||||
- name: linux-mipsel-hardfloat
|
||||
goos: linux
|
||||
goarch: mipsle
|
||||
gomips: hardfloat
|
||||
- name: linux-mips64
|
||||
goos: linux
|
||||
goarch: mips64
|
||||
- name: linux-mips64el
|
||||
goos: linux
|
||||
goarch: mips64le
|
||||
- name: linux-s390x
|
||||
goos: linux
|
||||
goarch: s390x
|
||||
# darwin
|
||||
- name: darwin-amd64
|
||||
goos: darwin
|
||||
goarch: amd64
|
||||
goamd64: v1
|
||||
- name: darwin-amd64-v3
|
||||
goos: darwin
|
||||
goarch: amd64
|
||||
goamd64: v3
|
||||
- name: darwin-arm64
|
||||
goos: darwin
|
||||
goarch: arm64
|
||||
# freebsd
|
||||
- name: freebsd-amd64
|
||||
goos: freebsd
|
||||
goarch: amd64
|
||||
goamd64: v1
|
||||
- name: freebsd-amd64-v3
|
||||
goos: freebsd
|
||||
goarch: amd64
|
||||
goamd64: v3
|
||||
- name: freebsd-386
|
||||
goos: freebsd
|
||||
goarch: 386
|
||||
- name: freebsd-arm64
|
||||
goos: freebsd
|
||||
goarch: arm64
|
||||
fail-fast: true
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
GOAMD64: ${{ matrix.goamd64 }}
|
||||
GOARM: ${{ matrix.goarm }}
|
||||
GOMIPS: ${{ matrix.gomips }}
|
||||
CGO_ENABLED: 0
|
||||
TAGS: with_gvisor,with_dhcp,with_wireguard,with_clash_api,with_quic,with_utls,with_ech
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.21
|
||||
- name: Build
|
||||
id: build
|
||||
run: make
|
||||
1
sing-box/.github/workflows/linux.yml
vendored
1
sing-box/.github/workflows/linux.yml
vendored
@@ -24,7 +24,6 @@ jobs:
|
||||
${{ secrets.GPG_KEY }}
|
||||
echo "HOME=$HOME" >> "$GITHUB_ENV"
|
||||
EOF
|
||||
echo "HOME=$HOME" >> "$GITHUB_ENV"
|
||||
- name: Publish release
|
||||
uses: goreleaser/goreleaser-action@v6
|
||||
with:
|
||||
|
||||
@@ -201,3 +201,5 @@ release:
|
||||
- archive
|
||||
- package
|
||||
skip_upload: true
|
||||
partial:
|
||||
by: target
|
||||
@@ -10,7 +10,9 @@ import (
|
||||
_ "github.com/sagernet/gomobile"
|
||||
"github.com/sagernet/sing-box/cmd/internal/build_shared"
|
||||
"github.com/sagernet/sing-box/log"
|
||||
E "github.com/sagernet/sing/common/exceptions"
|
||||
"github.com/sagernet/sing/common/rw"
|
||||
"github.com/sagernet/sing/common/shell"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -62,6 +64,22 @@ func init() {
|
||||
func buildAndroid() {
|
||||
build_shared.FindSDK()
|
||||
|
||||
var javaPath string
|
||||
javaHome := os.Getenv("JAVA_HOME")
|
||||
if javaHome == "" {
|
||||
javaPath = "java"
|
||||
} else {
|
||||
javaPath = filepath.Join(javaHome, "bin", "java")
|
||||
}
|
||||
|
||||
javaVersion, err := shell.Exec(javaPath, "--version").ReadOutput()
|
||||
if err != nil {
|
||||
log.Fatal(E.Cause(err, "check java version"))
|
||||
}
|
||||
if !strings.Contains(javaVersion, "openjdk 17") {
|
||||
log.Fatal("java version should be openjdk 17")
|
||||
}
|
||||
|
||||
args := []string{
|
||||
"bind",
|
||||
"-v",
|
||||
@@ -86,7 +104,7 @@ func buildAndroid() {
|
||||
command := exec.Command(build_shared.GoBinPath+"/gomobile", args...)
|
||||
command.Stdout = os.Stdout
|
||||
command.Stderr = os.Stderr
|
||||
err := command.Run()
|
||||
err = command.Run()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -11,9 +11,7 @@ import (
|
||||
|
||||
"github.com/sagernet/sing-box/log"
|
||||
"github.com/sagernet/sing/common"
|
||||
E "github.com/sagernet/sing/common/exceptions"
|
||||
"github.com/sagernet/sing/common/rw"
|
||||
"github.com/sagernet/sing/common/shell"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -42,14 +40,6 @@ func FindSDK() {
|
||||
log.Fatal("android NDK not found")
|
||||
}
|
||||
|
||||
javaVersion, err := shell.Exec("java", "--version").ReadOutput()
|
||||
if err != nil {
|
||||
log.Fatal(E.Cause(err, "check java version"))
|
||||
}
|
||||
if !strings.Contains(javaVersion, "openjdk 17") {
|
||||
log.Fatal("java version should be openjdk 17")
|
||||
}
|
||||
|
||||
os.Setenv("ANDROID_HOME", androidSDKPath)
|
||||
os.Setenv("ANDROID_SDK_HOME", androidSDKPath)
|
||||
os.Setenv("ANDROID_NDK_HOME", androidNDKPath)
|
||||
@@ -64,6 +54,10 @@ func findNDK() bool {
|
||||
androidNDKPath = fixedPath
|
||||
return true
|
||||
}
|
||||
if ndkHomeEnv := os.Getenv("ANDROID_NDK_HOME"); rw.IsFile(filepath.Join(ndkHomeEnv, versionFile)) {
|
||||
androidNDKPath = ndkHomeEnv
|
||||
return true
|
||||
}
|
||||
ndkVersions, err := os.ReadDir(filepath.Join(androidSDKPath, "ndk"))
|
||||
if err != nil {
|
||||
return false
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
icon: material/alert-decagram
|
||||
---
|
||||
|
||||
#### 1.11.0-beta.5
|
||||
#### 1.11.0-beta.6
|
||||
|
||||
* Fixes and improvements
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ require (
|
||||
github.com/sagernet/gvisor v0.0.0-20241123041152-536d05261cff
|
||||
github.com/sagernet/quic-go v0.48.2-beta.1
|
||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
|
||||
github.com/sagernet/sing v0.6.0-beta.4
|
||||
github.com/sagernet/sing v0.6.0-beta.5
|
||||
github.com/sagernet/sing-dns v0.4.0-beta.1
|
||||
github.com/sagernet/sing-mux v0.3.0-alpha.1
|
||||
github.com/sagernet/sing-quic v0.4.0-alpha.4
|
||||
|
||||
@@ -110,8 +110,8 @@ github.com/sagernet/quic-go v0.48.2-beta.1/go.mod h1:1WgdDIVD1Gybp40JTWketeSfKA/
|
||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
|
||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
|
||||
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
|
||||
github.com/sagernet/sing v0.6.0-beta.4 h1:OLm3FTyDYsyGaQrolbXf6R8At4FzTLdFCPmRzgp9Ki4=
|
||||
github.com/sagernet/sing v0.6.0-beta.4/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing v0.6.0-beta.5 h1:RD2j8WmJsvAbbBkAlJWaiYmnd+v/JohBiweoew7kMwo=
|
||||
github.com/sagernet/sing v0.6.0-beta.5/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing-dns v0.4.0-beta.1 h1:W1XkdhigwxDOMgMDVB+9kdomCpb7ExsZfB4acPcTZFY=
|
||||
github.com/sagernet/sing-dns v0.4.0-beta.1/go.mod h1:8wuFcoFkWM4vJuQyg8e97LyvDwe0/Vl7G839WLcKDs8=
|
||||
github.com/sagernet/sing-mux v0.3.0-alpha.1 h1:IgNX5bJBpL41gGbp05pdDOvh/b5eUQ6cv9240+Ngipg=
|
||||
|
||||
@@ -36,7 +36,6 @@ type Outbound struct {
|
||||
outbound.Adapter
|
||||
ctx context.Context
|
||||
logger logger.ContextLogger
|
||||
dnsRouter adapter.Router
|
||||
dialer N.Dialer
|
||||
serverAddr M.Socksaddr
|
||||
user string
|
||||
@@ -58,7 +57,6 @@ func NewOutbound(ctx context.Context, router adapter.Router, logger log.ContextL
|
||||
Adapter: outbound.NewAdapterWithDialerOptions(C.TypeSSH, tag, []string{N.NetworkTCP}, options.DialerOptions),
|
||||
ctx: ctx,
|
||||
logger: logger,
|
||||
dnsRouter: router,
|
||||
dialer: outboundDialer,
|
||||
serverAddr: options.ServerOptions.Build(),
|
||||
user: options.User,
|
||||
@@ -189,15 +187,6 @@ func (s *Outbound) Close() error {
|
||||
}
|
||||
|
||||
func (s *Outbound) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) {
|
||||
if destination.IsFqdn() {
|
||||
destinationAddresses, err := s.dnsRouter.LookupDefault(ctx, destination.Fqdn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
destination = M.SocksaddrFrom(destinationAddresses[0], destination.Port)
|
||||
} else if !destination.Addr.IsValid() {
|
||||
return nil, E.New("invalid destination: ", destination)
|
||||
}
|
||||
client, err := s.connect()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -13,7 +13,7 @@ require (
|
||||
github.com/docker/go-connections v0.5.0
|
||||
github.com/gofrs/uuid/v5 v5.3.0
|
||||
github.com/sagernet/quic-go v0.48.2-beta.1
|
||||
github.com/sagernet/sing v0.6.0-beta.3
|
||||
github.com/sagernet/sing v0.6.0-beta.5
|
||||
github.com/sagernet/sing-dns v0.4.0-beta.1
|
||||
github.com/sagernet/sing-quic v0.4.0-alpha.4
|
||||
github.com/sagernet/sing-shadowsocks v0.2.7
|
||||
|
||||
@@ -146,8 +146,8 @@ github.com/sagernet/quic-go v0.48.2-beta.1/go.mod h1:1WgdDIVD1Gybp40JTWketeSfKA/
|
||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
|
||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
|
||||
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
|
||||
github.com/sagernet/sing v0.6.0-beta.3 h1:T8MKw7dEjG4a24m/sHDIQLMjc45rZvYHSYO9/Mwk6nI=
|
||||
github.com/sagernet/sing v0.6.0-beta.3/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing v0.6.0-beta.5 h1:RD2j8WmJsvAbbBkAlJWaiYmnd+v/JohBiweoew7kMwo=
|
||||
github.com/sagernet/sing v0.6.0-beta.5/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||
github.com/sagernet/sing-dns v0.4.0-beta.1 h1:W1XkdhigwxDOMgMDVB+9kdomCpb7ExsZfB4acPcTZFY=
|
||||
github.com/sagernet/sing-dns v0.4.0-beta.1/go.mod h1:8wuFcoFkWM4vJuQyg8e97LyvDwe0/Vl7G839WLcKDs8=
|
||||
github.com/sagernet/sing-mux v0.3.0-alpha.1 h1:IgNX5bJBpL41gGbp05pdDOvh/b5eUQ6cv9240+Ngipg=
|
||||
|
||||
@@ -175,12 +175,18 @@ o.default = 2
|
||||
o:depends("week_update", "8")
|
||||
o.rmempty = true
|
||||
|
||||
o = s:option(ListValue, "access_mode", translate("Subscribe URL Access Method"))
|
||||
o.default = ""
|
||||
o:value("", translate("Auto"))
|
||||
o:value("direct", translate("Direct Connection"))
|
||||
o:value("proxy", translate("Proxy"))
|
||||
|
||||
o = s:option(Value, "user_agent", translate("User-Agent"))
|
||||
o.default = "v2rayN/9.99"
|
||||
o:value("curl", "Curl")
|
||||
o:value("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Linux")
|
||||
o:value("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Windows")
|
||||
o:value("Passwall/OpenWrt", "PassWall")
|
||||
o:value("v2rayN/9.99", "V2rayN")
|
||||
o:value("v2rayN/9.99", "v2rayN")
|
||||
|
||||
return m
|
||||
|
||||
@@ -63,6 +63,29 @@ function base64Decode(text)
|
||||
end
|
||||
end
|
||||
|
||||
--提取URL中的域名和端口(no ip)
|
||||
function get_domain_port_from_url(url)
|
||||
local scheme, domain, port = string.match(url, "^(https?)://([%w%.%-]+):?(%d*)")
|
||||
if not domain then
|
||||
scheme, domain, port = string.match(url, "^(https?)://(%b[])([^:/]*)/?")
|
||||
end
|
||||
if not domain then return nil, nil end
|
||||
if domain:sub(1, 1) == "[" then domain = domain:sub(2, -2) end
|
||||
port = port ~= "" and tonumber(port) or (scheme == "https" and 443 or 80)
|
||||
if datatypes.ipaddr(domain) or datatypes.ip6addr(domain) then return nil, nil end
|
||||
return domain, port
|
||||
end
|
||||
|
||||
--解析域名
|
||||
function domainToIPv4(domain, dns)
|
||||
local Dns = dns or "223.5.5.5"
|
||||
local IPs = luci.sys.exec('nslookup %s %s | awk \'/^Name:/{getline; if ($1 == "Address:") print $2}\'' % { domain, Dns })
|
||||
for IP in string.gmatch(IPs, "%S+") do
|
||||
if datatypes.ipaddr(IP) and not datatypes.ip6addr(IP) then return IP end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function curl_base(url, file, args)
|
||||
if not args then args = {} end
|
||||
if file then
|
||||
@@ -92,6 +115,28 @@ function curl_logic(url, file, args)
|
||||
return return_code, result
|
||||
end
|
||||
|
||||
function curl_direct(url, file, args)
|
||||
--直连访问
|
||||
if not args then args = {} end
|
||||
local tmp_args = clone(args)
|
||||
local domain, port = get_domain_port_from_url(url)
|
||||
if domain then
|
||||
local ip = domainToIPv4(domain)
|
||||
if ip then
|
||||
tmp_args[#tmp_args + 1] = "--resolve " .. domain .. ":" .. port .. ":" .. ip
|
||||
end
|
||||
end
|
||||
return curl_base(url, file, tmp_args)
|
||||
end
|
||||
|
||||
function curl_auto(url, file, args)
|
||||
local return_code, result = curl_proxy(url, file, args)
|
||||
if not return_code or return_code ~= 0 then
|
||||
return_code, result = curl_direct(url, file, args)
|
||||
end
|
||||
return return_code, result
|
||||
end
|
||||
|
||||
function url(...)
|
||||
local url = string.format("admin/services/%s", appname)
|
||||
local args = { ... }
|
||||
|
||||
@@ -1009,6 +1009,9 @@ msgstr "订阅备注(机场)"
|
||||
msgid "Subscribe URL"
|
||||
msgstr "订阅网址"
|
||||
|
||||
msgid "Subscribe URL Access Method"
|
||||
msgstr "订阅网址访问方式"
|
||||
|
||||
msgid "Please input the subscription url first, save and submit before manual subscription."
|
||||
msgstr "请输入订阅网址保存应用后再手动订阅。"
|
||||
|
||||
|
||||
@@ -1216,12 +1216,19 @@ local function processData(szType, content, add_mode, add_from)
|
||||
return result
|
||||
end
|
||||
|
||||
local function curl(url, file, ua)
|
||||
local function curl(url, file, ua, mode)
|
||||
local curl_args = api.clone(api.curl_args)
|
||||
if ua and ua ~= "" and ua ~= "curl" then
|
||||
table.insert(curl_args, '--user-agent "' .. ua .. '"')
|
||||
end
|
||||
local return_code, result = api.curl_logic(url, file, curl_args)
|
||||
local return_code
|
||||
if mode == "direct" then
|
||||
return_code = api.curl_direct(url, file, curl_args)
|
||||
elseif mode == "proxy" then
|
||||
return_code = api.curl_proxy(url, file, curl_args)
|
||||
else
|
||||
return_code = api.curl_auto(url, file, curl_args)
|
||||
end
|
||||
return return_code
|
||||
end
|
||||
|
||||
@@ -1610,8 +1617,10 @@ local execute = function()
|
||||
domain_strategy_node = domain_strategy_default
|
||||
end
|
||||
local ua = value.user_agent
|
||||
log('正在订阅:【' .. remark .. '】' .. url)
|
||||
local raw = curl(url, "/tmp/" .. cfgid, ua)
|
||||
local access_mode = value.access_mode
|
||||
local result = (not access_mode) and "自动" or (access_mode == "direct" and "直连访问" or (access_mode == "proxy" and "通过代理" or "自动"))
|
||||
log('正在订阅:【' .. remark .. '】' .. url .. ' [' .. result .. ']')
|
||||
local raw = curl(url, "/tmp/" .. cfgid, ua, access_mode)
|
||||
if raw == 0 then
|
||||
local f = io.open("/tmp/" .. cfgid, "r")
|
||||
local stdout = f:read("*all")
|
||||
|
||||
@@ -12,8 +12,8 @@ android {
|
||||
applicationId = "com.v2ray.ang"
|
||||
minSdk = 21
|
||||
targetSdk = 35
|
||||
versionCode = 619
|
||||
versionName = "1.9.23"
|
||||
versionCode = 620
|
||||
versionName = "1.9.24"
|
||||
multiDexEnabled = true
|
||||
|
||||
splits {
|
||||
|
||||
@@ -138,11 +138,11 @@ object AngConfigManager {
|
||||
if (sb.count() > 0) {
|
||||
Utils.setClipboard(context, sb.toString())
|
||||
}
|
||||
return sb.lines().count()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
return -1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -164,18 +164,22 @@ object MmkvManager {
|
||||
}
|
||||
}
|
||||
|
||||
fun removeAllServer() {
|
||||
fun removeAllServer(): Int {
|
||||
val count = profileFullStorage.allKeys()?.count() ?: 0
|
||||
mainStorage.clearAll()
|
||||
profileFullStorage.clearAll()
|
||||
//profileStorage.clearAll()
|
||||
serverAffStorage.clearAll()
|
||||
return count
|
||||
}
|
||||
|
||||
fun removeInvalidServer(guid: String) {
|
||||
fun removeInvalidServer(guid: String): Int {
|
||||
var count = 0
|
||||
if (guid.isNotEmpty()) {
|
||||
decodeServerAffiliationInfo(guid)?.let { aff ->
|
||||
if (aff.testDelayMillis < 0L) {
|
||||
removeServer(guid)
|
||||
count++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -183,10 +187,12 @@ object MmkvManager {
|
||||
decodeServerAffiliationInfo(key)?.let { aff ->
|
||||
if (aff.testDelayMillis < 0L) {
|
||||
removeServer(key)
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
fun encodeServerRaw(guid: String, config: String) {
|
||||
|
||||
@@ -346,8 +346,8 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
val ret = mainViewModel.exportAllServer()
|
||||
launch(Dispatchers.Main) {
|
||||
if (ret == 0)
|
||||
toast(R.string.toast_success)
|
||||
if (ret > 0)
|
||||
toast(getString(R.string.title_export_config_count, ret))
|
||||
else
|
||||
toast(R.string.toast_failure)
|
||||
binding.pbWaiting.hide()
|
||||
@@ -358,13 +358,13 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
||||
}
|
||||
|
||||
R.id.ping_all -> {
|
||||
toast(R.string.connection_test_testing)
|
||||
toast(getString(R.string.connection_test_testing_count, mainViewModel.serversCache.count()))
|
||||
mainViewModel.testAllTcping()
|
||||
true
|
||||
}
|
||||
|
||||
R.id.real_ping_all -> {
|
||||
toast(R.string.connection_test_testing)
|
||||
toast(getString(R.string.connection_test_testing_count, mainViewModel.serversCache.count()))
|
||||
mainViewModel.testAllRealPing()
|
||||
true
|
||||
}
|
||||
@@ -379,9 +379,10 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
binding.pbWaiting.show()
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
mainViewModel.removeAllServer()
|
||||
val ret = mainViewModel.removeAllServer()
|
||||
launch(Dispatchers.Main) {
|
||||
mainViewModel.reloadServerList()
|
||||
toast(getString(R.string.title_del_config_count, ret))
|
||||
binding.pbWaiting.hide()
|
||||
}
|
||||
}
|
||||
@@ -418,9 +419,10 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
binding.pbWaiting.show()
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
mainViewModel.removeInvalidServer()
|
||||
val ret = mainViewModel.removeInvalidServer()
|
||||
launch(Dispatchers.Main) {
|
||||
mainViewModel.reloadServerList()
|
||||
toast(getString(R.string.title_del_config_count, ret))
|
||||
binding.pbWaiting.hide()
|
||||
}
|
||||
}
|
||||
@@ -517,7 +519,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
||||
withContext(Dispatchers.Main) {
|
||||
when {
|
||||
count > 0 -> {
|
||||
toast(R.string.toast_success)
|
||||
toast(getString(R.string.title_import_config_count, count))
|
||||
mainViewModel.reloadServerList()
|
||||
}
|
||||
|
||||
@@ -623,7 +625,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
|
||||
delay(500L)
|
||||
launch(Dispatchers.Main) {
|
||||
if (count > 0) {
|
||||
toast(R.string.toast_success)
|
||||
toast(getString(R.string.title_update_config_count, count))
|
||||
mainViewModel.reloadServerList()
|
||||
} else {
|
||||
toast(R.string.toast_failure)
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.content.res.AssetManager
|
||||
import android.os.Build
|
||||
import android.util.Log
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
@@ -274,7 +273,8 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
return deleteServer.count()
|
||||
}
|
||||
|
||||
fun removeAllServer() {
|
||||
fun removeAllServer(): Int {
|
||||
val count =
|
||||
if (subscriptionId.isEmpty() && keywordFilter.isEmpty()) {
|
||||
MmkvManager.removeAllServer()
|
||||
} else {
|
||||
@@ -282,18 +282,22 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
for (item in serversCopy) {
|
||||
MmkvManager.removeServer(item.guid)
|
||||
}
|
||||
serversCache.toList().count()
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
fun removeInvalidServer() {
|
||||
fun removeInvalidServer(): Int {
|
||||
var count = 0
|
||||
if (subscriptionId.isEmpty() && keywordFilter.isEmpty()) {
|
||||
MmkvManager.removeInvalidServer("")
|
||||
count += MmkvManager.removeInvalidServer("")
|
||||
} else {
|
||||
val serversCopy = serversCache.toList()
|
||||
for (item in serversCopy) {
|
||||
MmkvManager.removeInvalidServer(item.guid)
|
||||
count += MmkvManager.removeInvalidServer(item.guid)
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
fun sortByTestResults() {
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
<string name="server_lab_encryption">التشفير</string>
|
||||
<string name="server_lab_flow">التدفق</string>
|
||||
<string name="server_lab_public_key" translatable="false">المفتاح العام</string>
|
||||
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
|
||||
<string name="server_lab_short_id" translatable="false">المعرّف القصير</string>
|
||||
<string name="server_lab_spider_x" translatable="false">SpiderX</string>
|
||||
<string name="server_lab_secret_key" translatable="false">المفتاح السري</string>
|
||||
@@ -211,6 +212,7 @@
|
||||
<string name="title_privacy_policy">سياسة الخصوصية</string>
|
||||
<string name="title_about">حول\nترجمة م. ابراهيم قاسم</string>
|
||||
<string name="title_source_code">الكود المصدري</string>
|
||||
<string name="title_oss_license">Open Source licenses</string>
|
||||
<string name="title_tg_channel">قناة Telegram</string>
|
||||
<string name="title_configuration_backup">نسخ التكوين احتياطيًا</string>
|
||||
<string name="summary_configuration_backup">موقع التخزين: [%s]، سيتم مسح النسخة الاحتياطية بعد إلغاء تثبيت التطبيق أو مسح التخزين</string>
|
||||
@@ -257,6 +259,10 @@
|
||||
<string name="filter_config_all">جميع مجموعات الاشتراك</string>
|
||||
<string name="title_del_duplicate_config_count">حذف %d من الإعدادات المكررة</string>
|
||||
|
||||
<string name="title_del_config_count">Delete %d configurations</string>
|
||||
<string name="title_import_config_count">Import %d configurations</string>
|
||||
<string name="title_export_config_count">Export %d configurations</string>
|
||||
<string name="title_update_config_count">Update %d configurations</string>
|
||||
<string name="tasker_start_service">بدء الخدمة</string>
|
||||
<string name="tasker_setting_confirm">تأكيد</string>
|
||||
|
||||
@@ -276,6 +282,7 @@
|
||||
|
||||
<string name="connection_test_pending">التحقق من الاتصال</string>
|
||||
<string name="connection_test_testing">يجري الاختبار…</string>
|
||||
<string name="connection_test_testing_count">Testing %d configurations…</string>
|
||||
<string name="connection_test_available">نجاح: استغرق اتصال HTTP %dms</string>
|
||||
<string name="connection_test_error">فشل اكتشاف اتصال الإنترنت: %s</string>
|
||||
<string name="connection_test_fail">الإنترنت غير متاح</string>
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
<string name="server_lab_encryption">এনক্রিপশন</string>
|
||||
<string name="server_lab_flow">ফ্লো</string>
|
||||
<string name="server_lab_public_key" translatable="false">পাবলিক কী</string>
|
||||
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
|
||||
<string name="server_lab_short_id" translatable="false">শর্ট আইডি</string>
|
||||
<string name="server_lab_spider_x" translatable="false">SpiderX</string>
|
||||
<string name="server_lab_secret_key" translatable="false">সিক্রেট কী</string>
|
||||
@@ -211,6 +212,7 @@
|
||||
<string name="title_privacy_policy">গোপনীয়তা নীতি</string>
|
||||
<string name="title_about">সম্পর্কিত</string>
|
||||
<string name="title_source_code">সোর্স কোড</string>
|
||||
<string name="title_oss_license">Open Source licenses</string>
|
||||
<string name="title_tg_channel">টেলিগ্রাম চ্যানেল</string>
|
||||
<string name="title_configuration_backup">কনফিগারেশন ব্যাকআপ</string>
|
||||
<string name="summary_configuration_backup">স্টোরেজ অবস্থান: [%s], অ্যাপ আনইনস্টল বা স্টোরেজ ক্লিয়ার করার পরে ব্যাকআপ মুছে যাবে</string>
|
||||
@@ -256,6 +258,10 @@
|
||||
<string name="title_filter_config">কনফিগারেশন ফাইল ফিল্টার করুন</string>
|
||||
<string name="filter_config_all">সব সাবস্ক্রিপশন গ্রুপ</string>
|
||||
<string name="title_del_duplicate_config_count">%d ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন</string>
|
||||
<string name="title_del_config_count">Delete %d configurations</string>
|
||||
<string name="title_import_config_count">Import %d configurations</string>
|
||||
<string name="title_export_config_count">Export %d configurations</string>
|
||||
<string name="title_update_config_count">Update %d configurations</string>
|
||||
<string name="tasker_start_service">সার্ভিস শুরু করুন</string>
|
||||
<string name="tasker_setting_confirm">নিশ্চিত করুন</string>
|
||||
|
||||
@@ -275,6 +281,7 @@
|
||||
|
||||
<string name="connection_test_pending">সংযোগ পরীক্ষা করুন</string>
|
||||
<string name="connection_test_testing">পরীক্ষা চলছে…</string>
|
||||
<string name="connection_test_testing_count">Testing %d configurations…</string>
|
||||
<string name="connection_test_available">সফল: HTTP সংযোগ নিয়েছে %dms</string>
|
||||
<string name="connection_test_error">ইন্টারনেট সংযোগ সনাক্ত করতে ব্যর্থ: %s</string>
|
||||
<string name="connection_test_fail">ইন্টারনেট উপলব্ধ নয়</string>
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
<string name="server_lab_encryption">رزم نگاری</string>
|
||||
<string name="server_lab_flow">جریان</string>
|
||||
<string name="server_lab_public_key">کیلیت پوی وولاتی</string>
|
||||
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
|
||||
<string name="server_lab_short_id">ShortId</string>
|
||||
<string name="server_lab_spider_x">SpiderX</string>
|
||||
<string name="server_lab_secret_key">کیلیت سیخومی</string>
|
||||
@@ -258,6 +259,10 @@
|
||||
<string name="filter_config_all">پوی جرگیل</string>
|
||||
<string name="title_del_duplicate_config_count">پاک کردن %d کانفیگ تکراری</string>
|
||||
|
||||
<string name="title_del_config_count">Delete %d configurations</string>
|
||||
<string name="title_import_config_count">Import %d configurations</string>
|
||||
<string name="title_export_config_count">Export %d configurations</string>
|
||||
<string name="title_update_config_count">Update %d configurations</string>
|
||||
<string name="tasker_start_service">ره وندن خدمات</string>
|
||||
<string name="tasker_setting_confirm">قوۊل</string>
|
||||
|
||||
@@ -285,6 +290,7 @@
|
||||
|
||||
<string name="connection_test_pending">منپیزن واجۊری کوݩ</string>
|
||||
<string name="connection_test_testing">هونی آزمایش ابۊ…</string>
|
||||
<string name="connection_test_testing_count">Testing %d configurations…</string>
|
||||
<string name="connection_test_available">مووفق بی: منپیز HTTP %dms تۊل کشی</string>
|
||||
<string name="connection_test_error">منپیز و اینترنتن نجوست: %s</string>
|
||||
<string name="connection_test_fail">اینترنت من دسرس نؽ</string>
|
||||
|
||||
@@ -256,6 +256,10 @@
|
||||
<string name="filter_config_all">همه گروههای اشتراک</string>
|
||||
<string name="title_del_duplicate_config_count">حذف %d کانفیگ تکراری</string>
|
||||
|
||||
<string name="title_del_config_count">حذف %d کانفیگ</string>
|
||||
<string name="title_import_config_count">وارد کردن %d کانفیگ</string>
|
||||
<string name="title_export_config_count">صادر کردن %d کانفیگ</string>
|
||||
<string name="title_update_config_count">آپدیت کردن %d کانفیگ</string>
|
||||
<string name="tasker_start_service">شروع خدمات</string>
|
||||
<string name="tasker_setting_confirm">تایید</string>
|
||||
|
||||
@@ -283,6 +287,7 @@
|
||||
|
||||
<string name="connection_test_pending">اتصال را بررسی کنید</string>
|
||||
<string name="connection_test_testing">در حال آزمایش...</string>
|
||||
<string name="connection_test_testing_count">تست کردن %d کانفیگ…</string>
|
||||
<string name="connection_test_available">موفقیت: اتصال HTTP %dms طول کشید</string>
|
||||
<string name="connection_test_error">اتصال به اینترنت شناسایی نشد: %s</string>
|
||||
<string name="connection_test_fail">اینترنت در دسترس نیست</string>
|
||||
|
||||
@@ -258,6 +258,10 @@
|
||||
<string name="filter_config_all">Все группы</string>
|
||||
<string name="title_del_duplicate_config_count">Удалено дубликатов профилей: %d</string>
|
||||
|
||||
<string name="title_del_config_count">Delete %d configurations</string>
|
||||
<string name="title_import_config_count">Import %d configurations</string>
|
||||
<string name="title_export_config_count">Export %d configurations</string>
|
||||
<string name="title_update_config_count">Update %d configurations</string>
|
||||
<string name="tasker_start_service">Запуск службы</string>
|
||||
<string name="tasker_setting_confirm">Подтвердить</string>
|
||||
|
||||
@@ -285,6 +289,7 @@
|
||||
|
||||
<string name="connection_test_pending">Проверить подключение</string>
|
||||
<string name="connection_test_testing">Проверка…</string>
|
||||
<string name="connection_test_testing_count">Testing %d configurations…</string>
|
||||
<string name="connection_test_available">Успешно: HTTP-соединение заняло %d мс</string>
|
||||
<string name="connection_test_error">Сбой проверки интернет-соединения: %s</string>
|
||||
<string name="connection_test_fail">Интернет недоступен</string>
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
<string name="server_lab_encryption">Mã hóa</string>
|
||||
<string name="server_lab_flow">Kiểm soát lưu lượng (Flow)</string>
|
||||
<string name="server_lab_public_key">PublicKey</string>
|
||||
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
|
||||
<string name="server_lab_short_id">ShortId</string>
|
||||
<string name="server_lab_spider_x">SpiderX</string>
|
||||
<string name="server_lab_secret_key">SecretKey</string>
|
||||
@@ -211,6 +212,7 @@
|
||||
<string name="title_privacy_policy">Chính sách bảo mật</string>
|
||||
<string name="title_about">Giới thiệu</string>
|
||||
<string name="title_source_code">Mã nguồn</string>
|
||||
<string name="title_oss_license">Open Source licenses</string>
|
||||
<string name="title_tg_channel">Kênh Telegram</string>
|
||||
<string name="title_configuration_backup">Sao lưu cấu hình</string>
|
||||
<string name="summary_configuration_backup">Nơi lưu trữ: [%s], bản backup sẽ được dọn dẹp sau khi xóa ứng dụng hoặc xóa bộ nhớ.</string>
|
||||
@@ -256,6 +258,10 @@
|
||||
<string name="filter_config_all">Hiển thị tất cả các gói đăng ký</string>
|
||||
<string name="title_del_duplicate_config_count">Xoá %d cấu hình trùng lặp</string>
|
||||
|
||||
<string name="title_del_config_count">Delete %d configurations</string>
|
||||
<string name="title_import_config_count">Import %d configurations</string>
|
||||
<string name="title_export_config_count">Export %d configurations</string>
|
||||
<string name="title_update_config_count">Update %d configurations</string>
|
||||
<string name="tasker_start_service">Khởi động v2rayNG</string>
|
||||
<string name="tasker_setting_confirm">Xác nhận</string>
|
||||
|
||||
@@ -275,6 +281,7 @@
|
||||
|
||||
<string name="connection_test_pending">Kiểm tra kết nối</string>
|
||||
<string name="connection_test_testing">Đang kiểm tra kết nối mạng...</string>
|
||||
<string name="connection_test_testing_count">Testing %d configurations…</string>
|
||||
<string name="connection_test_available">Kiểm tra thành công: thời gian truy cập Google là %d ms</string>
|
||||
<string name="connection_test_error">Lỗi kết nối mạng, hãy thử đổi cấu hình hoặc kiểm tra lại! Mã lỗi: %s</string>
|
||||
<string name="connection_test_fail">Không có kết nối mạng!</string>
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
<string name="server_lab_encryption">加密方式(encryption)</string>
|
||||
<string name="server_lab_flow">流控(flow)</string>
|
||||
<string name="server_lab_public_key">PublicKey</string>
|
||||
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
|
||||
<string name="server_lab_short_id">ShortId</string>
|
||||
<string name="server_lab_spider_x">SpiderX</string>
|
||||
<string name="server_lab_secret_key">SecretKey</string>
|
||||
@@ -207,6 +208,7 @@
|
||||
<string name="title_privacy_policy">隐私权政策</string>
|
||||
<string name="title_about">关于</string>
|
||||
<string name="title_source_code">源代码</string>
|
||||
<string name="title_oss_license">Open Source licenses</string>
|
||||
<string name="title_tg_channel">Telegram 频道</string>
|
||||
<string name="title_configuration_backup">备份配置</string>
|
||||
<string name="summary_configuration_backup">存储位置: [%s], 卸载App或清除存储后备份将被清除</string>
|
||||
@@ -253,6 +255,10 @@
|
||||
<string name="filter_config_all">所有分组</string>
|
||||
<string name="title_del_duplicate_config_count">删除 %d 个重复配置</string>
|
||||
|
||||
<string name="title_del_config_count">删除 %d 个配置</string>
|
||||
<string name="title_import_config_count">导入 %d 个配置</string>
|
||||
<string name="title_export_config_count">导出 %d 个配置</string>
|
||||
<string name="title_update_config_count">更新 %d 个配置</string>
|
||||
<string name="tasker_start_service">启动服务</string>
|
||||
<string name="tasker_setting_confirm">确定</string>
|
||||
|
||||
@@ -272,6 +278,7 @@
|
||||
|
||||
<string name="connection_test_pending">"检查网络连接"</string>
|
||||
<string name="connection_test_testing">"测试中…"</string>
|
||||
<string name="connection_test_testing_count">测试 %d 个配置中…</string>
|
||||
<string name="connection_test_available">"连接成功:延时 %d 毫秒"</string>
|
||||
<string name="connection_test_error">"失败:%s"</string>
|
||||
<string name="connection_test_fail">"无互联网连接"</string>
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
<string name="server_lab_encryption">加密 (encryption)</string>
|
||||
<string name="server_lab_flow">流程 (flow)</string>
|
||||
<string name="server_lab_public_key">PublicKey</string>
|
||||
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
|
||||
<string name="server_lab_short_id">ShortId</string>
|
||||
<string name="server_lab_spider_x">SpiderX</string>
|
||||
<string name="server_lab_secret_key">SecretKey</string>
|
||||
@@ -209,6 +210,7 @@
|
||||
<string name="title_privacy_policy">隱私權政策</string>
|
||||
<string name="title_about">關於</string>
|
||||
<string name="title_source_code">原始碼</string>
|
||||
<string name="title_oss_license">Open Source licenses</string>
|
||||
<string name="title_tg_channel">Telegram 頻道</string>
|
||||
<string name="title_configuration_backup">備份設定</string>
|
||||
<string name="summary_configuration_backup">儲存位置: [%s], 卸載App或清除儲存後備份將被清除</string>
|
||||
@@ -253,8 +255,12 @@
|
||||
<string name="title_sort_by_test_results">依偵測結果排序</string>
|
||||
<string name="title_filter_config">過濾設定</string>
|
||||
<string name="filter_config_all">所有分組</string>
|
||||
<string name="title_del_duplicate_config_count">Delete %d duplicate configurations</string>
|
||||
<string name="title_del_duplicate_config_count">删除 %d 个重复配置</string>
|
||||
|
||||
<string name="title_del_config_count">删除 %d 个配置</string>
|
||||
<string name="title_import_config_count">导入 %d 个配置</string>
|
||||
<string name="title_export_config_count">导出 %d 个配置</string>
|
||||
<string name="title_update_config_count">更新 %d 个配置</string>
|
||||
<string name="tasker_start_service">啟動服務</string>
|
||||
<string name="tasker_setting_confirm">確定</string>
|
||||
|
||||
@@ -274,6 +280,7 @@
|
||||
|
||||
<string name="connection_test_pending">"測試連線能力"</string>
|
||||
<string name="connection_test_testing">"測試中……"</string>
|
||||
<string name="connection_test_testing_count">測試 %d 个配置中…</string>
|
||||
<string name="connection_test_available">"成功:%d ms延遲"</string>
|
||||
<string name="connection_test_error">"測試網際網路連線失敗:%s"</string>
|
||||
<string name="connection_test_fail">"無法使用網際網路"</string>
|
||||
|
||||
@@ -260,6 +260,10 @@
|
||||
<string name="title_filter_config">Filter configuration file</string>
|
||||
<string name="filter_config_all">All groups</string>
|
||||
<string name="title_del_duplicate_config_count">Delete %d duplicate configurations</string>
|
||||
<string name="title_del_config_count">Delete %d configurations</string>
|
||||
<string name="title_import_config_count">Import %d configurations</string>
|
||||
<string name="title_export_config_count">Export %d configurations</string>
|
||||
<string name="title_update_config_count">Update %d configurations</string>
|
||||
|
||||
<string name="tasker_start_service">Start Service</string>
|
||||
<string name="tasker_setting_confirm">Confirm</string>
|
||||
@@ -288,6 +292,7 @@
|
||||
|
||||
<string name="connection_test_pending">Check Connectivity</string>
|
||||
<string name="connection_test_testing">Testing…</string>
|
||||
<string name="connection_test_testing_count">Testing %d configurations…</string>
|
||||
<string name="connection_test_available">Success: HTTP connection took %dms</string>
|
||||
<string name="connection_test_error">Fail to detect internet connection: %s</string>
|
||||
<string name="connection_test_fail">Internet Unavailable</string>
|
||||
|
||||
@@ -710,6 +710,9 @@ asio::error_code CliConnection::OnReadHttpRequest(std::shared_ptr<IOBuf> buf) {
|
||||
}
|
||||
|
||||
http_is_keep_alive_ = false;
|
||||
DCHECK_EQ(0, http_keep_alive_remaining_bytes_);
|
||||
http_keep_alive_remaining_bytes_ = 0;
|
||||
DCHECK(!http_keep_alive_pending_buf_);
|
||||
|
||||
if (ok) {
|
||||
buf->trimStart(nparsed);
|
||||
@@ -726,7 +729,20 @@ asio::error_code CliConnection::OnReadHttpRequest(std::shared_ptr<IOBuf> buf) {
|
||||
buf->prepend(header.size());
|
||||
memcpy(buf->mutable_data(), header.c_str(), header.size());
|
||||
http_is_keep_alive_ = gurl_base::CompareCaseInsensitiveASCII(parser.connection(), "Keep-Alive"sv) == 0;
|
||||
http_keep_alive_remaining_bytes_ += parser.content_length() + header.size() - buf->length();
|
||||
http_keep_alive_remaining_bytes_ = parser.content_length() + header.size() - buf->length();
|
||||
if (http_is_keep_alive_ && http_keep_alive_remaining_bytes_ < 0) {
|
||||
VLOG(2) << "Connection (client) " << connection_id() << " http keepalive request splited";
|
||||
// split buf into two buffers
|
||||
// buf -> (request_size)
|
||||
// http_keep_alive_pending_buf_ -> (bytes after request_size)
|
||||
auto request_size = parser.content_length() + header.size();
|
||||
http_keep_alive_remaining_bytes_ = 0u;
|
||||
http_keep_alive_pending_buf_ =
|
||||
IOBuf::copyBuffer(buf->data() + request_size, buf->length() - request_size, 0, 0);
|
||||
buf->trimEnd(buf->length() - request_size);
|
||||
DCHECK_EQ(buf->length(), request_size);
|
||||
// FIXME yield to resume http handling
|
||||
}
|
||||
VLOG(3) << "Connection (client) " << connection_id() << " Host: " << http_host_ << " Port: " << http_port_
|
||||
<< " KEEPALIVE: " << std::boolalpha << http_is_keep_alive_;
|
||||
if (parser.transfer_encoding_is_chunked()) {
|
||||
@@ -749,6 +765,41 @@ asio::error_code CliConnection::OnReadHttpRequest(std::shared_ptr<IOBuf> buf) {
|
||||
return asio::error::invalid_argument;
|
||||
}
|
||||
|
||||
asio::error_code CliConnection::OnReadHttpRequestAfterReuse(std::shared_ptr<IOBuf>& buf) {
|
||||
DCHECK(http_is_keep_alive_);
|
||||
DCHECK_EQ(http_host_, request_.domain_name());
|
||||
DCHECK_EQ(http_port_, request_.port());
|
||||
auto ec = OnReadHttpRequest(buf);
|
||||
if (ec) {
|
||||
return ec;
|
||||
}
|
||||
if (http_is_connect_) {
|
||||
return asio::error::invalid_argument;
|
||||
}
|
||||
DCHECK(!buf->empty());
|
||||
// request_ isn't updated after OnReadHttpRequest(),
|
||||
// so we are safe to use it to tell whether the new destination is different
|
||||
if (request_.domain_name() != http_host_ || request_.port() != http_port_) {
|
||||
LOG(INFO) << "Connection (client) " << connection_id() << " re-used";
|
||||
upstream_readable_ = false;
|
||||
upstream_writable_ = false;
|
||||
request_ = {};
|
||||
channel_->close();
|
||||
channel_.reset();
|
||||
OnStreamRead(std::move(buf));
|
||||
DCHECK(!buf);
|
||||
ec = PerformCmdOpsHttp();
|
||||
if (ec) {
|
||||
return ec;
|
||||
}
|
||||
SetState(state_stream);
|
||||
return asio::error::try_again;
|
||||
}
|
||||
LOG(INFO) << "Connection (client) " << connection_id() << " connect (re-used) " << remote_domain();
|
||||
SetState(state_stream);
|
||||
return asio::error_code();
|
||||
}
|
||||
|
||||
void CliConnection::WaitStreamError() {
|
||||
scoped_refptr<CliConnection> self(this);
|
||||
downlink_->async_wait_error([this, self](asio::error_code ec) {
|
||||
@@ -1705,8 +1756,23 @@ std::shared_ptr<IOBuf> CliConnection::GetNextUpstreamBuf(asio::error_code& ec,
|
||||
}
|
||||
#endif
|
||||
|
||||
// if we have read previously in OnReadHttpRequestAfterReuse
|
||||
if (http_is_keep_alive_ && http_keep_alive_pending_buf_) {
|
||||
VLOG(2) << "Connection (client) " << connection_id() << " http keepalive splited request resumed";
|
||||
buf = std::move(http_keep_alive_pending_buf_);
|
||||
read = buf->length();
|
||||
DCHECK(!http_keep_alive_pending_buf_);
|
||||
goto after_read;
|
||||
}
|
||||
|
||||
do {
|
||||
// sometimes we need to read from here
|
||||
if (http_is_keep_alive_ && http_keep_alive_previous_buf_) {
|
||||
buf = std::move(http_keep_alive_previous_buf_);
|
||||
DCHECK(!http_keep_alive_previous_buf_);
|
||||
} else {
|
||||
buf = IOBuf::create(SOCKET_BUF_SIZE);
|
||||
}
|
||||
read = downlink_->socket_.read_some(tail_buffer(*buf, SOCKET_BUF_SIZE), ec);
|
||||
if (ec == asio::error::interrupted) {
|
||||
continue;
|
||||
@@ -1729,6 +1795,7 @@ std::shared_ptr<IOBuf> CliConnection::GetNextUpstreamBuf(asio::error_code& ec,
|
||||
goto out;
|
||||
}
|
||||
|
||||
after_read:
|
||||
if (!channel_ || !channel_->connected()) {
|
||||
OnStreamRead(buf);
|
||||
ec = asio::error::try_again;
|
||||
@@ -1736,49 +1803,30 @@ std::shared_ptr<IOBuf> CliConnection::GetNextUpstreamBuf(asio::error_code& ec,
|
||||
}
|
||||
|
||||
if (http_is_keep_alive_) {
|
||||
if (http_keep_alive_remaining_bytes_ < (int64_t)read) {
|
||||
DCHECK_EQ(http_host_, request_.domain_name());
|
||||
DCHECK_EQ(http_port_, request_.port());
|
||||
ec = OnReadHttpRequest(buf);
|
||||
if (ec) {
|
||||
return nullptr;
|
||||
}
|
||||
if (http_is_connect_) {
|
||||
ec = asio::error::invalid_argument;
|
||||
return nullptr;
|
||||
}
|
||||
if (buf->empty()) {
|
||||
buf.reset();
|
||||
}
|
||||
// request_ isn't updated after OnReadHttpRequest(),
|
||||
// so we are safe to use it to tell whether the new destination is different
|
||||
if (request_.domain_name() != http_host_ || request_.port() != http_port_) {
|
||||
LOG(INFO) << "Connection (client) " << connection_id() << " re-used";
|
||||
upstream_readable_ = false;
|
||||
upstream_writable_ = false;
|
||||
request_ = {};
|
||||
channel_->close();
|
||||
channel_.reset();
|
||||
if (buf) {
|
||||
OnStreamRead(buf);
|
||||
buf.reset();
|
||||
}
|
||||
ec = PerformCmdOpsHttp();
|
||||
if (ec) {
|
||||
return nullptr;
|
||||
}
|
||||
SetState(state_stream);
|
||||
if (http_keep_alive_remaining_bytes_ == 0) {
|
||||
ec = OnReadHttpRequestAfterReuse(buf);
|
||||
/* use a small number to remind of incomplete request */
|
||||
if (ec == asio::error::invalid_argument && buf->length() < 64u * 1024) {
|
||||
http_keep_alive_previous_buf_ = std::move(buf);
|
||||
DCHECK(!buf);
|
||||
ec = asio::error::try_again;
|
||||
return nullptr;
|
||||
}
|
||||
LOG(INFO) << "Connection (client) " << connection_id() << " connect (re-used) " << remote_domain();
|
||||
SetState(state_stream);
|
||||
if (!buf) {
|
||||
ec = asio::error::try_again;
|
||||
if (ec) {
|
||||
return nullptr;
|
||||
}
|
||||
} else if (http_keep_alive_remaining_bytes_ < (int64_t)read) {
|
||||
VLOG(2) << "Connection (client) " << connection_id()
|
||||
<< " http keepalive consumed: " << http_keep_alive_remaining_bytes_;
|
||||
DCHECK_GE(http_keep_alive_remaining_bytes_, 0);
|
||||
DCHECK_EQ(read, buf->length());
|
||||
DCHECK(!http_keep_alive_pending_buf_);
|
||||
http_keep_alive_pending_buf_ = IOBuf::copyBuffer(buf->data() + http_keep_alive_remaining_bytes_,
|
||||
buf->length() - http_keep_alive_remaining_bytes_);
|
||||
buf->trimEnd(buf->length() - http_keep_alive_remaining_bytes_);
|
||||
http_keep_alive_remaining_bytes_ = 0;
|
||||
} else {
|
||||
VLOG(2) << "Connection (client) " << connection_id() << " http keepalive consumed: " << read;
|
||||
http_keep_alive_remaining_bytes_ -= read;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,6 +277,8 @@ class CliConnection : public gurl_base::RefCountedThreadSafe<CliConnection>,
|
||||
asio::error_code OnReadSocks4Handshake(std::shared_ptr<IOBuf> buf);
|
||||
/// Start to read http handshake request
|
||||
asio::error_code OnReadHttpRequest(std::shared_ptr<IOBuf> buf);
|
||||
/// Start to read http handshake request (after reuse)
|
||||
asio::error_code OnReadHttpRequestAfterReuse(std::shared_ptr<IOBuf>& buf);
|
||||
|
||||
/// Start wait error on stream
|
||||
void WaitStreamError();
|
||||
@@ -356,6 +358,10 @@ class CliConnection : public gurl_base::RefCountedThreadSafe<CliConnection>,
|
||||
bool http_is_keep_alive_ = false;
|
||||
/// copy of remaining bytes in keep alive cycle
|
||||
int64_t http_keep_alive_remaining_bytes_ = 0;
|
||||
/// remaining buffer for unhandled http keep-alive requests
|
||||
std::shared_ptr<IOBuf> http_keep_alive_pending_buf_;
|
||||
/// previous buffer for an incomplete http keep-alive request
|
||||
std::shared_ptr<IOBuf> http_keep_alive_previous_buf_;
|
||||
|
||||
/// copy of upstream request
|
||||
ss::request request_;
|
||||
|
||||
@@ -372,6 +372,7 @@ void HttpRequestParser::HeaderDone() {
|
||||
if (status_ == ParserStatus::Error) {
|
||||
return;
|
||||
}
|
||||
status_ = ParserStatus::Ok;
|
||||
headers_done_ = true;
|
||||
}
|
||||
|
||||
@@ -381,6 +382,7 @@ void HttpRequestParser::MessageDone() {
|
||||
if (status_ == ParserStatus::Error) {
|
||||
return;
|
||||
}
|
||||
status_ = ParserStatus::Ok;
|
||||
framer_.Reset();
|
||||
first_byte_processed_ = false;
|
||||
headers_done_ = false;
|
||||
|
||||
@@ -112,7 +112,7 @@ class HttpRequestParser : public quiche::BalsaVisitorInterface {
|
||||
|
||||
bool first_byte_processed_ = false;
|
||||
bool headers_done_ = false;
|
||||
ParserStatus status_ = ParserStatus::Ok;
|
||||
ParserStatus status_ = ParserStatus::Paused;
|
||||
int status_code_ = 0;
|
||||
// An error message, often seemingly arbitrary to match http-parser behavior.
|
||||
std::string_view error_message_;
|
||||
|
||||
@@ -707,3 +707,6 @@ Sakura286
|
||||
SamDecrock
|
||||
stratus-ss
|
||||
subrat-lima
|
||||
gitninja1234
|
||||
jkruse
|
||||
xiaomac
|
||||
|
||||
@@ -4,6 +4,42 @@
|
||||
# To create a release, dispatch the https://github.com/yt-dlp/yt-dlp/actions/workflows/release.yml workflow on master
|
||||
-->
|
||||
|
||||
### 2024.12.03
|
||||
|
||||
#### Core changes
|
||||
- [Add `playlist_webpage_url` field](https://github.com/yt-dlp/yt-dlp/commit/7d6c259a03bc4707a319e5e8c6eff0278707874b) ([#11613](https://github.com/yt-dlp/yt-dlp/issues/11613)) by [seproDev](https://github.com/seproDev)
|
||||
|
||||
#### Extractor changes
|
||||
- [Handle fragmented formats in `_remove_duplicate_formats`](https://github.com/yt-dlp/yt-dlp/commit/e0500cbf796323551bbabe5b8ed8c75a511ba47a) ([#11637](https://github.com/yt-dlp/yt-dlp/issues/11637)) by [Grub4K](https://github.com/Grub4K)
|
||||
- **bilibili**
|
||||
- [Always try to extract HD formats](https://github.com/yt-dlp/yt-dlp/commit/dc1687648077c5bf64863b307ecc5ab7e029bd8d) ([#10559](https://github.com/yt-dlp/yt-dlp/issues/10559)) by [grqz](https://github.com/grqz)
|
||||
- [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/239f5f36fe04603bec59c8b975f6a792f10246db) ([#11667](https://github.com/yt-dlp/yt-dlp/issues/11667)) by [grqz](https://github.com/grqz) (With fixes in [f05a1cd](https://github.com/yt-dlp/yt-dlp/commit/f05a1cd1492fc98dc8d80d2081d632a1879913d2) by [bashonly](https://github.com/bashonly), [grqz](https://github.com/grqz))
|
||||
- [Fix subtitles and chapters extraction](https://github.com/yt-dlp/yt-dlp/commit/a13a336aa6f906812701abec8101b73b73db8ff7) ([#11708](https://github.com/yt-dlp/yt-dlp/issues/11708)) by [xiaomac](https://github.com/xiaomac)
|
||||
- **chaturbate**: [Fix support for non-public streams](https://github.com/yt-dlp/yt-dlp/commit/4b5eec0aaa7c02627f27a386591b735b90e681a8) ([#11624](https://github.com/yt-dlp/yt-dlp/issues/11624)) by [jkruse](https://github.com/jkruse)
|
||||
- **dacast**: [Fix HLS AES formats extraction](https://github.com/yt-dlp/yt-dlp/commit/0a0d80800b9350d1a4c4b18d82cfb77ffbc3c507) ([#11644](https://github.com/yt-dlp/yt-dlp/issues/11644)) by [bashonly](https://github.com/bashonly)
|
||||
- **dropbox**: [Fix password-protected video extraction](https://github.com/yt-dlp/yt-dlp/commit/00dcde728635633eee969ad4d498b9f233c4a94e) ([#11636](https://github.com/yt-dlp/yt-dlp/issues/11636)) by [bashonly](https://github.com/bashonly)
|
||||
- **duoplay**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/62cba8a1bedbfc0ddde7267ae57b72bf5f7ea7b1) ([#11588](https://github.com/yt-dlp/yt-dlp/issues/11588)) by [bashonly](https://github.com/bashonly), [glensc](https://github.com/glensc)
|
||||
- **facebook**: [Support more groups URLs](https://github.com/yt-dlp/yt-dlp/commit/e0f1ae813b36e783e2348ba2a1566e12f5cd8f6e) ([#11576](https://github.com/yt-dlp/yt-dlp/issues/11576)) by [grqz](https://github.com/grqz)
|
||||
- **instagram**: [Support `share` URLs](https://github.com/yt-dlp/yt-dlp/commit/360aed810ad85db950df586282d256516c98cd2d) ([#11677](https://github.com/yt-dlp/yt-dlp/issues/11677)) by [grqz](https://github.com/grqz)
|
||||
- **microsoftembed**: [Make format extraction non fatal](https://github.com/yt-dlp/yt-dlp/commit/2bea7936323ca4b6f3b9b1fdd892566223e30efa) ([#11654](https://github.com/yt-dlp/yt-dlp/issues/11654)) by [seproDev](https://github.com/seproDev)
|
||||
- **mitele**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/cd0f934604587ed793e9177f6a127e5dcf99a7dd) ([#11683](https://github.com/yt-dlp/yt-dlp/issues/11683)) by [DarkZeros](https://github.com/DarkZeros)
|
||||
- **stripchat**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/16336c51d0848a6868a4fa04e749fa03548b4913) ([#11596](https://github.com/yt-dlp/yt-dlp/issues/11596)) by [gitninja1234](https://github.com/gitninja1234)
|
||||
- **tiktok**: [Deprioritize animated thumbnails](https://github.com/yt-dlp/yt-dlp/commit/910ecc422930bca14e2abe4986f5f92359e3cea8) ([#11645](https://github.com/yt-dlp/yt-dlp/issues/11645)) by [bashonly](https://github.com/bashonly)
|
||||
- **vk**: [Fix extractors](https://github.com/yt-dlp/yt-dlp/commit/c038a7b187ba24360f14134842a7a2cf897c33b1) ([#11715](https://github.com/yt-dlp/yt-dlp/issues/11715)) by [bashonly](https://github.com/bashonly)
|
||||
- **youtube**
|
||||
- [Adjust player clients for site changes](https://github.com/yt-dlp/yt-dlp/commit/0d146c1e36f467af30e87b7af651bdee67b73500) ([#11663](https://github.com/yt-dlp/yt-dlp/issues/11663)) by [bashonly](https://github.com/bashonly)
|
||||
- tab: [Fix playlists tab extraction](https://github.com/yt-dlp/yt-dlp/commit/fe70f20aedf528fdee332131bc9b6710e54e6f10) ([#11615](https://github.com/yt-dlp/yt-dlp/issues/11615)) by [seproDev](https://github.com/seproDev)
|
||||
|
||||
#### Networking changes
|
||||
- **Request Handler**: websockets: [Support websockets 14.0+](https://github.com/yt-dlp/yt-dlp/commit/c7316373c0a886f65a07a51e50ee147bb3294c85) ([#11616](https://github.com/yt-dlp/yt-dlp/issues/11616)) by [coletdjnz](https://github.com/coletdjnz)
|
||||
|
||||
#### Misc. changes
|
||||
- **cleanup**
|
||||
- [Bump ruff to 0.8.x](https://github.com/yt-dlp/yt-dlp/commit/d8fb3490863653182864d2a53522f350d67a9ff8) ([#11608](https://github.com/yt-dlp/yt-dlp/issues/11608)) by [seproDev](https://github.com/seproDev)
|
||||
- Miscellaneous
|
||||
- [ccf0a6b](https://github.com/yt-dlp/yt-dlp/commit/ccf0a6b86b7f68a75463804fe485ec240b8635f0) by [bashonly](https://github.com/bashonly), [pzhlkj6612](https://github.com/pzhlkj6612)
|
||||
- [2b67ac3](https://github.com/yt-dlp/yt-dlp/commit/2b67ac300ac8b44368fb121637d1743cea8c5b6b) by [bashonly](https://github.com/bashonly), [seproDev](https://github.com/seproDev)
|
||||
|
||||
### 2024.11.18
|
||||
|
||||
#### Important changes
|
||||
|
||||
@@ -195,7 +195,10 @@ def _extract_firefox_cookies(profile, container, logger):
|
||||
|
||||
def _firefox_browser_dirs():
|
||||
if sys.platform in ('cygwin', 'win32'):
|
||||
yield os.path.expandvars(R'%APPDATA%\Mozilla\Firefox\Profiles')
|
||||
yield from map(os.path.expandvars, (
|
||||
R'%APPDATA%\Mozilla\Firefox\Profiles',
|
||||
R'%LOCALAPPDATA%\Packages\Mozilla.Firefox_n80bbvh6b1yt2\LocalCache\Roaming\Mozilla\Firefox\Profiles',
|
||||
))
|
||||
|
||||
elif sys.platform == 'darwin':
|
||||
yield os.path.expanduser('~/Library/Application Support/Firefox/Profiles')
|
||||
|
||||
@@ -232,7 +232,7 @@ Format: Marked,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text'''
|
||||
|
||||
error = self._parse_json(e.cause.response.read(), video_id)
|
||||
message = error.get('message')
|
||||
if e.cause.code == 403 and error.get('code') == 'player-bad-geolocation-country':
|
||||
if e.cause.status == 403 and error.get('code') == 'player-bad-geolocation-country':
|
||||
self.raise_geo_restricted(msg=message)
|
||||
raise ExtractorError(message)
|
||||
else:
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import time
|
||||
|
||||
from .common import InfoExtractor
|
||||
from ..networking import HEADRequest
|
||||
from ..utils import int_or_none
|
||||
|
||||
|
||||
@@ -31,9 +28,6 @@ class CultureUnpluggedIE(InfoExtractor):
|
||||
video_id = mobj.group('id')
|
||||
display_id = mobj.group('display_id') or video_id
|
||||
|
||||
# request setClientTimezone.php to get PHPSESSID cookie which is need to get valid json data in the next request
|
||||
self._request_webpage(HEADRequest(
|
||||
'http://www.cultureunplugged.com/setClientTimezone.php?timeOffset=%d' % -(time.timezone / 3600)), display_id)
|
||||
movie_data = self._download_json(
|
||||
f'http://www.cultureunplugged.com/movie-data/cu-{video_id}.json', display_id)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from .common import InfoExtractor
|
||||
from ..networking.exceptions import HTTPError
|
||||
from ..utils import (
|
||||
ExtractorError,
|
||||
traverse_obj,
|
||||
@@ -110,8 +111,8 @@ class PixivSketchUserIE(PixivSketchBaseIE):
|
||||
if not traverse_obj(data, 'is_broadcasting'):
|
||||
try:
|
||||
self._call_api(user_id, 'users/current.json', url, 'Investigating reason for request failure')
|
||||
except ExtractorError as ex:
|
||||
if ex.cause and ex.cause.code == 401:
|
||||
except ExtractorError as e:
|
||||
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
|
||||
self.raise_login_required(f'Please log in, or use direct link like https://sketch.pixiv.net/@{user_id}/1234567890', method='cookies')
|
||||
raise ExtractorError('This user is offline', expected=True)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Autogenerated by devscripts/update-version.py
|
||||
|
||||
__version__ = '2024.11.18'
|
||||
__version__ = '2024.12.03'
|
||||
|
||||
RELEASE_GIT_HEAD = '7ea2787920cccc6b8ea30791993d114fbd564434'
|
||||
RELEASE_GIT_HEAD = '2b67ac300ac8b44368fb121637d1743cea8c5b6b'
|
||||
|
||||
VARIANT = None
|
||||
|
||||
@@ -12,4 +12,4 @@ CHANNEL = 'stable'
|
||||
|
||||
ORIGIN = 'yt-dlp/yt-dlp'
|
||||
|
||||
_pkg_version = '2024.11.18'
|
||||
_pkg_version = '2024.12.03'
|
||||
|
||||
Reference in New Issue
Block a user