mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-22 16:07:49 +08:00
Update On Thu Mar 5 20:25:48 CET 2026
This commit is contained in:
@@ -1289,3 +1289,4 @@ Update On Sat Feb 28 19:45:29 CET 2026
|
||||
Update On Sun Mar 1 19:45:28 CET 2026
|
||||
Update On Mon Mar 2 20:01:19 CET 2026
|
||||
Update On Wed Mar 4 20:06:13 CET 2026
|
||||
Update On Thu Mar 5 20:25:40 CET 2026
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
"@inlang/paraglide-js": "2.13.1",
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@material/material-color-utilities": "0.4.0",
|
||||
"@mui/icons-material": "7.3.8",
|
||||
"@mui/icons-material": "7.3.9",
|
||||
"@mui/lab": "7.0.0-beta.17",
|
||||
"@mui/material": "7.3.8",
|
||||
"@mui/material": "7.3.9",
|
||||
"@mui/x-date-pickers": "8.27.2",
|
||||
"@nyanpasu/interface": "workspace:^",
|
||||
"@nyanpasu/ui": "workspace:^",
|
||||
@@ -49,8 +49,8 @@
|
||||
"country-code-emoji": "2.3.0",
|
||||
"country-emoji": "1.5.6",
|
||||
"dayjs": "1.11.19",
|
||||
"framer-motion": "12.34.5",
|
||||
"i18next": "25.8.13",
|
||||
"framer-motion": "12.35.0",
|
||||
"i18next": "25.8.14",
|
||||
"jotai": "2.18.0",
|
||||
"json-schema": "0.4.0",
|
||||
"material-react-table": "3.2.1",
|
||||
@@ -78,9 +78,9 @@
|
||||
"@iconify/json": "2.2.446",
|
||||
"@monaco-editor/react": "4.7.0",
|
||||
"@tanstack/react-query": "5.90.21",
|
||||
"@tanstack/react-router": "1.163.3",
|
||||
"@tanstack/react-router-devtools": "1.163.3",
|
||||
"@tanstack/router-plugin": "1.164.0",
|
||||
"@tanstack/react-router": "1.166.2",
|
||||
"@tanstack/react-router-devtools": "1.166.2",
|
||||
"@tanstack/router-plugin": "1.166.2",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.3.2",
|
||||
"@tauri-apps/plugin-dialog": "2.6.0",
|
||||
"@tauri-apps/plugin-fs": "2.4.5",
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@material/material-color-utilities": "0.4.0",
|
||||
"@mui/icons-material": "7.3.8",
|
||||
"@mui/icons-material": "7.3.9",
|
||||
"@mui/lab": "7.0.0-beta.17",
|
||||
"@mui/material": "7.3.8",
|
||||
"@mui/material": "7.3.9",
|
||||
"@radix-ui/react-portal": "1.1.10",
|
||||
"@radix-ui/react-scroll-area": "1.2.10",
|
||||
"@tauri-apps/api": "2.10.1",
|
||||
@@ -23,7 +23,7 @@
|
||||
"@vitejs/plugin-react": "5.1.4",
|
||||
"ahooks": "3.9.6",
|
||||
"d3": "7.9.0",
|
||||
"framer-motion": "12.34.5",
|
||||
"framer-motion": "12.35.0",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"react-error-boundary": "6.0.0",
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"mihomo_alpha": "alpha-b7b05e0",
|
||||
"clash_rs": "v0.9.4",
|
||||
"clash_premium": "2023-09-05-gdcc8d87",
|
||||
"clash_rs_alpha": "0.9.4-alpha+sha.5641963"
|
||||
"clash_rs_alpha": "0.9.4-alpha+sha.e11288b"
|
||||
},
|
||||
"arch_template": {
|
||||
"mihomo": {
|
||||
@@ -69,5 +69,5 @@
|
||||
"linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf"
|
||||
}
|
||||
},
|
||||
"updated_at": "2026-03-03T22:30:35.200Z"
|
||||
"updated_at": "2026-03-04T22:36:39.634Z"
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/node": "24.11.0",
|
||||
"autoprefixer": "10.4.27",
|
||||
"conventional-changelog-conventionalcommits": "9.2.0",
|
||||
"conventional-changelog-conventionalcommits": "9.3.0",
|
||||
"cross-env": "10.1.0",
|
||||
"dedent": "1.7.2",
|
||||
"globals": "17.4.0",
|
||||
|
||||
Generated
+170
-148
@@ -47,8 +47,8 @@ importers:
|
||||
specifier: 10.4.27
|
||||
version: 10.4.27(postcss@8.5.8)
|
||||
conventional-changelog-conventionalcommits:
|
||||
specifier: 9.2.0
|
||||
version: 9.2.0
|
||||
specifier: 9.3.0
|
||||
version: 9.3.0
|
||||
cross-env:
|
||||
specifier: 10.1.0
|
||||
version: 10.1.0
|
||||
@@ -186,17 +186,17 @@ importers:
|
||||
specifier: 0.4.0
|
||||
version: 0.4.0
|
||||
'@mui/icons-material':
|
||||
specifier: 7.3.8
|
||||
version: 7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
specifier: 7.3.9
|
||||
version: 7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/lab':
|
||||
specifier: 7.0.0-beta.17
|
||||
version: 7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
version: 7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/material':
|
||||
specifier: 7.3.8
|
||||
version: 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: 7.3.9
|
||||
version: 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/x-date-pickers':
|
||||
specifier: 8.27.2
|
||||
version: 8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
version: 8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@nyanpasu/interface':
|
||||
specifier: workspace:^
|
||||
version: link:../interface
|
||||
@@ -247,7 +247,7 @@ importers:
|
||||
version: 3.13.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/router-zod-adapter':
|
||||
specifier: 1.81.5
|
||||
version: 1.81.5(@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6)
|
||||
version: 1.81.5(@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6)
|
||||
'@tauri-apps/api':
|
||||
specifier: 2.10.1
|
||||
version: 2.10.1
|
||||
@@ -279,11 +279,11 @@ importers:
|
||||
specifier: 1.11.19
|
||||
version: 1.11.19
|
||||
framer-motion:
|
||||
specifier: 12.34.5
|
||||
version: 12.34.5(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: 12.35.0
|
||||
version: 12.35.0(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
i18next:
|
||||
specifier: 25.8.13
|
||||
version: 25.8.13(typescript@5.9.3)
|
||||
specifier: 25.8.14
|
||||
version: 25.8.14(typescript@5.9.3)
|
||||
jotai:
|
||||
specifier: 2.18.0
|
||||
version: 2.18.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4)
|
||||
@@ -292,13 +292,13 @@ importers:
|
||||
version: 0.4.0
|
||||
material-react-table:
|
||||
specifier: npm:@greenhat616/material-react-table@4.0.0
|
||||
version: '@greenhat616/material-react-table@4.0.0(81c0cc0e65444eb56a8585a2818821cc)'
|
||||
version: '@greenhat616/material-react-table@4.0.0(25f61a81936a20af33a6753725e66bcf)'
|
||||
monaco-editor:
|
||||
specifier: 0.55.1
|
||||
version: 0.55.1
|
||||
mui-color-input:
|
||||
specifier: 7.0.0
|
||||
version: 7.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
version: 7.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
react:
|
||||
specifier: 19.2.4
|
||||
version: 19.2.4
|
||||
@@ -316,10 +316,10 @@ importers:
|
||||
version: 7.71.2(react@19.2.4)
|
||||
react-hook-form-mui:
|
||||
specifier: 8.2.0
|
||||
version: 8.2.0(39edfc1cbf820f1606fd11ce56a5f8d4)
|
||||
version: 8.2.0(33a3b7a41cb869607c091202280d085c)
|
||||
react-i18next:
|
||||
specifier: 15.7.4
|
||||
version: 15.7.4(i18next@25.8.13(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
|
||||
version: 15.7.4(i18next@25.8.14(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
|
||||
react-markdown:
|
||||
specifier: 10.1.0
|
||||
version: 10.1.0(@types/react@19.2.14)(react@19.2.4)
|
||||
@@ -361,14 +361,14 @@ importers:
|
||||
specifier: 5.90.21
|
||||
version: 5.90.21(react@19.2.4)
|
||||
'@tanstack/react-router':
|
||||
specifier: 1.163.3
|
||||
version: 1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: 1.166.2
|
||||
version: 1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/react-router-devtools':
|
||||
specifier: 1.163.3
|
||||
version: 1.163.3(@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.163.3)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: 1.166.2
|
||||
version: 1.166.2(@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.166.2)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/router-plugin':
|
||||
specifier: 1.164.0
|
||||
version: 1.164.0(@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.11.0)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.2))
|
||||
specifier: 1.166.2
|
||||
version: 1.166.2(@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.11.0)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.2))
|
||||
'@tauri-apps/plugin-clipboard-manager':
|
||||
specifier: 2.3.2
|
||||
version: 2.3.2
|
||||
@@ -472,14 +472,14 @@ importers:
|
||||
specifier: 0.4.0
|
||||
version: 0.4.0
|
||||
'@mui/icons-material':
|
||||
specifier: 7.3.8
|
||||
version: 7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
specifier: 7.3.9
|
||||
version: 7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/lab':
|
||||
specifier: 7.0.0-beta.17
|
||||
version: 7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
version: 7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/material':
|
||||
specifier: 7.3.8
|
||||
version: 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: 7.3.9
|
||||
version: 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@radix-ui/react-portal':
|
||||
specifier: 1.1.10
|
||||
version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
@@ -505,8 +505,8 @@ importers:
|
||||
specifier: 7.9.0
|
||||
version: 7.9.0
|
||||
framer-motion:
|
||||
specifier: 12.34.5
|
||||
version: 12.34.5(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: 12.35.0
|
||||
version: 12.35.0(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
react:
|
||||
specifier: 19.2.4
|
||||
version: 19.2.4
|
||||
@@ -518,7 +518,7 @@ importers:
|
||||
version: 6.0.0(react@19.2.4)
|
||||
react-i18next:
|
||||
specifier: 15.7.4
|
||||
version: 15.7.4(i18next@25.8.13(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
|
||||
version: 15.7.4(i18next@25.8.14(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
|
||||
react-use:
|
||||
specifier: 17.6.0
|
||||
version: 17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
@@ -612,8 +612,8 @@ importers:
|
||||
specifier: 1.1.1
|
||||
version: 1.1.1
|
||||
tar:
|
||||
specifier: 7.5.9
|
||||
version: 7.5.9
|
||||
specifier: 7.5.10
|
||||
version: 7.5.10
|
||||
telegram:
|
||||
specifier: 2.26.22
|
||||
version: 2.26.22
|
||||
@@ -1777,14 +1777,14 @@ packages:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
|
||||
'@mui/core-downloads-tracker@7.3.8':
|
||||
resolution: {integrity: sha512-s9UHZo7QJVly7gNArEZkbbsimHqJZhElgBpXIJdehZ4OWXt+CCr0SBDgUCDJnQrqpd1dWK2dLq5rmO4mCBmI3w==}
|
||||
'@mui/core-downloads-tracker@7.3.9':
|
||||
resolution: {integrity: sha512-MOkOCTfbMJwLshlBCKJ59V2F/uaLYfmKnN76kksj6jlGUVdI25A9Hzs08m+zjBRdLv+sK7Rqdsefe8X7h/6PCw==}
|
||||
|
||||
'@mui/icons-material@7.3.8':
|
||||
resolution: {integrity: sha512-88sWg/UJc1X82OMO+ISR4E3P58I3BjFVg0qkmDu7OWlN8VijneZD3ylFA+ImxuPjMHW3SHosfSJYy1fztoz0fw==}
|
||||
'@mui/icons-material@7.3.9':
|
||||
resolution: {integrity: sha512-BT+zPJXss8Hg/oEMRmHl17Q97bPACG4ufFSfGEdhiE96jOyR5Dz1ty7ZWt1fVGR0y1p+sSgEwQT/MNZQmoWDCw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@mui/material': ^7.3.8
|
||||
'@mui/material': ^7.3.9
|
||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
@@ -1812,13 +1812,13 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/material@7.3.8':
|
||||
resolution: {integrity: sha512-QKd1RhDXE1hf2sQDNayA9ic9jGkEgvZOf0tTkJxlBPG8ns8aS4rS8WwYURw2x5y3739p0HauUXX9WbH7UufFLw==}
|
||||
'@mui/material@7.3.9':
|
||||
resolution: {integrity: sha512-I8yO3t4T0y7bvDiR1qhIN6iBWZOTBfVOnmLlM7K6h3dx5YX2a7rnkuXzc2UkZaqhxY9NgTnEbdPlokR1RxCNRQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
'@emotion/styled': ^11.3.0
|
||||
'@mui/material-pigment-css': ^7.3.8
|
||||
'@mui/material-pigment-css': ^7.3.9
|
||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
@@ -1842,8 +1842,8 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/private-theming@7.3.8':
|
||||
resolution: {integrity: sha512-du5dlPZ9XL3xW2apHoGDXBI+QLtyVJGrXNCfcNYfP/ojkz1RQ0rRV6VG9Rkm1DqEFRG8mjjTL7zmE1Bvn1eR4A==}
|
||||
'@mui/private-theming@7.3.9':
|
||||
resolution: {integrity: sha512-ErIyRQvsiQEq7Yvcvfw9UDHngaqjMy9P3JDPnRAaKG5qhpl2C4tX/W1S4zJvpu+feihmZJStjIyvnv6KDbIrlw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
@@ -1865,8 +1865,8 @@ packages:
|
||||
'@emotion/styled':
|
||||
optional: true
|
||||
|
||||
'@mui/styled-engine@7.3.8':
|
||||
resolution: {integrity: sha512-JHAeXQzS0tJ+Fq3C6J4TVDsW+yKhO4uuxuiLaopNStJeQYBIUCXpKYyUCcgXym4AmhbznQnv9RlHywSH6b0FOg==}
|
||||
'@mui/styled-engine@7.3.9':
|
||||
resolution: {integrity: sha512-JqujWt5bX4okjUPGpVof/7pvgClqh7HvIbsIBIOOlCh2u3wG/Bwp4+E1bc1dXSwkrkp9WUAoNdI5HEC+5HKvMw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.4.1
|
||||
@@ -1894,8 +1894,8 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/system@7.3.8':
|
||||
resolution: {integrity: sha512-hoFRj4Zw2Km8DPWZp/nKG+ao5Jw5LSk2m/e4EGc6M3RRwXKEkMSG4TgtfVJg7dS2homRwtdXSMW+iRO0ZJ4+IA==}
|
||||
'@mui/system@7.3.9':
|
||||
resolution: {integrity: sha512-aL1q9am8XpRrSabv9qWf5RHhJICJql34wnrc1nz0MuOglPRYF/liN+c8VqZdTvUn9qg+ZjRVbKf4sJVFfIDtmg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
@@ -1910,16 +1910,16 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/types@7.4.10':
|
||||
resolution: {integrity: sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==}
|
||||
'@mui/types@7.4.11':
|
||||
resolution: {integrity: sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q==}
|
||||
peerDependencies:
|
||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/types@7.4.11':
|
||||
resolution: {integrity: sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q==}
|
||||
'@mui/types@7.4.12':
|
||||
resolution: {integrity: sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w==}
|
||||
peerDependencies:
|
||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
@@ -1954,6 +1954,16 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/utils@7.3.9':
|
||||
resolution: {integrity: sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/x-date-pickers@8.27.2':
|
||||
resolution: {integrity: sha512-06LFkHFRXJ2O9DMXtWAA3kY0jpbL7XH8iqa8L5cBlN+8bRx/UVLKlZYlhGv06C88jF9kuZWY1bUgrv/EoY/2Ww==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -3514,20 +3524,20 @@ packages:
|
||||
peerDependencies:
|
||||
react: ^18 || ^19
|
||||
|
||||
'@tanstack/react-router-devtools@1.163.3':
|
||||
resolution: {integrity: sha512-42VMkV/2Z8ro7xzblPBRNZIEmCNXMzm2jD68G52p2qhjXm38wGpg46qneAESN9FtTQeVWk5aSXs47/jt7lkzmw==}
|
||||
'@tanstack/react-router-devtools@1.166.2':
|
||||
resolution: {integrity: sha512-EQhFQRArwxS0OjIWWGD5wfNboJq7rIYCbioHvepgbxgblKtNLWnRr3LFj34QhXTP1aQsPYb9t8+VTi3VbFuAfA==}
|
||||
engines: {node: '>=20.19'}
|
||||
peerDependencies:
|
||||
'@tanstack/react-router': ^1.163.3
|
||||
'@tanstack/router-core': ^1.163.3
|
||||
'@tanstack/react-router': ^1.166.2
|
||||
'@tanstack/router-core': ^1.166.2
|
||||
react: '>=18.0.0 || >=19.0.0'
|
||||
react-dom: '>=18.0.0 || >=19.0.0'
|
||||
peerDependenciesMeta:
|
||||
'@tanstack/router-core':
|
||||
optional: true
|
||||
|
||||
'@tanstack/react-router@1.163.3':
|
||||
resolution: {integrity: sha512-hheBbFVb+PbxtrWp8iy6+TTRTbhx3Pn6hKo8Tv/sWlG89ZMcD1xpQWzx8ukHN9K8YWbh5rdzt4kv6u8X4kB28Q==}
|
||||
'@tanstack/react-router@1.166.2':
|
||||
resolution: {integrity: sha512-pKhUtrvVLlhjWhsHkJSuIzh1J4LcP+8ErbIqRLORX9Js8dUFMKoT0+8oFpi+P8QRpuhm/7rzjYiWfcyTsqQZtA==}
|
||||
engines: {node: '>=20.19'}
|
||||
peerDependencies:
|
||||
react: '>=18.0.0 || >=19.0.0'
|
||||
@@ -3558,30 +3568,30 @@ packages:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
|
||||
'@tanstack/router-core@1.163.3':
|
||||
resolution: {integrity: sha512-jPptiGq/w3nuPzcMC7RNa79aU+b6OjaDzWJnBcV2UAwL4ThJamRS4h42TdhJE+oF5yH9IEnCOGQdfnbw45LbfA==}
|
||||
'@tanstack/router-core@1.166.2':
|
||||
resolution: {integrity: sha512-zn3NhENOAX9ToQiX077UV2OH3aJKOvV2ZMNZZxZ3gDG3i3WqL8NfWfEgetEAfMN37/Mnt90PpotYgf7IyuoKqQ==}
|
||||
engines: {node: '>=20.19'}
|
||||
|
||||
'@tanstack/router-devtools-core@1.163.3':
|
||||
resolution: {integrity: sha512-FPi64IP0PT1IkoeyGmsD6JoOVOYAb85VCH0mUbSdD90yV0+1UB6oT+D7K27GXkp7SXMJN3mBEjU5rKnNnmSCIw==}
|
||||
'@tanstack/router-devtools-core@1.166.2':
|
||||
resolution: {integrity: sha512-Ke8HquuwMhLYpo/6nxNgrzi9Ns2lsK9uwDba6WKA8I0K7fyYZoAUu+7AD6gdEcVU4NF6LjtMPfUCHmVtYYRTDw==}
|
||||
engines: {node: '>=20.19'}
|
||||
peerDependencies:
|
||||
'@tanstack/router-core': ^1.163.3
|
||||
'@tanstack/router-core': ^1.166.2
|
||||
csstype: ^3.0.10
|
||||
peerDependenciesMeta:
|
||||
csstype:
|
||||
optional: true
|
||||
|
||||
'@tanstack/router-generator@1.164.0':
|
||||
resolution: {integrity: sha512-Uiyj+RtW0kdeqEd8NEd3Np1Z2nhJ2xgLS8U+5mTvFrm/s3xkM2LYjJHoLzc6am7sKPDsmeF9a4/NYq3R7ZJP0Q==}
|
||||
'@tanstack/router-generator@1.166.2':
|
||||
resolution: {integrity: sha512-wbvdyP1PKKQKk4aVlGeK9S5uDy8zodTr3tEZ2gRKNavJLusXbEWqtoo42JxHFFNB6dtguehFMt8PyZPAtkgWwQ==}
|
||||
engines: {node: '>=20.19'}
|
||||
|
||||
'@tanstack/router-plugin@1.164.0':
|
||||
resolution: {integrity: sha512-cZPsEMhqzyzmuPuDbsTAzBZaT+cj0pGjwdhjxJfPCM06Ax8v4tFR7n/Ug0UCwnNAUEmKZWN3lA9uT+TxXnk9PQ==}
|
||||
'@tanstack/router-plugin@1.166.2':
|
||||
resolution: {integrity: sha512-TnyV/7//Vp5fR49mmNbOWHGz9IJTm1lqVxzPdtpzg7D5PjkW2HFmLFLtWwpJgz2R7AJJWR4Ge5kIPmC+fVZ6eQ==}
|
||||
engines: {node: '>=20.19'}
|
||||
peerDependencies:
|
||||
'@rsbuild/core': '>=1.0.2'
|
||||
'@tanstack/react-router': ^1.163.3
|
||||
'@tanstack/react-router': ^1.166.2
|
||||
vite: '>=5.0.0 || >=6.0.0 || >=7.0.0'
|
||||
vite-plugin-solid: ^2.11.10
|
||||
webpack: '>=5.92.0'
|
||||
@@ -4563,8 +4573,8 @@ packages:
|
||||
resolution: {integrity: sha512-4YB1zEXqB17oBI8yRsAs1T+ZhbdsOgJqkl6Trz+GXt/eKf1e4jnA0oW+sOd9BEENzEViuNW0DNoFFjSf3CeC5Q==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
conventional-changelog-conventionalcommits@9.2.0:
|
||||
resolution: {integrity: sha512-fCf+ODjseueTV09wVBoC0HXLi3OyuBJ+HfE3L63Khxqnr99f9nUcnQh3a15lCWHlGLihyZShW/mVVkBagr9JvQ==}
|
||||
conventional-changelog-conventionalcommits@9.3.0:
|
||||
resolution: {integrity: sha512-kYFx6gAyjSIMwNtASkI3ZE99U1fuVDJr0yTYgVy+I2QG46zNZfl2her+0+eoviG82c5WQvW1jMt1eOQTeJLodA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
conventional-commits-parser@6.3.0:
|
||||
@@ -5141,8 +5151,8 @@ packages:
|
||||
fraction.js@5.3.4:
|
||||
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
|
||||
|
||||
framer-motion@12.34.5:
|
||||
resolution: {integrity: sha512-Z2dQ+o7BsfpJI3+u0SQUNCrN+ajCKJen1blC4rCHx1Ta2EOHs+xKJegLT2aaD9iSMbU3OoX+WabQXkloUbZmJQ==}
|
||||
framer-motion@12.35.0:
|
||||
resolution: {integrity: sha512-w8hghCMQ4oq10j6aZh3U2yeEQv5K69O/seDI/41PK4HtgkLrcBovUNc0ayBC3UyyU7V1mrY2yLzvYdWJX9pGZQ==}
|
||||
peerDependencies:
|
||||
'@emotion/is-prop-valid': '*'
|
||||
react: ^18.0.0 || ^19.0.0
|
||||
@@ -5324,8 +5334,8 @@ packages:
|
||||
hyphenate-style-name@1.1.0:
|
||||
resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
|
||||
|
||||
i18next@25.8.13:
|
||||
resolution: {integrity: sha512-E0vzjBY1yM+nsFrtgkjLhST2NBkirkvOVoQa0MSldhsuZ3jUge7ZNpuwG0Cfc74zwo5ZwRzg3uOgT+McBn32iA==}
|
||||
i18next@25.8.14:
|
||||
resolution: {integrity: sha512-paMUYkfWJMsWPeE/Hejcw+XLhHrQPehem+4wMo+uELnvIwvCG019L9sAIljwjCmEMtFQQO3YeitJY8Kctei3iA==}
|
||||
peerDependencies:
|
||||
typescript: ^5
|
||||
peerDependenciesMeta:
|
||||
@@ -5987,8 +5997,8 @@ packages:
|
||||
peerDependencies:
|
||||
monaco-editor: '>=0.36'
|
||||
|
||||
motion-dom@12.34.5:
|
||||
resolution: {integrity: sha512-k33CsnxO2K3gBRMUZT+vPmc4Utlb5menKdG0RyVNLtlqRaaJPRWlE9fXl8NTtfZ5z3G8TDvqSu0MENLqSTaHZA==}
|
||||
motion-dom@12.35.0:
|
||||
resolution: {integrity: sha512-FFMLEnIejK/zDABn+vqGVAUN4T0+3fw+cVAY8MMT65yR+j5uMuvWdd4npACWhh94OVWQs79CrBBuwOwGRZAQiA==}
|
||||
|
||||
motion-utils@12.29.2:
|
||||
resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==}
|
||||
@@ -7137,8 +7147,8 @@ packages:
|
||||
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
tar@7.5.9:
|
||||
resolution: {integrity: sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==}
|
||||
tar@7.5.10:
|
||||
resolution: {integrity: sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
telegram@2.26.22:
|
||||
@@ -8542,7 +8552,7 @@ snapshots:
|
||||
'@commitlint/config-conventional@20.4.3':
|
||||
dependencies:
|
||||
'@commitlint/types': 20.4.3
|
||||
conventional-changelog-conventionalcommits: 9.2.0
|
||||
conventional-changelog-conventionalcommits: 9.3.0
|
||||
|
||||
'@commitlint/config-validator@20.4.3':
|
||||
dependencies:
|
||||
@@ -8901,13 +8911,13 @@ snapshots:
|
||||
|
||||
'@floating-ui/utils@0.2.10': {}
|
||||
|
||||
'@greenhat616/material-react-table@4.0.0(81c0cc0e65444eb56a8585a2818821cc)':
|
||||
'@greenhat616/material-react-table@4.0.0(25f61a81936a20af33a6753725e66bcf)':
|
||||
dependencies:
|
||||
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/icons-material': 7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/x-date-pickers': 8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/icons-material': 7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/x-date-pickers': 8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/match-sorter-utils': 8.19.4
|
||||
'@tanstack/react-table': 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/react-virtual': 3.13.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
@@ -9076,20 +9086,20 @@ snapshots:
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
|
||||
'@mui/core-downloads-tracker@7.3.8': {}
|
||||
'@mui/core-downloads-tracker@7.3.9': {}
|
||||
|
||||
'@mui/icons-material@7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
|
||||
'@mui/icons-material@7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
react: 19.2.4
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/lab@7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@mui/lab@7.0.0-beta.17(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.3
|
||||
'@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/types': 7.4.6(@types/react@19.2.14)
|
||||
'@mui/utils': 7.3.2(@types/react@19.2.14)(react@19.2.4)
|
||||
@@ -9102,13 +9112,13 @@ snapshots:
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/core-downloads-tracker': 7.3.8
|
||||
'@mui/system': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/types': 7.4.11(@types/react@19.2.14)
|
||||
'@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/core-downloads-tracker': 7.3.9
|
||||
'@mui/system': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/types': 7.4.12(@types/react@19.2.14)
|
||||
'@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4)
|
||||
'@popperjs/core': 2.11.8
|
||||
'@types/react-transition-group': 4.4.12(@types/react@19.2.14)
|
||||
clsx: 2.1.1
|
||||
@@ -9132,10 +9142,10 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/private-theming@7.3.8(@types/react@19.2.14)(react@19.2.4)':
|
||||
'@mui/private-theming@7.3.9(@types/react@19.2.14)(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4)
|
||||
prop-types: 15.8.1
|
||||
react: 19.2.4
|
||||
optionalDependencies:
|
||||
@@ -9154,7 +9164,7 @@ snapshots:
|
||||
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
|
||||
'@mui/styled-engine@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)':
|
||||
'@mui/styled-engine@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@emotion/cache': 11.14.0
|
||||
@@ -9172,22 +9182,6 @@ snapshots:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/private-theming': 7.3.2(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/styled-engine': 7.3.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
|
||||
'@mui/types': 7.4.10(@types/react@19.2.14)
|
||||
'@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4)
|
||||
clsx: 2.1.1
|
||||
csstype: 3.2.3
|
||||
prop-types: 15.8.1
|
||||
react: 19.2.4
|
||||
optionalDependencies:
|
||||
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/private-theming': 7.3.8(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/styled-engine': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
|
||||
'@mui/types': 7.4.11(@types/react@19.2.14)
|
||||
'@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4)
|
||||
clsx: 2.1.1
|
||||
@@ -9199,13 +9193,29 @@ snapshots:
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/types@7.4.10(@types/react@19.2.14)':
|
||||
'@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/private-theming': 7.3.9(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/styled-engine': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
|
||||
'@mui/types': 7.4.12(@types/react@19.2.14)
|
||||
'@mui/utils': 7.3.9(@types/react@19.2.14)(react@19.2.4)
|
||||
clsx: 2.1.1
|
||||
csstype: 3.2.3
|
||||
prop-types: 15.8.1
|
||||
react: 19.2.4
|
||||
optionalDependencies:
|
||||
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/types@7.4.11(@types/react@19.2.14)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/types@7.4.11(@types/react@19.2.14)':
|
||||
'@mui/types@7.4.12(@types/react@19.2.14)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
optionalDependencies:
|
||||
@@ -9220,7 +9230,7 @@ snapshots:
|
||||
'@mui/utils@7.3.2(@types/react@19.2.14)(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/types': 7.4.10(@types/react@19.2.14)
|
||||
'@mui/types': 7.4.11(@types/react@19.2.14)
|
||||
'@types/prop-types': 15.7.15
|
||||
clsx: 2.1.1
|
||||
prop-types: 15.8.1
|
||||
@@ -9241,11 +9251,23 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/x-date-pickers@8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@mui/utils@7.3.9(@types/react@19.2.14)(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/system': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/types': 7.4.12(@types/react@19.2.14)
|
||||
'@types/prop-types': 15.7.15
|
||||
clsx: 2.1.1
|
||||
prop-types: 15.8.1
|
||||
react: 19.2.4
|
||||
react-is: 19.2.4
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.14
|
||||
|
||||
'@mui/x-date-pickers@8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
'@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/system': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/utils': 7.3.8(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/x-internals': 8.26.0(@types/react@19.2.14)(react@19.2.4)
|
||||
'@types/react-transition-group': 4.4.12(@types/react@19.2.14)
|
||||
@@ -10578,22 +10600,22 @@ snapshots:
|
||||
'@tanstack/query-core': 5.90.20
|
||||
react: 19.2.4
|
||||
|
||||
'@tanstack/react-router-devtools@1.163.3(@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.163.3)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@tanstack/react-router-devtools@1.166.2(@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.166.2)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@tanstack/react-router': 1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/router-devtools-core': 1.163.3(@tanstack/router-core@1.163.3)(csstype@3.2.3)
|
||||
'@tanstack/react-router': 1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/router-devtools-core': 1.166.2(@tanstack/router-core@1.166.2)(csstype@3.2.3)
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
optionalDependencies:
|
||||
'@tanstack/router-core': 1.163.3
|
||||
'@tanstack/router-core': 1.166.2
|
||||
transitivePeerDependencies:
|
||||
- csstype
|
||||
|
||||
'@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@tanstack/history': 1.161.4
|
||||
'@tanstack/react-store': 0.9.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/router-core': 1.163.3
|
||||
'@tanstack/router-core': 1.166.2
|
||||
isbot: 5.1.28
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
@@ -10625,7 +10647,7 @@ snapshots:
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
|
||||
'@tanstack/router-core@1.163.3':
|
||||
'@tanstack/router-core@1.166.2':
|
||||
dependencies:
|
||||
'@tanstack/history': 1.161.4
|
||||
'@tanstack/store': 0.9.1
|
||||
@@ -10635,18 +10657,18 @@ snapshots:
|
||||
tiny-invariant: 1.3.3
|
||||
tiny-warning: 1.0.3
|
||||
|
||||
'@tanstack/router-devtools-core@1.163.3(@tanstack/router-core@1.163.3)(csstype@3.2.3)':
|
||||
'@tanstack/router-devtools-core@1.166.2(@tanstack/router-core@1.166.2)(csstype@3.2.3)':
|
||||
dependencies:
|
||||
'@tanstack/router-core': 1.163.3
|
||||
'@tanstack/router-core': 1.166.2
|
||||
clsx: 2.1.1
|
||||
goober: 2.1.16(csstype@3.2.3)
|
||||
tiny-invariant: 1.3.3
|
||||
optionalDependencies:
|
||||
csstype: 3.2.3
|
||||
|
||||
'@tanstack/router-generator@1.164.0':
|
||||
'@tanstack/router-generator@1.166.2':
|
||||
dependencies:
|
||||
'@tanstack/router-core': 1.163.3
|
||||
'@tanstack/router-core': 1.166.2
|
||||
'@tanstack/router-utils': 1.161.4
|
||||
'@tanstack/virtual-file-routes': 1.161.4
|
||||
prettier: 3.8.1
|
||||
@@ -10657,7 +10679,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@tanstack/router-plugin@1.164.0(@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.11.0)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.2))':
|
||||
'@tanstack/router-plugin@1.166.2(@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.11.0)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.2))':
|
||||
dependencies:
|
||||
'@babel/core': 7.29.0
|
||||
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0)
|
||||
@@ -10665,15 +10687,15 @@ snapshots:
|
||||
'@babel/template': 7.28.6
|
||||
'@babel/traverse': 7.29.0
|
||||
'@babel/types': 7.29.0
|
||||
'@tanstack/router-core': 1.163.3
|
||||
'@tanstack/router-generator': 1.164.0
|
||||
'@tanstack/router-core': 1.166.2
|
||||
'@tanstack/router-generator': 1.166.2
|
||||
'@tanstack/router-utils': 1.161.4
|
||||
'@tanstack/virtual-file-routes': 1.161.4
|
||||
chokidar: 3.6.0
|
||||
unplugin: 2.3.11
|
||||
zod: 3.25.76
|
||||
optionalDependencies:
|
||||
'@tanstack/react-router': 1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/react-router': 1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
vite: 7.3.1(@types/node@24.11.0)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.2)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -10692,9 +10714,9 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6)':
|
||||
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6)':
|
||||
dependencies:
|
||||
'@tanstack/react-router': 1.163.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@tanstack/react-router': 1.166.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
zod: 4.3.6
|
||||
|
||||
'@tanstack/store@0.9.1': {}
|
||||
@@ -11723,7 +11745,7 @@ snapshots:
|
||||
dependencies:
|
||||
compare-func: 2.0.0
|
||||
|
||||
conventional-changelog-conventionalcommits@9.2.0:
|
||||
conventional-changelog-conventionalcommits@9.3.0:
|
||||
dependencies:
|
||||
compare-func: 2.0.0
|
||||
|
||||
@@ -12312,9 +12334,9 @@ snapshots:
|
||||
|
||||
fraction.js@5.3.4: {}
|
||||
|
||||
framer-motion@12.34.5(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
|
||||
framer-motion@12.35.0(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
|
||||
dependencies:
|
||||
motion-dom: 12.34.5
|
||||
motion-dom: 12.35.0
|
||||
motion-utils: 12.29.2
|
||||
tslib: 2.8.1
|
||||
optionalDependencies:
|
||||
@@ -12514,7 +12536,7 @@ snapshots:
|
||||
|
||||
hyphenate-style-name@1.1.0: {}
|
||||
|
||||
i18next@25.8.13(typescript@5.9.3):
|
||||
i18next@25.8.14(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.6
|
||||
optionalDependencies:
|
||||
@@ -13228,7 +13250,7 @@ snapshots:
|
||||
vscode-uri: 3.0.8
|
||||
yaml: 2.8.1
|
||||
|
||||
motion-dom@12.34.5:
|
||||
motion-dom@12.35.0:
|
||||
dependencies:
|
||||
motion-utils: 12.29.2
|
||||
|
||||
@@ -13240,12 +13262,12 @@ snapshots:
|
||||
|
||||
muggle-string@0.4.1: {}
|
||||
|
||||
mui-color-input@7.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
|
||||
mui-color-input@7.0.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
|
||||
dependencies:
|
||||
'@ctrl/tinycolor': 4.1.0
|
||||
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
|
||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
optionalDependencies:
|
||||
@@ -13666,24 +13688,24 @@ snapshots:
|
||||
react: 19.2.4
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
|
||||
react-hook-form-mui@8.2.0(39edfc1cbf820f1606fd11ce56a5f8d4):
|
||||
react-hook-form-mui@8.2.0(33a3b7a41cb869607c091202280d085c):
|
||||
dependencies:
|
||||
'@mui/material': 7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/material': 7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
react: 19.2.4
|
||||
react-hook-form: 7.71.2(react@19.2.4)
|
||||
optionalDependencies:
|
||||
'@mui/icons-material': 7.3.8(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/x-date-pickers': 8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.8(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@mui/icons-material': 7.3.9(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
|
||||
'@mui/x-date-pickers': 8.27.2(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@mui/material@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
|
||||
react-hook-form@7.71.2(react@19.2.4):
|
||||
dependencies:
|
||||
react: 19.2.4
|
||||
|
||||
react-i18next@15.7.4(i18next@25.8.13(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3):
|
||||
react-i18next@15.7.4(i18next@25.8.14(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.3
|
||||
html-parse-stringify: 3.0.1
|
||||
i18next: 25.8.13(typescript@5.9.3)
|
||||
i18next: 25.8.14(typescript@5.9.3)
|
||||
react: 19.2.4
|
||||
optionalDependencies:
|
||||
react-dom: 19.2.4(react@19.2.4)
|
||||
@@ -14386,7 +14408,7 @@ snapshots:
|
||||
|
||||
tapable@2.3.0: {}
|
||||
|
||||
tar@7.5.9:
|
||||
tar@7.5.10:
|
||||
dependencies:
|
||||
'@isaacs/fs-minipass': 4.0.1
|
||||
chownr: 3.0.0
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"fs-extra": "11.3.4",
|
||||
"octokit": "5.0.5",
|
||||
"picocolors": "1.1.1",
|
||||
"tar": "7.5.9",
|
||||
"tar": "7.5.10",
|
||||
"telegram": "2.26.22",
|
||||
"undici": "7.22.0",
|
||||
"yargs": "18.0.0"
|
||||
|
||||
@@ -9,6 +9,7 @@ endef
|
||||
|
||||
$(eval $(call BuildPackage,airoha-en8811h-firmware))
|
||||
|
||||
|
||||
Package/airoha-en7581-npu-firmware = $(call Package/firmware-default,Airoha EN7581 NPU firmware)
|
||||
define Package/airoha-en7581-npu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/airoha
|
||||
@@ -19,3 +20,27 @@ define Package/airoha-en7581-npu-firmware/install
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,airoha-en7581-npu-firmware))
|
||||
|
||||
|
||||
Package/airoha-en7581-mt7996-npu-firmware = $(call Package/firmware-default,Airoha EN7581+MT7996 NPU firmware)
|
||||
define Package/airoha-en7581-mt7996-npu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/airoha
|
||||
$(CP) \
|
||||
$(PKG_BUILD_DIR)/airoha/en7581_MT7996_npu_data.bin \
|
||||
$(PKG_BUILD_DIR)/airoha/en7581_MT7996_npu_rv32.bin \
|
||||
$(1)/lib/firmware/airoha
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,airoha-en7581-mt7996-npu-firmware))
|
||||
|
||||
|
||||
Package/airoha-an7583-npu-firmware = $(call Package/firmware-default,Airoha AN7583 NPU firmware)
|
||||
define Package/airoha-an7583-npu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/airoha
|
||||
$(CP) \
|
||||
$(PKG_BUILD_DIR)/airoha/an7583_npu_data.bin \
|
||||
$(PKG_BUILD_DIR)/airoha/an7583_npu_rv32.bin \
|
||||
$(1)/lib/firmware/airoha
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,airoha-an7583-npu-firmware))
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<a href="https://www.apple.com/safari/"><img alt="Safari" src="https://img.shields.io/badge/Safari-%E2%89%A516.4-000000?logo=safari&logoColor=white"></a>
|
||||
<a href="https://www.mozilla.org/firefox/"><img alt="Firefox" src="https://img.shields.io/badge/Firefox-%E2%89%A5128-FF7138?logo=firefoxbrowser&logoColor=white"></a>
|
||||
<a target="_blank" href="https://github.com/sirpdboy/luci-app-lucky/releases"> <img alt="GitHub release" src="https://img.shields.io/github/v/release/sirpdboy/luci-app-lucky"></a>
|
||||
<a href="https://github.com/sirpdboy/luci-app-lucky/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-lucky/total"></a>
|
||||
<a href="https://github.com/sirpdboy/luci-app-lucky/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-lucky/total?cacheSeconds=1"></a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<a href="https://www.apple.com/safari/"><img alt="Safari" src="https://img.shields.io/badge/Safari-%E2%89%A516.4-000000?logo=safari&logoColor=white"></a>
|
||||
<a href="https://www.mozilla.org/firefox/"><img alt="Firefox" src="https://img.shields.io/badge/Firefox-%E2%89%A5128-FF7138?logo=firefoxbrowser&logoColor=white"></a>
|
||||
<a target="_blank" href="https://github.com/sirpdboy/luci-app-partexp/releases"> <img alt="GitHub release" src="https://img.shields.io/github/v/release/sirpdboy/luci-app-partexp"></a>
|
||||
<a href="https://github.com/sirpdboy/luci-app-partexp/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-partexp/total"></a>
|
||||
<a href="https://github.com/sirpdboy/luci-app-partexp/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-partexp/total?cacheSeconds=1"></a>
|
||||
</p>
|
||||
|
||||
[中文] | [English](README.md)
|
||||
|
||||
@@ -10,11 +10,11 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_ARCH_quickstart:=$(ARCH)
|
||||
|
||||
PKG_NAME:=quickstart
|
||||
PKG_VERSION:=0.11.13
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=0.11.14
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/linkease/istore-packages/releases/download/prebuilt/
|
||||
PKG_HASH:=f9b3161f540b522d29fa28749da5fca34472f626e1ecd1f47d7aa279b6d0d111
|
||||
PKG_HASH:=9b018ec3808ec49c423e1bd68b0500a8499bf80aa65c245cb45835a9292ae5a1
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-binary-$(PKG_VERSION)
|
||||
|
||||
|
||||
@@ -911,7 +911,7 @@ function geo_view()
|
||||
local geoip_path = geo_dir .. "/geoip.dat"
|
||||
local geo_type, file_path, cmd
|
||||
local geo_string = ""
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if action == "lookup" then
|
||||
if api.datatypes.ipaddr(value) or api.datatypes.ip6addr(value) then
|
||||
geo_type, file_path = "geoip", geoip_path
|
||||
|
||||
@@ -46,8 +46,8 @@ function geo_convert_srs(var)
|
||||
local prefix = var["prefix"]
|
||||
local rule_name = var["rule_name"]
|
||||
local output_srs_file = GEO_VAR.TO_SRS_PATH .. prefix .. "-" .. rule_name .. ".srs"
|
||||
if not fs.access(output_srs_file) then
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if not fs.access(output_srs_file) and bin then
|
||||
local cmd = string.format("%q -type %q -action convert -input %q -list %q -output %q -lowmem=true",
|
||||
bin, prefix, geo_path, rule_name, output_srs_file)
|
||||
sys.call(cmd)
|
||||
@@ -916,9 +916,10 @@ function gen_config(var)
|
||||
local direct_dns_udp_server = var["direct_dns_udp_server"]
|
||||
local direct_dns_tcp_server = var["direct_dns_tcp_server"]
|
||||
local direct_dns_query_strategy = var["direct_dns_query_strategy"]
|
||||
local remote_dns_port = var["remote_dns_port"]
|
||||
local remote_dns_udp_server = var["remote_dns_udp_server"]
|
||||
local remote_dns_udp_port = var["remote_dns_udp_port"]
|
||||
local remote_dns_tcp_server = var["remote_dns_tcp_server"]
|
||||
local remote_dns_tcp_port = var["remote_dns_tcp_port"]
|
||||
local remote_dns_doh_url = var["remote_dns_doh_url"]
|
||||
local remote_dns_doh_host = var["remote_dns_doh_host"]
|
||||
local remote_dns_client_ip = var["remote_dns_client_ip"]
|
||||
@@ -1649,10 +1650,6 @@ function gen_config(var)
|
||||
detour = default_outTag,
|
||||
}
|
||||
|
||||
if api.is_local_ip(remote_server.server) then --dns为本地ip,不走代理
|
||||
remote_server.detour = "direct"
|
||||
end
|
||||
|
||||
if remote_dns_udp_server then
|
||||
local server_port = tonumber(remote_dns_udp_port) or 53
|
||||
remote_server.type = "udp"
|
||||
@@ -1677,6 +1674,10 @@ function gen_config(var)
|
||||
end
|
||||
end
|
||||
|
||||
if api.is_local_ip(remote_server.server) then --dns为本地ip,不走代理
|
||||
remote_server.detour = "direct"
|
||||
end
|
||||
|
||||
table.insert(dns.servers, remote_server)
|
||||
|
||||
fakedns_tag = "remote_fakeip"
|
||||
|
||||
@@ -538,35 +538,34 @@ table td, .table .td {
|
||||
}
|
||||
|
||||
function urltest_node(cbi_id, dom) {
|
||||
if (cbi_id != null) {
|
||||
dom.onclick = null
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
if(x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
dom.outerHTML = "<font style='color:red'><%:Timeout%></font>";
|
||||
} else {
|
||||
var color = "red";
|
||||
var use_time = result.use_time;
|
||||
use_time = parseInt(use_time) + 1;
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
} else {
|
||||
color = "red";
|
||||
}
|
||||
dom.outerHTML = "<font style='color:" + color + "'>" + use_time + " ms" + "</font>";
|
||||
}
|
||||
if (dom.dataset.busy == "1" || !cbi_id) return;
|
||||
dom.dataset.busy = "1";
|
||||
dom.style.color = "";
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
let color = "red";
|
||||
let text = "<%:Error%>";
|
||||
if (x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
text = "<%:Timeout%>";
|
||||
} else {
|
||||
dom.outerHTML = "<font style='color:red'><%:Error%></font>";
|
||||
let use_time = parseInt(result.use_time);
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
}
|
||||
text = use_time + " ms";
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
dom.innerText = text;
|
||||
dom.style.color = color;
|
||||
dom.dataset.busy = "0";
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function ping_node(cbi_id, dom, type) {
|
||||
|
||||
@@ -170,7 +170,7 @@ run_singbox() {
|
||||
local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}')
|
||||
local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}')
|
||||
json_add_string "remote_dns_${_proto}_server" "${_dns_address}"
|
||||
json_add_string "remote_dns_port" "${_dns_port}"
|
||||
json_add_string "remote_dns_${_proto}_port" "${_dns_port}"
|
||||
;;
|
||||
doh)
|
||||
local _doh_url _doh_host _doh_port _doh_bootstrap
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
local sys = require "luci.sys"
|
||||
local api = require "luci.passwall.api"
|
||||
local appname = "passwall"
|
||||
local appname = api.appname
|
||||
|
||||
local var = api.get_args(arg)
|
||||
local FLAG = var["-FLAG"]
|
||||
@@ -96,9 +95,11 @@ local function get_geosite(list_arg, out_path)
|
||||
local geosite_path = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"
|
||||
geosite_path = geosite_path:match("^(.*)/") .. "/geosite.dat"
|
||||
if not is_file_nonzero(geosite_path) then return 1 end
|
||||
if api.is_finded("geoview") and list_arg and out_path then
|
||||
local bin = api.get_app_path("geoview")
|
||||
sys.exec(bin .. " -type geosite -append=true -input " .. geosite_path .. " -list '" .. list_arg .. "' -output " .. out_path)
|
||||
local bin = api.finded_com("geoview")
|
||||
if bin and list_arg and out_path then
|
||||
local cmd = string.format("%q -type geosite -append=true -input %q -list %q -output %q -lowmem=true",
|
||||
bin, geosite_path, list_arg, out_path)
|
||||
sys.call(cmd)
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
require "luci.sys"
|
||||
local api = require "luci.passwall.api"
|
||||
local appname = "passwall"
|
||||
local appname = api.appname
|
||||
|
||||
local var = api.get_args(arg)
|
||||
local FLAG = var["-FLAG"]
|
||||
@@ -103,9 +102,11 @@ local function get_geosite(list_arg, out_path)
|
||||
local geosite_path = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"
|
||||
geosite_path = geosite_path:match("^(.*)/") .. "/geosite.dat"
|
||||
if not is_file_nonzero(geosite_path) then return 1 end
|
||||
if api.is_finded("geoview") and list_arg and out_path then
|
||||
local bin = api.get_app_path("geoview")
|
||||
sys.exec(bin .. " -type geosite -append=true -input " .. geosite_path .. " -list '" .. list_arg .. "' -output " .. out_path)
|
||||
local bin = api.finded_com("geoview")
|
||||
if bin and list_arg and out_path then
|
||||
local cmd = string.format("%q -type geosite -append=true -input %q -list %q -output %q -lowmem=true",
|
||||
bin, geosite_path, list_arg, out_path)
|
||||
sys.call(cmd)
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
@@ -194,6 +195,7 @@ config_lines = {
|
||||
(tonumber(LOCAL_PORT) ~= 0 and LOCAL_GROUP) and "bind [::]:" .. LOCAL_PORT .. "@lo -group " .. LOCAL_GROUP or "",
|
||||
tonumber(force_https_soa) == 1 and "force-qtype-SOA 65" or "force-qtype-SOA -,65",
|
||||
"server 114.114.114.114 -bootstrap-dns",
|
||||
is_file_nonzero("/etc/hosts") and "hosts-file /etc/hosts" or "",
|
||||
DNS_MODE == "socks" and string.format("proxy-server socks5://%s -name %s", REMOTE_PROXY_SERVER, proxy_server_name) or ""
|
||||
}
|
||||
if DNS_MODE == "socks" then
|
||||
|
||||
@@ -166,7 +166,7 @@ jobs:
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "fixed rust host build error"
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=true/--set=llvm.download-ci-llvm=false/' feeds/packages/lang/rust/Makefile
|
||||
grep -q -- '--ci false \\' feeds/packages/lang/rust/Makefile || sed -i '/x\.py \\/a \ --ci false \\' feeds/packages/lang/rust/Makefile
|
||||
|
||||
./scripts/feeds update -a
|
||||
@@ -449,7 +449,7 @@ jobs:
|
||||
rm -rf temp_resp
|
||||
|
||||
echo "fixed rust host build error"
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile
|
||||
sed -i 's/--set=llvm\.download-ci-llvm=true/--set=llvm.download-ci-llvm=false/' feeds/packages/lang/rust/Makefile
|
||||
grep -q -- '--ci false \\' feeds/packages/lang/rust/Makefile || sed -i '/x\.py \\/a \ --ci false \\' feeds/packages/lang/rust/Makefile
|
||||
|
||||
./scripts/feeds update -a
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall2
|
||||
PKG_VERSION:=26.3.1
|
||||
PKG_VERSION:=26.3.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
|
||||
@@ -43,7 +43,9 @@ function index()
|
||||
end
|
||||
entry({"admin", "services", appname, "app_update"}, cbi(appname .. "/client/app_update"), _("App Update"), 95).leaf = true
|
||||
entry({"admin", "services", appname, "rule"}, cbi(appname .. "/client/rule"), _("Rule Manage"), 96).leaf = true
|
||||
entry({"admin", "services", appname, "geoview"}, form(appname .. "/client/geoview"), _("Geo View"), 97).leaf = true
|
||||
if api.finded_com("geoview") then
|
||||
entry({"admin", "services", appname, "geoview"}, form(appname .. "/client/geoview"), _("Geo View"), 97).leaf = true
|
||||
end
|
||||
entry({"admin", "services", appname, "node_subscribe_config"}, cbi(appname .. "/client/node_subscribe_config")).leaf = true
|
||||
entry({"admin", "services", appname, "node_config"}, cbi(appname .. "/client/node_config")).leaf = true
|
||||
entry({"admin", "services", appname, "shunt_rules"}, cbi(appname .. "/client/shunt_rules")).leaf = true
|
||||
@@ -787,7 +789,7 @@ function geo_view()
|
||||
local geoip_path = geo_dir .. "/geoip.dat"
|
||||
local geo_type, file_path, cmd
|
||||
local geo_string = ""
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if action == "lookup" then
|
||||
if api.datatypes.ipaddr(value) or api.datatypes.ip6addr(value) then
|
||||
geo_type, file_path = "geoip", geoip_path
|
||||
|
||||
+28
-2
@@ -207,6 +207,12 @@ end
|
||||
o:depends({ _hide_node_option = "1", ['!reverse'] = true })
|
||||
o.template = appname .. "/cbi/nodes_listvalue"
|
||||
|
||||
current_node_id = o:formvalue(arg[1])
|
||||
if not current_node_id then
|
||||
current_node_id = m.uci:get(appname, arg[1], "node")
|
||||
end
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
|
||||
o = s:option(DummyValue, "_hide_dns_option", "")
|
||||
o.template = "passwall2/cbi/hidevalue"
|
||||
o.value = "1"
|
||||
@@ -251,9 +257,14 @@ o = s:option(ListValue, "remote_dns_protocol", translate("Remote DNS Protocol"))
|
||||
o:value("tcp", "TCP")
|
||||
o:value("doh", "DoH")
|
||||
o:value("udp", "UDP")
|
||||
if current_node.type == "sing-box" then
|
||||
o:value("tls", "TLS(DoT)")
|
||||
o:value("quic", "QUIC(DoQ)")
|
||||
o:value("http3", "HTTP3(DoH3)")
|
||||
end
|
||||
o:depends({ _hide_dns_option = "1", ['!reverse'] = true })
|
||||
|
||||
---- DNS Forward
|
||||
---- DNS over TCP or UDP or TLS (DoT) or QUIC (DoQ)
|
||||
o = s:option(Value, "remote_dns", translate("Remote DNS"))
|
||||
o.datatype = "or(ipaddr,ipaddrport)"
|
||||
o.default = "1.1.1.1"
|
||||
@@ -267,8 +278,10 @@ o:value("208.67.220.220", "208.67.220.220 (OpenDNS)")
|
||||
o:value("208.67.222.222", "208.67.222.222 (OpenDNS)")
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
---- DoH
|
||||
---- DNS over HTTP (DoH) or DNS over HTTP3(DoH3)
|
||||
o = s:option(Value, "remote_dns_doh", translate("Remote DNS DoH"))
|
||||
o:value("https://1.1.1.1/dns-query", "CloudFlare")
|
||||
o:value("https://1.1.1.2/dns-query", "CloudFlare-Security")
|
||||
@@ -283,6 +296,7 @@ o:value("https://doh.libredns.gr/ads,116.202.176.26", "LibreDNS (No Ads)")
|
||||
o.default = "https://1.1.1.1/dns-query"
|
||||
o.validate = doh_validate
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
|
||||
o = s:option(Value, "remote_dns_client_ip", translate("Remote DNS EDNS Client Subnet"))
|
||||
o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "<br />" ..
|
||||
@@ -291,6 +305,9 @@ o.datatype = "ipaddr"
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
o = s:option(ListValue, "remote_dns_detour", translate("Remote DNS Outbound"))
|
||||
o.default = "remote"
|
||||
@@ -299,6 +316,9 @@ o:value("direct", translate("Direct"))
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy."))
|
||||
o.default = "0"
|
||||
@@ -312,6 +332,9 @@ o:value("UseIPv6")
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
o = s:option(ListValue, "dns_hosts_mode", translate("Domain Override"))
|
||||
o:value("default", translate("Use global config"))
|
||||
@@ -342,6 +365,9 @@ for k, v in pairs(nodes_table) do
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "tcp" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "doh" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "udp" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "http3" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "quic" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "tls" })
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -90,11 +90,12 @@ o.template = appname .. "/cbi/nodes_listvalue"
|
||||
o:value("", translate("Close"))
|
||||
o.group = {""}
|
||||
|
||||
current_node_id = m.uci:get(appname, global_cfgid, "node")
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
|
||||
-- Shunt Start
|
||||
if (has_singbox or has_xray) and #nodes_table > 0 then
|
||||
if #normal_list > 0 then
|
||||
current_node_id = m.uci:get(appname, global_cfgid, "node")
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
if current_node.protocol == "_shunt" then
|
||||
local shunt_lua = loadfile("/usr/lib/lua/luci/model/cbi/passwall2/client/include/shunt_options.lua")
|
||||
setfenv(shunt_lua, getfenv(1))(m, s, {
|
||||
@@ -177,8 +178,13 @@ o = s:taboption("DNS", ListValue, "remote_dns_protocol", translate("Remote DNS P
|
||||
o:value("tcp", "TCP")
|
||||
o:value("doh", "DoH")
|
||||
o:value("udp", "UDP")
|
||||
if current_node.type == "sing-box" then
|
||||
o:value("tls", "TLS(DoT)")
|
||||
o:value("quic", "QUIC(DoQ)")
|
||||
o:value("http3", "HTTP3(DoH3)")
|
||||
end
|
||||
|
||||
---- DNS Forward
|
||||
---- DNS over TCP or UDP or TLS (DoT) or QUIC (DoQ)
|
||||
o = s:taboption("DNS", Value, "remote_dns", translate("Remote DNS"))
|
||||
o.datatype = "or(ipaddr,ipaddrport)"
|
||||
o.default = "1.1.1.1"
|
||||
@@ -192,8 +198,10 @@ o:value("208.67.220.220", "208.67.220.220 (OpenDNS)")
|
||||
o:value("208.67.222.222", "208.67.222.222 (OpenDNS)")
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
---- DoH
|
||||
---- DNS over HTTP (DoH) or DNS over HTTP3(DoH3)
|
||||
o = s:taboption("DNS", Value, "remote_dns_doh", translate("Remote DNS DoH"))
|
||||
o.default = "https://1.1.1.1/dns-query"
|
||||
o:value("https://1.1.1.1/dns-query", "CloudFlare")
|
||||
@@ -208,6 +216,7 @@ o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "LibreDNS")
|
||||
o:value("https://doh.libredns.gr/ads,116.202.176.26", "LibreDNS (No Ads)")
|
||||
o.validate = doh_validate
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
|
||||
o = s:taboption("DNS", Value, "remote_dns_client_ip", translate("Remote DNS EDNS Client Subnet"))
|
||||
o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "<br />" ..
|
||||
|
||||
@@ -47,8 +47,8 @@ function geo_convert_srs(var)
|
||||
local prefix = var["prefix"]
|
||||
local rule_name = var["rule_name"]
|
||||
local output_srs_file = GEO_VAR.TO_SRS_PATH .. prefix .. "-" .. rule_name .. ".srs"
|
||||
if not fs.access(output_srs_file) then
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if not fs.access(output_srs_file) and bin then
|
||||
local cmd = string.format("%q -type %q -action convert -input %q -list %q -output %q -lowmem=true",
|
||||
bin, prefix, geo_path, rule_name, output_srs_file)
|
||||
sys.call(cmd)
|
||||
@@ -928,12 +928,15 @@ function gen_config(var)
|
||||
local direct_nftset = var["direct_nftset"]
|
||||
local remote_dns_udp_server = var["remote_dns_udp_server"]
|
||||
local remote_dns_udp_port = var["remote_dns_udp_port"]
|
||||
local remote_dns_quic = var["remote_dns_quic"]
|
||||
local remote_dns_tcp_server = var["remote_dns_tcp_server"]
|
||||
local remote_dns_tcp_port = var["remote_dns_tcp_port"]
|
||||
local remote_dns_tls = var["remote_dns_tls"]
|
||||
local remote_dns_doh_url = var["remote_dns_doh_url"]
|
||||
local remote_dns_doh_host = var["remote_dns_doh_host"]
|
||||
local remote_dns_doh_ip = var["remote_dns_doh_ip"]
|
||||
local remote_dns_doh_port = var["remote_dns_doh_port"]
|
||||
local remote_dns_http3 = var["remote_dns_http3"]
|
||||
local remote_dns_detour = var["remote_dns_detour"]
|
||||
local remote_dns_query_strategy = var["remote_dns_query_strategy"]
|
||||
local remote_dns_fake = var["remote_dns_fake"]
|
||||
@@ -1657,9 +1660,17 @@ function gen_config(var)
|
||||
table.insert(domains, host)
|
||||
end
|
||||
end)
|
||||
if remote_dns_doh_ip and remote_dns_doh_host ~= remote_dns_doh_ip and not api.is_ip(remote_dns_doh_host) then
|
||||
hosts_server.predefined[remote_dns_doh_host] = remote_dns_doh_ip
|
||||
table.insert(domains, remote_dns_doh_host)
|
||||
remote_server_domain_resolver = "hosts"
|
||||
end
|
||||
if next(hosts_server.predefined) then
|
||||
table.insert(dns.servers, hosts_server)
|
||||
table.insert(dns.rules, {
|
||||
query_type = {
|
||||
"A", "AAAA"
|
||||
},
|
||||
domain = domains,
|
||||
server = "hosts"
|
||||
})
|
||||
@@ -1679,6 +1690,10 @@ function gen_config(var)
|
||||
detour = COMMON.default_outbound_tag,
|
||||
}
|
||||
|
||||
if remote_server_domain_resolver then
|
||||
remote_server.domain_resolver = remote_server_domain_resolver
|
||||
end
|
||||
|
||||
if remote_dns_detour == "direct" then
|
||||
remote_server.detour = "direct"
|
||||
end
|
||||
@@ -1688,15 +1703,26 @@ function gen_config(var)
|
||||
remote_server.type = "udp"
|
||||
remote_server.server = remote_dns_udp_server
|
||||
remote_server.server_port = server_port
|
||||
if remote_dns_quic then
|
||||
remote_server.type = "quic"
|
||||
remote_server.server_port = 853
|
||||
end
|
||||
elseif remote_dns_tcp_server then
|
||||
local server_port = tonumber(remote_dns_tcp_port) or 53
|
||||
remote_server.type = "tcp"
|
||||
remote_server.server = remote_dns_tcp_server
|
||||
remote_server.server_port = server_port
|
||||
if remote_dns_tls then
|
||||
remote_server.type = "tls"
|
||||
remote_server.server_port = 853
|
||||
end
|
||||
elseif remote_dns_doh_url then
|
||||
local _a = api.parseURL(remote_dns_doh_url)
|
||||
if _a then
|
||||
remote_server.type = "https"
|
||||
if remote_dns_http3 then
|
||||
remote_server.type = "h3"
|
||||
end
|
||||
remote_server.server = _a.hostname
|
||||
if _a.port then
|
||||
remote_server.server_port = _a.port
|
||||
|
||||
+25
-26
@@ -538,35 +538,34 @@ table td, .table .td {
|
||||
}
|
||||
|
||||
function urltest_node(cbi_id, dom) {
|
||||
if (cbi_id != null) {
|
||||
dom.onclick = null
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
if(x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
dom.outerHTML = "<font style='color:red'><%:Timeout%></font>";
|
||||
} else {
|
||||
var color = "red";
|
||||
var use_time = result.use_time;
|
||||
use_time = parseInt(use_time) + 1;
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
} else {
|
||||
color = "red";
|
||||
}
|
||||
dom.outerHTML = "<font style='color:" + color + "'>" + use_time + " ms" + "</font>";
|
||||
}
|
||||
if (dom.dataset.busy == "1" || !cbi_id) return;
|
||||
dom.dataset.busy = "1";
|
||||
dom.style.color = "";
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
let color = "red";
|
||||
let text = "<%:Error%>";
|
||||
if (x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
text = "<%:Timeout%>";
|
||||
} else {
|
||||
dom.outerHTML = "<font style='color:red'><%:Error%></font>";
|
||||
let use_time = parseInt(result.use_time);
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
}
|
||||
text = use_time + " ms";
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
dom.innerText = text;
|
||||
dom.style.color = color;
|
||||
dom.dataset.busy = "0";
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function ping_node(cbi_id, dom, type) {
|
||||
|
||||
@@ -330,21 +330,26 @@ run_singbox() {
|
||||
json_add_string "direct_dns_query_strategy" "${direct_dns_query_strategy}"
|
||||
|
||||
case "$remote_dns_protocol" in
|
||||
udp)
|
||||
udp|\
|
||||
quic)
|
||||
local _dns=$(get_first_dns remote_dns_udp_server 53 | sed 's/#/:/g')
|
||||
local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}')
|
||||
local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}')
|
||||
json_add_string "remote_dns_udp_port" "${_dns_port}"
|
||||
json_add_string "remote_dns_udp_server" "${_dns_address}"
|
||||
[ "$remote_dns_protocol" == "quic" ] && json_add_string "remote_dns_quic" "1"
|
||||
;;
|
||||
tcp)
|
||||
tcp|\
|
||||
tls)
|
||||
local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g')
|
||||
local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}')
|
||||
local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}')
|
||||
json_add_string "remote_dns_tcp_port" "${_dns_port}"
|
||||
json_add_string "remote_dns_tcp_server" "${_dns_address}"
|
||||
[ "$remote_dns_protocol" == "tls" ] && json_add_string "remote_dns_tls" "1"
|
||||
;;
|
||||
doh)
|
||||
doh|\
|
||||
http3)
|
||||
local _doh_url=$(echo $remote_dns_doh | awk -F ',' '{print $1}')
|
||||
local _doh_host_port=$(lua_api "get_domain_from_url(\"${_doh_url}\")")
|
||||
#local _doh_host_port=$(echo $_doh_url | sed "s/https:\/\///g" | awk -F '/' '{print $1}')
|
||||
@@ -358,6 +363,7 @@ run_singbox() {
|
||||
json_add_string "remote_dns_doh_port" "${_doh_port}"
|
||||
json_add_string "remote_dns_doh_url" "${_doh_url}"
|
||||
json_add_string "remote_dns_doh_host" "${_doh_host}"
|
||||
[ "$remote_dns_protocol" == "http3" ] && json_add_string "remote_dns_http3" "1"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -643,15 +649,18 @@ run_global() {
|
||||
[ -n "$REMOTE_DNS_PROTOCOL" ] && {
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_protocol=${REMOTE_DNS_PROTOCOL} remote_dns_detour=${REMOTE_DNS_DETOUR}"
|
||||
case "$REMOTE_DNS_PROTOCOL" in
|
||||
udp*)
|
||||
udp|\
|
||||
quic)
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_udp_server=${REMOTE_DNS}"
|
||||
dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")"
|
||||
;;
|
||||
tcp)
|
||||
tcp|\
|
||||
tls)
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_tcp_server=${REMOTE_DNS}"
|
||||
dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")"
|
||||
;;
|
||||
doh)
|
||||
doh|\
|
||||
http3)
|
||||
REMOTE_DNS_DOH=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query")
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_doh=${REMOTE_DNS_DOH}"
|
||||
dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS_DOH}")"
|
||||
@@ -1071,7 +1080,12 @@ acl_app() {
|
||||
direct_dns_query_strategy=${direct_dns_query_strategy:-UseIP}
|
||||
remote_dns_protocol=${remote_dns_protocol:-tcp}
|
||||
remote_dns=${remote_dns:-1.1.1.1}
|
||||
[ "$remote_dns_protocol" = "doh" ] && remote_dns=${remote_dns_doh:-https://1.1.1.1/dns-query}
|
||||
case "$remote_dns_protocol" in
|
||||
doh|\
|
||||
http3)
|
||||
remote_dns=${remote_dns_doh:-https://1.1.1.1/dns-query}
|
||||
;;
|
||||
esac
|
||||
remote_dns_detour=${remote_dns_detour:-remote}
|
||||
remote_fakedns=${remote_fakedns:-0}
|
||||
remote_dns_query_strategy=${remote_dns_query_strategy:-UseIPv4}
|
||||
|
||||
Vendored
+1
-1
@@ -6,7 +6,7 @@
|
||||
":disableRateLimiting"
|
||||
],
|
||||
"baseBranches": [
|
||||
"dev-next"
|
||||
"unstable"
|
||||
],
|
||||
"golang": {
|
||||
"enabled": false
|
||||
|
||||
Vendored
+12
-11
@@ -25,8 +25,9 @@ on:
|
||||
- publish-android
|
||||
push:
|
||||
branches:
|
||||
- main-next
|
||||
- dev-next
|
||||
- stable
|
||||
- testing
|
||||
- unstable
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}-${{ inputs.build }}
|
||||
@@ -591,7 +592,7 @@ jobs:
|
||||
path: "dist"
|
||||
build_android:
|
||||
name: Build Android
|
||||
if: github.event_name != 'workflow_dispatch' || inputs.build == 'All' || inputs.build == 'Android'
|
||||
if: (github.event_name != 'workflow_dispatch' || inputs.build == 'All' || inputs.build == 'Android') && github.ref != 'refs/heads/oldstable'
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- calculate_version
|
||||
@@ -627,12 +628,12 @@ jobs:
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
- name: Checkout main branch
|
||||
if: github.ref == 'refs/heads/main-next' && github.event_name != 'workflow_dispatch'
|
||||
if: github.ref == 'refs/heads/stable' && github.event_name != 'workflow_dispatch'
|
||||
run: |-
|
||||
cd clients/android
|
||||
git checkout main
|
||||
- name: Checkout dev branch
|
||||
if: github.ref == 'refs/heads/dev-next'
|
||||
if: github.ref == 'refs/heads/testing'
|
||||
run: |-
|
||||
cd clients/android
|
||||
git checkout dev
|
||||
@@ -681,7 +682,7 @@ jobs:
|
||||
path: 'dist'
|
||||
publish_android:
|
||||
name: Publish Android
|
||||
if: github.event_name == 'workflow_dispatch' && inputs.build == 'publish-android'
|
||||
if: github.event_name == 'workflow_dispatch' && inputs.build == 'publish-android' && github.ref != 'refs/heads/oldstable'
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- calculate_version
|
||||
@@ -717,12 +718,12 @@ jobs:
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
- name: Checkout main branch
|
||||
if: github.ref == 'refs/heads/main-next' && github.event_name != 'workflow_dispatch'
|
||||
if: github.ref == 'refs/heads/stable' && github.event_name != 'workflow_dispatch'
|
||||
run: |-
|
||||
cd clients/android
|
||||
git checkout main
|
||||
- name: Checkout dev branch
|
||||
if: github.ref == 'refs/heads/dev-next'
|
||||
if: github.ref == 'refs/heads/testing'
|
||||
run: |-
|
||||
cd clients/android
|
||||
git checkout dev
|
||||
@@ -801,12 +802,12 @@ jobs:
|
||||
git tag v${{ needs.calculate_version.outputs.version }} -f
|
||||
echo "VERSION=${{ needs.calculate_version.outputs.version }}" >> "$GITHUB_ENV"
|
||||
- name: Checkout main branch
|
||||
if: matrix.if && github.ref == 'refs/heads/main-next' && github.event_name != 'workflow_dispatch'
|
||||
if: matrix.if && github.ref == 'refs/heads/stable' && github.event_name != 'workflow_dispatch'
|
||||
run: |-
|
||||
cd clients/apple
|
||||
git checkout main
|
||||
- name: Checkout dev branch
|
||||
if: matrix.if && github.ref == 'refs/heads/dev-next'
|
||||
if: matrix.if && github.ref == 'refs/heads/testing'
|
||||
run: |-
|
||||
cd clients/apple
|
||||
git checkout dev
|
||||
@@ -892,7 +893,7 @@ jobs:
|
||||
-authenticationKeyID $ASC_KEY_ID \
|
||||
-authenticationKeyIssuerID $ASC_KEY_ISSUER_ID
|
||||
- name: Publish to TestFlight
|
||||
if: matrix.if && matrix.name != 'macOS-standalone' && github.event_name == 'workflow_dispatch' && github.ref =='refs/heads/dev-next'
|
||||
if: matrix.if && matrix.name != 'macOS-standalone' && github.event_name == 'workflow_dispatch' && github.ref =='refs/heads/testing'
|
||||
run: |-
|
||||
go run -v ./cmd/internal/app_store_connect publish_testflight ${{ matrix.platform }}
|
||||
- name: Build image
|
||||
|
||||
+3
-2
@@ -3,8 +3,8 @@ name: Publish Docker Images
|
||||
on:
|
||||
#push:
|
||||
# branches:
|
||||
# - main-next
|
||||
# - dev-next
|
||||
# - stable
|
||||
# - testing
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
@@ -19,6 +19,7 @@ env:
|
||||
jobs:
|
||||
build_binary:
|
||||
name: Build binary
|
||||
if: github.event_name != 'release' || github.event.release.target_commitish != 'oldstable'
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
|
||||
Vendored
+8
-6
@@ -3,18 +3,20 @@ name: Lint
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- stable-next
|
||||
- main-next
|
||||
- dev-next
|
||||
- oldstable
|
||||
- stable
|
||||
- testing
|
||||
- unstable
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- '.github/**'
|
||||
- '!.github/workflows/lint.yml'
|
||||
pull_request:
|
||||
branches:
|
||||
- stable-next
|
||||
- main-next
|
||||
- dev-next
|
||||
- oldstable
|
||||
- stable
|
||||
- testing
|
||||
- unstable
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
Vendored
+3
-2
@@ -3,8 +3,8 @@ name: Build Linux Packages
|
||||
on:
|
||||
#push:
|
||||
# branches:
|
||||
# - main-next
|
||||
# - dev-next
|
||||
# - stable
|
||||
# - testing
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
@@ -23,6 +23,7 @@ on:
|
||||
jobs:
|
||||
calculate_version:
|
||||
name: Calculate version
|
||||
if: github.event_name != 'release' || github.event.release.target_commitish != 'oldstable'
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.outputs.outputs.version }}
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ require (
|
||||
github.com/sagernet/sing-shadowsocks v0.2.8
|
||||
github.com/sagernet/sing-shadowsocks2 v0.2.1
|
||||
github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11
|
||||
github.com/sagernet/sing-tun v0.8.2-0.20260303130003-70e990468805
|
||||
github.com/sagernet/sing-tun v0.8.3-0.20260305131414-5083da5745ed
|
||||
github.com/sagernet/sing-vmess v0.2.8-0.20250909125414-3aed155119a1
|
||||
github.com/sagernet/smux v1.5.50-sing-box-mod.1
|
||||
github.com/sagernet/tailscale v1.92.4-sing-box-1.13-mod.6.0.20260303140313-3bcf9a4b9349
|
||||
|
||||
+2
-2
@@ -248,8 +248,8 @@ github.com/sagernet/sing-shadowsocks2 v0.2.1 h1:dWV9OXCeFPuYGHb6IRqlSptVnSzOelnq
|
||||
github.com/sagernet/sing-shadowsocks2 v0.2.1/go.mod h1:RnXS0lExcDAovvDeniJ4IKa2IuChrdipolPYWBv9hWQ=
|
||||
github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11 h1:tK+75l64tm9WvEFrYRE1t0YxoFdWQqw/h7Uhzj0vJ+w=
|
||||
github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11/go.mod h1:sWqKnGlMipCHaGsw1sTTlimyUpgzP4WP3pjhCsYt9oA=
|
||||
github.com/sagernet/sing-tun v0.8.2-0.20260303130003-70e990468805 h1:bvzHwqq41rgm144akm6jvWKMO0HFqHuGea0RUZSCmp4=
|
||||
github.com/sagernet/sing-tun v0.8.2-0.20260303130003-70e990468805/go.mod h1:pLCo4o+LacXEzz0bhwhJkKBjLlKOGPBNOAZ97ZVZWzs=
|
||||
github.com/sagernet/sing-tun v0.8.3-0.20260305131414-5083da5745ed h1:0XZgwnEX2HgQ/0J0The6KPEAezBz5bLl18PMTRHNN9E=
|
||||
github.com/sagernet/sing-tun v0.8.3-0.20260305131414-5083da5745ed/go.mod h1:pLCo4o+LacXEzz0bhwhJkKBjLlKOGPBNOAZ97ZVZWzs=
|
||||
github.com/sagernet/sing-vmess v0.2.8-0.20250909125414-3aed155119a1 h1:aSwUNYUkVyVvdmBSufR8/nRFonwJeKSIROxHcm5br9o=
|
||||
github.com/sagernet/sing-vmess v0.2.8-0.20250909125414-3aed155119a1/go.mod h1:P11scgTxMxVVQ8dlM27yNm3Cro40mD0+gHbnqrNGDuY=
|
||||
github.com/sagernet/smux v1.5.50-sing-box-mod.1 h1:XkJcivBC9V4wBjiGXIXZ229aZCU1hzcbp6kSkkyQ478=
|
||||
|
||||
@@ -911,7 +911,7 @@ function geo_view()
|
||||
local geoip_path = geo_dir .. "/geoip.dat"
|
||||
local geo_type, file_path, cmd
|
||||
local geo_string = ""
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if action == "lookup" then
|
||||
if api.datatypes.ipaddr(value) or api.datatypes.ip6addr(value) then
|
||||
geo_type, file_path = "geoip", geoip_path
|
||||
|
||||
@@ -46,8 +46,8 @@ function geo_convert_srs(var)
|
||||
local prefix = var["prefix"]
|
||||
local rule_name = var["rule_name"]
|
||||
local output_srs_file = GEO_VAR.TO_SRS_PATH .. prefix .. "-" .. rule_name .. ".srs"
|
||||
if not fs.access(output_srs_file) then
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if not fs.access(output_srs_file) and bin then
|
||||
local cmd = string.format("%q -type %q -action convert -input %q -list %q -output %q -lowmem=true",
|
||||
bin, prefix, geo_path, rule_name, output_srs_file)
|
||||
sys.call(cmd)
|
||||
@@ -916,9 +916,10 @@ function gen_config(var)
|
||||
local direct_dns_udp_server = var["direct_dns_udp_server"]
|
||||
local direct_dns_tcp_server = var["direct_dns_tcp_server"]
|
||||
local direct_dns_query_strategy = var["direct_dns_query_strategy"]
|
||||
local remote_dns_port = var["remote_dns_port"]
|
||||
local remote_dns_udp_server = var["remote_dns_udp_server"]
|
||||
local remote_dns_udp_port = var["remote_dns_udp_port"]
|
||||
local remote_dns_tcp_server = var["remote_dns_tcp_server"]
|
||||
local remote_dns_tcp_port = var["remote_dns_tcp_port"]
|
||||
local remote_dns_doh_url = var["remote_dns_doh_url"]
|
||||
local remote_dns_doh_host = var["remote_dns_doh_host"]
|
||||
local remote_dns_client_ip = var["remote_dns_client_ip"]
|
||||
@@ -1649,10 +1650,6 @@ function gen_config(var)
|
||||
detour = default_outTag,
|
||||
}
|
||||
|
||||
if api.is_local_ip(remote_server.server) then --dns为本地ip,不走代理
|
||||
remote_server.detour = "direct"
|
||||
end
|
||||
|
||||
if remote_dns_udp_server then
|
||||
local server_port = tonumber(remote_dns_udp_port) or 53
|
||||
remote_server.type = "udp"
|
||||
@@ -1677,6 +1674,10 @@ function gen_config(var)
|
||||
end
|
||||
end
|
||||
|
||||
if api.is_local_ip(remote_server.server) then --dns为本地ip,不走代理
|
||||
remote_server.detour = "direct"
|
||||
end
|
||||
|
||||
table.insert(dns.servers, remote_server)
|
||||
|
||||
fakedns_tag = "remote_fakeip"
|
||||
|
||||
@@ -538,35 +538,34 @@ table td, .table .td {
|
||||
}
|
||||
|
||||
function urltest_node(cbi_id, dom) {
|
||||
if (cbi_id != null) {
|
||||
dom.onclick = null
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
if(x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
dom.outerHTML = "<font style='color:red'><%:Timeout%></font>";
|
||||
} else {
|
||||
var color = "red";
|
||||
var use_time = result.use_time;
|
||||
use_time = parseInt(use_time) + 1;
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
} else {
|
||||
color = "red";
|
||||
}
|
||||
dom.outerHTML = "<font style='color:" + color + "'>" + use_time + " ms" + "</font>";
|
||||
}
|
||||
if (dom.dataset.busy == "1" || !cbi_id) return;
|
||||
dom.dataset.busy = "1";
|
||||
dom.style.color = "";
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
let color = "red";
|
||||
let text = "<%:Error%>";
|
||||
if (x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
text = "<%:Timeout%>";
|
||||
} else {
|
||||
dom.outerHTML = "<font style='color:red'><%:Error%></font>";
|
||||
let use_time = parseInt(result.use_time);
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
}
|
||||
text = use_time + " ms";
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
dom.innerText = text;
|
||||
dom.style.color = color;
|
||||
dom.dataset.busy = "0";
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function ping_node(cbi_id, dom, type) {
|
||||
|
||||
@@ -170,7 +170,7 @@ run_singbox() {
|
||||
local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}')
|
||||
local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}')
|
||||
json_add_string "remote_dns_${_proto}_server" "${_dns_address}"
|
||||
json_add_string "remote_dns_port" "${_dns_port}"
|
||||
json_add_string "remote_dns_${_proto}_port" "${_dns_port}"
|
||||
;;
|
||||
doh)
|
||||
local _doh_url _doh_host _doh_port _doh_bootstrap
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
local sys = require "luci.sys"
|
||||
local api = require "luci.passwall.api"
|
||||
local appname = "passwall"
|
||||
local appname = api.appname
|
||||
|
||||
local var = api.get_args(arg)
|
||||
local FLAG = var["-FLAG"]
|
||||
@@ -96,9 +95,11 @@ local function get_geosite(list_arg, out_path)
|
||||
local geosite_path = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"
|
||||
geosite_path = geosite_path:match("^(.*)/") .. "/geosite.dat"
|
||||
if not is_file_nonzero(geosite_path) then return 1 end
|
||||
if api.is_finded("geoview") and list_arg and out_path then
|
||||
local bin = api.get_app_path("geoview")
|
||||
sys.exec(bin .. " -type geosite -append=true -input " .. geosite_path .. " -list '" .. list_arg .. "' -output " .. out_path)
|
||||
local bin = api.finded_com("geoview")
|
||||
if bin and list_arg and out_path then
|
||||
local cmd = string.format("%q -type geosite -append=true -input %q -list %q -output %q -lowmem=true",
|
||||
bin, geosite_path, list_arg, out_path)
|
||||
sys.call(cmd)
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
require "luci.sys"
|
||||
local api = require "luci.passwall.api"
|
||||
local appname = "passwall"
|
||||
local appname = api.appname
|
||||
|
||||
local var = api.get_args(arg)
|
||||
local FLAG = var["-FLAG"]
|
||||
@@ -103,9 +102,11 @@ local function get_geosite(list_arg, out_path)
|
||||
local geosite_path = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"
|
||||
geosite_path = geosite_path:match("^(.*)/") .. "/geosite.dat"
|
||||
if not is_file_nonzero(geosite_path) then return 1 end
|
||||
if api.is_finded("geoview") and list_arg and out_path then
|
||||
local bin = api.get_app_path("geoview")
|
||||
sys.exec(bin .. " -type geosite -append=true -input " .. geosite_path .. " -list '" .. list_arg .. "' -output " .. out_path)
|
||||
local bin = api.finded_com("geoview")
|
||||
if bin and list_arg and out_path then
|
||||
local cmd = string.format("%q -type geosite -append=true -input %q -list %q -output %q -lowmem=true",
|
||||
bin, geosite_path, list_arg, out_path)
|
||||
sys.call(cmd)
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
@@ -194,6 +195,7 @@ config_lines = {
|
||||
(tonumber(LOCAL_PORT) ~= 0 and LOCAL_GROUP) and "bind [::]:" .. LOCAL_PORT .. "@lo -group " .. LOCAL_GROUP or "",
|
||||
tonumber(force_https_soa) == 1 and "force-qtype-SOA 65" or "force-qtype-SOA -,65",
|
||||
"server 114.114.114.114 -bootstrap-dns",
|
||||
is_file_nonzero("/etc/hosts") and "hosts-file /etc/hosts" or "",
|
||||
DNS_MODE == "socks" and string.format("proxy-server socks5://%s -name %s", REMOTE_PROXY_SERVER, proxy_server_name) or ""
|
||||
}
|
||||
if DNS_MODE == "socks" then
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall2
|
||||
PKG_VERSION:=26.3.1
|
||||
PKG_VERSION:=26.3.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
|
||||
@@ -43,7 +43,9 @@ function index()
|
||||
end
|
||||
entry({"admin", "services", appname, "app_update"}, cbi(appname .. "/client/app_update"), _("App Update"), 95).leaf = true
|
||||
entry({"admin", "services", appname, "rule"}, cbi(appname .. "/client/rule"), _("Rule Manage"), 96).leaf = true
|
||||
entry({"admin", "services", appname, "geoview"}, form(appname .. "/client/geoview"), _("Geo View"), 97).leaf = true
|
||||
if api.finded_com("geoview") then
|
||||
entry({"admin", "services", appname, "geoview"}, form(appname .. "/client/geoview"), _("Geo View"), 97).leaf = true
|
||||
end
|
||||
entry({"admin", "services", appname, "node_subscribe_config"}, cbi(appname .. "/client/node_subscribe_config")).leaf = true
|
||||
entry({"admin", "services", appname, "node_config"}, cbi(appname .. "/client/node_config")).leaf = true
|
||||
entry({"admin", "services", appname, "shunt_rules"}, cbi(appname .. "/client/shunt_rules")).leaf = true
|
||||
@@ -787,7 +789,7 @@ function geo_view()
|
||||
local geoip_path = geo_dir .. "/geoip.dat"
|
||||
local geo_type, file_path, cmd
|
||||
local geo_string = ""
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if action == "lookup" then
|
||||
if api.datatypes.ipaddr(value) or api.datatypes.ip6addr(value) then
|
||||
geo_type, file_path = "geoip", geoip_path
|
||||
|
||||
@@ -207,6 +207,12 @@ end
|
||||
o:depends({ _hide_node_option = "1", ['!reverse'] = true })
|
||||
o.template = appname .. "/cbi/nodes_listvalue"
|
||||
|
||||
current_node_id = o:formvalue(arg[1])
|
||||
if not current_node_id then
|
||||
current_node_id = m.uci:get(appname, arg[1], "node")
|
||||
end
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
|
||||
o = s:option(DummyValue, "_hide_dns_option", "")
|
||||
o.template = "passwall2/cbi/hidevalue"
|
||||
o.value = "1"
|
||||
@@ -251,9 +257,14 @@ o = s:option(ListValue, "remote_dns_protocol", translate("Remote DNS Protocol"))
|
||||
o:value("tcp", "TCP")
|
||||
o:value("doh", "DoH")
|
||||
o:value("udp", "UDP")
|
||||
if current_node.type == "sing-box" then
|
||||
o:value("tls", "TLS(DoT)")
|
||||
o:value("quic", "QUIC(DoQ)")
|
||||
o:value("http3", "HTTP3(DoH3)")
|
||||
end
|
||||
o:depends({ _hide_dns_option = "1", ['!reverse'] = true })
|
||||
|
||||
---- DNS Forward
|
||||
---- DNS over TCP or UDP or TLS (DoT) or QUIC (DoQ)
|
||||
o = s:option(Value, "remote_dns", translate("Remote DNS"))
|
||||
o.datatype = "or(ipaddr,ipaddrport)"
|
||||
o.default = "1.1.1.1"
|
||||
@@ -267,8 +278,10 @@ o:value("208.67.220.220", "208.67.220.220 (OpenDNS)")
|
||||
o:value("208.67.222.222", "208.67.222.222 (OpenDNS)")
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
---- DoH
|
||||
---- DNS over HTTP (DoH) or DNS over HTTP3(DoH3)
|
||||
o = s:option(Value, "remote_dns_doh", translate("Remote DNS DoH"))
|
||||
o:value("https://1.1.1.1/dns-query", "CloudFlare")
|
||||
o:value("https://1.1.1.2/dns-query", "CloudFlare-Security")
|
||||
@@ -283,6 +296,7 @@ o:value("https://doh.libredns.gr/ads,116.202.176.26", "LibreDNS (No Ads)")
|
||||
o.default = "https://1.1.1.1/dns-query"
|
||||
o.validate = doh_validate
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
|
||||
o = s:option(Value, "remote_dns_client_ip", translate("Remote DNS EDNS Client Subnet"))
|
||||
o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "<br />" ..
|
||||
@@ -291,6 +305,9 @@ o.datatype = "ipaddr"
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
o = s:option(ListValue, "remote_dns_detour", translate("Remote DNS Outbound"))
|
||||
o.default = "remote"
|
||||
@@ -299,6 +316,9 @@ o:value("direct", translate("Direct"))
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy."))
|
||||
o.default = "0"
|
||||
@@ -312,6 +332,9 @@ o:value("UseIPv6")
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
o = s:option(ListValue, "dns_hosts_mode", translate("Domain Override"))
|
||||
o:value("default", translate("Use global config"))
|
||||
@@ -342,6 +365,9 @@ for k, v in pairs(nodes_table) do
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "tcp" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "doh" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "udp" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "http3" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "quic" })
|
||||
s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "tls" })
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -90,11 +90,12 @@ o.template = appname .. "/cbi/nodes_listvalue"
|
||||
o:value("", translate("Close"))
|
||||
o.group = {""}
|
||||
|
||||
current_node_id = m.uci:get(appname, global_cfgid, "node")
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
|
||||
-- Shunt Start
|
||||
if (has_singbox or has_xray) and #nodes_table > 0 then
|
||||
if #normal_list > 0 then
|
||||
current_node_id = m.uci:get(appname, global_cfgid, "node")
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
if current_node.protocol == "_shunt" then
|
||||
local shunt_lua = loadfile("/usr/lib/lua/luci/model/cbi/passwall2/client/include/shunt_options.lua")
|
||||
setfenv(shunt_lua, getfenv(1))(m, s, {
|
||||
@@ -177,8 +178,13 @@ o = s:taboption("DNS", ListValue, "remote_dns_protocol", translate("Remote DNS P
|
||||
o:value("tcp", "TCP")
|
||||
o:value("doh", "DoH")
|
||||
o:value("udp", "UDP")
|
||||
if current_node.type == "sing-box" then
|
||||
o:value("tls", "TLS(DoT)")
|
||||
o:value("quic", "QUIC(DoQ)")
|
||||
o:value("http3", "HTTP3(DoH3)")
|
||||
end
|
||||
|
||||
---- DNS Forward
|
||||
---- DNS over TCP or UDP or TLS (DoT) or QUIC (DoQ)
|
||||
o = s:taboption("DNS", Value, "remote_dns", translate("Remote DNS"))
|
||||
o.datatype = "or(ipaddr,ipaddrport)"
|
||||
o.default = "1.1.1.1"
|
||||
@@ -192,8 +198,10 @@ o:value("208.67.220.220", "208.67.220.220 (OpenDNS)")
|
||||
o:value("208.67.222.222", "208.67.222.222 (OpenDNS)")
|
||||
o:depends("remote_dns_protocol", "tcp")
|
||||
o:depends("remote_dns_protocol", "udp")
|
||||
o:depends("remote_dns_protocol", "quic")
|
||||
o:depends("remote_dns_protocol", "tls")
|
||||
|
||||
---- DoH
|
||||
---- DNS over HTTP (DoH) or DNS over HTTP3(DoH3)
|
||||
o = s:taboption("DNS", Value, "remote_dns_doh", translate("Remote DNS DoH"))
|
||||
o.default = "https://1.1.1.1/dns-query"
|
||||
o:value("https://1.1.1.1/dns-query", "CloudFlare")
|
||||
@@ -208,6 +216,7 @@ o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "LibreDNS")
|
||||
o:value("https://doh.libredns.gr/ads,116.202.176.26", "LibreDNS (No Ads)")
|
||||
o.validate = doh_validate
|
||||
o:depends("remote_dns_protocol", "doh")
|
||||
o:depends("remote_dns_protocol", "http3")
|
||||
|
||||
o = s:taboption("DNS", Value, "remote_dns_client_ip", translate("Remote DNS EDNS Client Subnet"))
|
||||
o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "<br />" ..
|
||||
|
||||
@@ -47,8 +47,8 @@ function geo_convert_srs(var)
|
||||
local prefix = var["prefix"]
|
||||
local rule_name = var["rule_name"]
|
||||
local output_srs_file = GEO_VAR.TO_SRS_PATH .. prefix .. "-" .. rule_name .. ".srs"
|
||||
if not fs.access(output_srs_file) then
|
||||
local bin = api.get_app_path("geoview")
|
||||
local bin = api.finded_com("geoview")
|
||||
if not fs.access(output_srs_file) and bin then
|
||||
local cmd = string.format("%q -type %q -action convert -input %q -list %q -output %q -lowmem=true",
|
||||
bin, prefix, geo_path, rule_name, output_srs_file)
|
||||
sys.call(cmd)
|
||||
@@ -928,12 +928,15 @@ function gen_config(var)
|
||||
local direct_nftset = var["direct_nftset"]
|
||||
local remote_dns_udp_server = var["remote_dns_udp_server"]
|
||||
local remote_dns_udp_port = var["remote_dns_udp_port"]
|
||||
local remote_dns_quic = var["remote_dns_quic"]
|
||||
local remote_dns_tcp_server = var["remote_dns_tcp_server"]
|
||||
local remote_dns_tcp_port = var["remote_dns_tcp_port"]
|
||||
local remote_dns_tls = var["remote_dns_tls"]
|
||||
local remote_dns_doh_url = var["remote_dns_doh_url"]
|
||||
local remote_dns_doh_host = var["remote_dns_doh_host"]
|
||||
local remote_dns_doh_ip = var["remote_dns_doh_ip"]
|
||||
local remote_dns_doh_port = var["remote_dns_doh_port"]
|
||||
local remote_dns_http3 = var["remote_dns_http3"]
|
||||
local remote_dns_detour = var["remote_dns_detour"]
|
||||
local remote_dns_query_strategy = var["remote_dns_query_strategy"]
|
||||
local remote_dns_fake = var["remote_dns_fake"]
|
||||
@@ -1657,9 +1660,17 @@ function gen_config(var)
|
||||
table.insert(domains, host)
|
||||
end
|
||||
end)
|
||||
if remote_dns_doh_ip and remote_dns_doh_host ~= remote_dns_doh_ip and not api.is_ip(remote_dns_doh_host) then
|
||||
hosts_server.predefined[remote_dns_doh_host] = remote_dns_doh_ip
|
||||
table.insert(domains, remote_dns_doh_host)
|
||||
remote_server_domain_resolver = "hosts"
|
||||
end
|
||||
if next(hosts_server.predefined) then
|
||||
table.insert(dns.servers, hosts_server)
|
||||
table.insert(dns.rules, {
|
||||
query_type = {
|
||||
"A", "AAAA"
|
||||
},
|
||||
domain = domains,
|
||||
server = "hosts"
|
||||
})
|
||||
@@ -1679,6 +1690,10 @@ function gen_config(var)
|
||||
detour = COMMON.default_outbound_tag,
|
||||
}
|
||||
|
||||
if remote_server_domain_resolver then
|
||||
remote_server.domain_resolver = remote_server_domain_resolver
|
||||
end
|
||||
|
||||
if remote_dns_detour == "direct" then
|
||||
remote_server.detour = "direct"
|
||||
end
|
||||
@@ -1688,15 +1703,26 @@ function gen_config(var)
|
||||
remote_server.type = "udp"
|
||||
remote_server.server = remote_dns_udp_server
|
||||
remote_server.server_port = server_port
|
||||
if remote_dns_quic then
|
||||
remote_server.type = "quic"
|
||||
remote_server.server_port = 853
|
||||
end
|
||||
elseif remote_dns_tcp_server then
|
||||
local server_port = tonumber(remote_dns_tcp_port) or 53
|
||||
remote_server.type = "tcp"
|
||||
remote_server.server = remote_dns_tcp_server
|
||||
remote_server.server_port = server_port
|
||||
if remote_dns_tls then
|
||||
remote_server.type = "tls"
|
||||
remote_server.server_port = 853
|
||||
end
|
||||
elseif remote_dns_doh_url then
|
||||
local _a = api.parseURL(remote_dns_doh_url)
|
||||
if _a then
|
||||
remote_server.type = "https"
|
||||
if remote_dns_http3 then
|
||||
remote_server.type = "h3"
|
||||
end
|
||||
remote_server.server = _a.hostname
|
||||
if _a.port then
|
||||
remote_server.server_port = _a.port
|
||||
|
||||
@@ -538,35 +538,34 @@ table td, .table .td {
|
||||
}
|
||||
|
||||
function urltest_node(cbi_id, dom) {
|
||||
if (cbi_id != null) {
|
||||
dom.onclick = null
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
if(x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
dom.outerHTML = "<font style='color:red'><%:Timeout%></font>";
|
||||
} else {
|
||||
var color = "red";
|
||||
var use_time = result.use_time;
|
||||
use_time = parseInt(use_time) + 1;
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
} else {
|
||||
color = "red";
|
||||
}
|
||||
dom.outerHTML = "<font style='color:" + color + "'>" + use_time + " ms" + "</font>";
|
||||
}
|
||||
if (dom.dataset.busy == "1" || !cbi_id) return;
|
||||
dom.dataset.busy = "1";
|
||||
dom.style.color = "";
|
||||
dom.innerText = "<%:Check...%>";
|
||||
XHR.get('<%=api.url("urltest_node")%>', {
|
||||
id: cbi_id
|
||||
},
|
||||
function(x, result) {
|
||||
let color = "red";
|
||||
let text = "<%:Error%>";
|
||||
if (x && x.status == 200) {
|
||||
if (result.use_time == null || result.use_time.trim() == "") {
|
||||
text = "<%:Timeout%>";
|
||||
} else {
|
||||
dom.outerHTML = "<font style='color:red'><%:Error%></font>";
|
||||
let use_time = parseInt(result.use_time);
|
||||
if (use_time < 1000) {
|
||||
color = "green";
|
||||
} else if (use_time < 2000) {
|
||||
color = "#fb9a05";
|
||||
}
|
||||
text = use_time + " ms";
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
dom.innerText = text;
|
||||
dom.style.color = color;
|
||||
dom.dataset.busy = "0";
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function ping_node(cbi_id, dom, type) {
|
||||
|
||||
@@ -330,21 +330,26 @@ run_singbox() {
|
||||
json_add_string "direct_dns_query_strategy" "${direct_dns_query_strategy}"
|
||||
|
||||
case "$remote_dns_protocol" in
|
||||
udp)
|
||||
udp|\
|
||||
quic)
|
||||
local _dns=$(get_first_dns remote_dns_udp_server 53 | sed 's/#/:/g')
|
||||
local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}')
|
||||
local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}')
|
||||
json_add_string "remote_dns_udp_port" "${_dns_port}"
|
||||
json_add_string "remote_dns_udp_server" "${_dns_address}"
|
||||
[ "$remote_dns_protocol" == "quic" ] && json_add_string "remote_dns_quic" "1"
|
||||
;;
|
||||
tcp)
|
||||
tcp|\
|
||||
tls)
|
||||
local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g')
|
||||
local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}')
|
||||
local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}')
|
||||
json_add_string "remote_dns_tcp_port" "${_dns_port}"
|
||||
json_add_string "remote_dns_tcp_server" "${_dns_address}"
|
||||
[ "$remote_dns_protocol" == "tls" ] && json_add_string "remote_dns_tls" "1"
|
||||
;;
|
||||
doh)
|
||||
doh|\
|
||||
http3)
|
||||
local _doh_url=$(echo $remote_dns_doh | awk -F ',' '{print $1}')
|
||||
local _doh_host_port=$(lua_api "get_domain_from_url(\"${_doh_url}\")")
|
||||
#local _doh_host_port=$(echo $_doh_url | sed "s/https:\/\///g" | awk -F '/' '{print $1}')
|
||||
@@ -358,6 +363,7 @@ run_singbox() {
|
||||
json_add_string "remote_dns_doh_port" "${_doh_port}"
|
||||
json_add_string "remote_dns_doh_url" "${_doh_url}"
|
||||
json_add_string "remote_dns_doh_host" "${_doh_host}"
|
||||
[ "$remote_dns_protocol" == "http3" ] && json_add_string "remote_dns_http3" "1"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -643,15 +649,18 @@ run_global() {
|
||||
[ -n "$REMOTE_DNS_PROTOCOL" ] && {
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_protocol=${REMOTE_DNS_PROTOCOL} remote_dns_detour=${REMOTE_DNS_DETOUR}"
|
||||
case "$REMOTE_DNS_PROTOCOL" in
|
||||
udp*)
|
||||
udp|\
|
||||
quic)
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_udp_server=${REMOTE_DNS}"
|
||||
dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")"
|
||||
;;
|
||||
tcp)
|
||||
tcp|\
|
||||
tls)
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_tcp_server=${REMOTE_DNS}"
|
||||
dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")"
|
||||
;;
|
||||
doh)
|
||||
doh|\
|
||||
http3)
|
||||
REMOTE_DNS_DOH=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query")
|
||||
V2RAY_ARGS="${V2RAY_ARGS} remote_dns_doh=${REMOTE_DNS_DOH}"
|
||||
dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS_DOH}")"
|
||||
@@ -1071,7 +1080,12 @@ acl_app() {
|
||||
direct_dns_query_strategy=${direct_dns_query_strategy:-UseIP}
|
||||
remote_dns_protocol=${remote_dns_protocol:-tcp}
|
||||
remote_dns=${remote_dns:-1.1.1.1}
|
||||
[ "$remote_dns_protocol" = "doh" ] && remote_dns=${remote_dns_doh:-https://1.1.1.1/dns-query}
|
||||
case "$remote_dns_protocol" in
|
||||
doh|\
|
||||
http3)
|
||||
remote_dns=${remote_dns_doh:-https://1.1.1.1/dns-query}
|
||||
;;
|
||||
esac
|
||||
remote_dns_detour=${remote_dns_detour:-remote}
|
||||
remote_fakedns=${remote_fakedns:-0}
|
||||
remote_dns_query_strategy=${remote_dns_query_strategy:-UseIPv4}
|
||||
|
||||
@@ -12,22 +12,22 @@ PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
GEOIP_VER:=202602050222
|
||||
GEOIP_VER:=202603050223
|
||||
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
|
||||
define Download/geoip
|
||||
URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/
|
||||
URL_FILE:=geoip.dat
|
||||
FILE:=$(GEOIP_FILE)
|
||||
HASH:=838ab094bc01b9bafc849ce70c6f439dcb158d0c0dd41441ddb3c38d4d9ef563
|
||||
HASH:=c6c1d1be0d28defef55b153e87cb430f94fb480c8f523bf901c5e4ca18d58a00
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20260303101921
|
||||
GEOSITE_VER:=20260305070605
|
||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||
define Download/geosite
|
||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||
URL_FILE:=dlc.dat
|
||||
FILE:=$(GEOSITE_FILE)
|
||||
HASH:=130a2b342ca093efad9fc0407bf38ae227707e3c3dec1c6858e0bece5774e40e
|
||||
HASH:=f6c5dd972592708a0dc75c5a5d30a5bc4b8ca8b8c5c42fe343eeda0f18f0c0bb
|
||||
endef
|
||||
|
||||
GEOSITE_IRAN_VER:=202603020055
|
||||
|
||||
@@ -79,6 +79,18 @@
|
||||
</template>
|
||||
</b-field>
|
||||
|
||||
<b-field v-show="transparent !== 'close' && (transparentType === 'tproxy' || transparentType === 'redirect')"
|
||||
label-position="on-border">
|
||||
<template slot="label">
|
||||
{{ $t("setting.tproxyExcludedInterfaces") }}
|
||||
<b-tooltip type="is-dark" multilined :label="$t('setting.messages.tproxyExcludedInterfaces')" position="is-right">
|
||||
<b-icon size="is-small" icon=" iconfont icon-help-circle-outline"
|
||||
style="position: relative; top: 2px; right: 3px; font-weight: normal" />
|
||||
</b-tooltip>
|
||||
</template>
|
||||
<b-input v-model="tproxyExcludedInterfaces" expanded placeholder="docker*, veth*, wg*, ppp*, br-*" />
|
||||
</b-field>
|
||||
|
||||
<b-field v-show="tunEnabled" label-position="on-border">
|
||||
<template slot="label">
|
||||
{{ $t("setting.tunMode") }}
|
||||
@@ -368,6 +380,7 @@ export default {
|
||||
antipollution: "none",
|
||||
routeOnly: false,
|
||||
specialMode: "none",
|
||||
tproxyExcludedInterfaces: "",
|
||||
pacAutoUpdateMode: "none",
|
||||
pacAutoUpdateIntervalHour: 0,
|
||||
subscriptionAutoUpdateMode: "none",
|
||||
@@ -484,6 +497,7 @@ export default {
|
||||
dnsforward: this.antipollution === "dnsforward" ? "yes" : "no", //版本兼容
|
||||
antipollution: this.antipollution,
|
||||
specialMode: this.specialMode,
|
||||
tproxyExcludedInterfaces: this.tproxyExcludedInterfaces,
|
||||
},
|
||||
cancelToken: new axios.CancelToken(function executor(c) {
|
||||
cancel = c;
|
||||
|
||||
@@ -92,7 +92,8 @@ export default {
|
||||
no: "No",
|
||||
switchSite: "Switch to alternate site",
|
||||
addOutbound: "Add an outbound",
|
||||
domainsExcluded: "Domains Excluded"
|
||||
domainsExcluded: "Domains Excluded",
|
||||
tproxyExcludedInterfaces: "Excluded Interface Prefixes"
|
||||
},
|
||||
register: {
|
||||
title: "Create an admin account first",
|
||||
@@ -120,6 +121,7 @@ export default {
|
||||
autoUpdateSub: "Automatically Update Subscriptions",
|
||||
autoUpdateGfwlist: "Automatically Update GFWList",
|
||||
preferModeWhenUpdate: "Mode when Update Subscriptions and GFWList",
|
||||
tproxyExcludedInterfaces: "Excluded Interface Prefixes",
|
||||
ipForwardOn: "IP Forward",
|
||||
portSharingOn: "Port Sharing",
|
||||
concurrency: "Concurrency",
|
||||
@@ -160,6 +162,8 @@ export default {
|
||||
"If transparent proxy on, no extra configure needed and all TCP traffic will pass through the v2rayA. Providing proxy service to other computers and docker as the gateway should make option 'Share in LAN' on.",
|
||||
transparentType:
|
||||
"★tproxy: support UDP, but not support docker. ★redirect: friendly for docker, but does not support UDP and need to occupy local port 53 for dns anti-pollution.",
|
||||
tproxyExcludedInterfaces:
|
||||
"Set the network interface prefixes that should not pass through the transparent proxy. Wildcard * is supported (automatically converted to + in iptables mode). For example: docker*, veth*, wg*, ppp*, br-*. Use commas to separate multiple prefixes.",
|
||||
tunMode:
|
||||
"★FakeIP: Use fake IPs to accelerate DNS resolution and improve performance. ★RealIP: Use real IPs, more suitable for certain special applications.",
|
||||
tunIPv6:
|
||||
|
||||
@@ -91,7 +91,8 @@ export default {
|
||||
no: "否",
|
||||
switchSite: "切换至备用站点",
|
||||
addOutbound: "新增一个出站 (outbound)",
|
||||
domainsExcluded: "排除域名"
|
||||
domainsExcluded: "排除域名",
|
||||
tproxyExcludedInterfaces: "不走代理的网卡前缀"
|
||||
},
|
||||
register: {
|
||||
title: "初来乍到,创建一个管理员账号",
|
||||
@@ -120,6 +121,7 @@ export default {
|
||||
autoUpdateSub: "自动更新订阅",
|
||||
autoUpdateGfwlist: "自动更新GFWList",
|
||||
preferModeWhenUpdate: "解析订阅链接/更新时优先使用",
|
||||
tproxyExcludedInterfaces: "不走代理的网卡前缀",
|
||||
ipForwardOn: "开启IP转发",
|
||||
portSharingOn: "开启端口分享",
|
||||
concurrency: "最大并发数",
|
||||
@@ -158,6 +160,8 @@ export default {
|
||||
"全局代理开启后,无需经过额外设置,任何TCP流量均会经过V2RayA。另外,如需作为网关使得连接本机的其他主机或docker也享受代理,请勾选“开启局域网共享”。",
|
||||
transparentType:
|
||||
"★tproxy: 支持udp,不支持docker。★redirect: docker友好,不支持udp,需要占用本地53端口以应对dns污染。",
|
||||
tproxyExcludedInterfaces:
|
||||
"设置不经过透明代理的网卡前缀。支持通配符 * (iptables模式下会自动转换为 +)。例如: docker*, veth*, wg*, ppp*, br-*。多个前缀用逗号隔开。",
|
||||
tunMode:
|
||||
"★FakeIP: 使用虚拟IP加速DNS解析,提高性能。★RealIP: 使用真实IP,更适合某些特殊应用。",
|
||||
tunIPv6:
|
||||
|
||||
@@ -69,6 +69,11 @@ iptables -w 2 -t nat -A TP_RULE -d 203.0.113.0/24 -j RETURN
|
||||
iptables -w 2 -t nat -A TP_RULE -d 224.0.0.0/4 -j RETURN
|
||||
iptables -w 2 -t nat -A TP_RULE -d 240.0.0.0/4 -j RETURN
|
||||
iptables -w 2 -t nat -A TP_RULE -m mark --mark 0x80/0x80 -j RETURN
|
||||
`
|
||||
for _, v := range GetExcludedInterfaces() {
|
||||
commands += fmt.Sprintf("iptables -w 2 -t nat -A TP_RULE -i %s -j RETURN\n", strings.ReplaceAll(v, "*", "+"))
|
||||
}
|
||||
commands += `
|
||||
iptables -w 2 -t nat -A TP_RULE -p tcp -j REDIRECT --to-ports 52345
|
||||
|
||||
iptables -w 2 -t nat -I PREROUTING -p tcp -j TP_PRE
|
||||
@@ -94,6 +99,11 @@ ip6tables -w 2 -t nat -A TP_RULE -d 2002::/16 -j RETURN
|
||||
ip6tables -w 2 -t nat -A TP_RULE -d fe80::/10 -j RETURN
|
||||
ip6tables -w 2 -t nat -A TP_RULE -d ff00::/8 -j RETURN
|
||||
ip6tables -w 2 -t nat -A TP_RULE -m mark --mark 0x80/0x80 -j RETURN
|
||||
`
|
||||
for _, v := range GetExcludedInterfaces() {
|
||||
commands += fmt.Sprintf("ip6tables -w 2 -t nat -A TP_RULE -i %s -j RETURN\n", strings.ReplaceAll(v, "*", "+"))
|
||||
}
|
||||
commands += `
|
||||
ip6tables -w 2 -t nat -A TP_RULE -p tcp -j REDIRECT --to-ports 52345
|
||||
|
||||
ip6tables -w 2 -t nat -I PREROUTING -p tcp -j TP_PRE
|
||||
@@ -211,6 +221,11 @@ table inet v2raya {
|
||||
ip6 daddr @whitelist6 return
|
||||
ip6 daddr @interface6 return
|
||||
meta mark & 0x80 == 0x80 return
|
||||
`
|
||||
for _, v := range GetExcludedInterfaces() {
|
||||
table += fmt.Sprintf(" iifname \"%s\" return\n", v)
|
||||
}
|
||||
table += `
|
||||
meta l4proto tcp redirect to :52345
|
||||
}
|
||||
|
||||
|
||||
@@ -91,15 +91,10 @@ iptables -w 2 -t mangle -A TP_PRE -p udp -m mark --mark 0x40/0xc0 -j TPROXY --on
|
||||
|
||||
iptables -w 2 -t mangle -A TP_RULE -j CONNMARK --restore-mark
|
||||
iptables -w 2 -t mangle -A TP_RULE -m mark --mark 0x40/0xc0 -j RETURN
|
||||
iptables -w 2 -t mangle -A TP_RULE -i docker+ -j RETURN
|
||||
`
|
||||
if notSkip, _ := strconv.ParseBool(TproxyNotSkipBr); !notSkip {
|
||||
commands += `iptables -w 2 -t mangle -A TP_RULE -i br+ -j RETURN`
|
||||
for _, v := range GetExcludedInterfaces() {
|
||||
commands += fmt.Sprintf("iptables -w 2 -t mangle -A TP_RULE -i %s -j RETURN\n", strings.ReplaceAll(v, "*", "+"))
|
||||
}
|
||||
commands += `
|
||||
iptables -w 2 -t mangle -A TP_RULE -i veth+ -j RETURN
|
||||
iptables -w 2 -t mangle -A TP_RULE -i ppp+ -j RETURN
|
||||
`
|
||||
if configure.GetSettingNotNil().AntiPollution != configure.AntipollutionClosed {
|
||||
commands += `
|
||||
iptables -w 2 -t mangle -A TP_RULE -p udp --dport 53 -j TP_MARK
|
||||
@@ -147,14 +142,9 @@ ip6tables -w 2 -t mangle -A TP_PRE -p udp -m mark --mark 0x40/0xc0 -j TPROXY --o
|
||||
ip6tables -w 2 -t mangle -A TP_RULE -j CONNMARK --restore-mark
|
||||
ip6tables -w 2 -t mangle -A TP_RULE -m mark --mark 0x40/0xc0 -j RETURN
|
||||
`
|
||||
if notSkip, _ := strconv.ParseBool(TproxyNotSkipBr); !notSkip {
|
||||
commands += `ip6tables -w 2 -t mangle -A TP_RULE -i br+ -j RETURN`
|
||||
for _, v := range GetExcludedInterfaces() {
|
||||
commands += fmt.Sprintf("ip6tables -w 2 -t mangle -A TP_RULE -i %s -j RETURN\n", strings.ReplaceAll(v, "*", "+"))
|
||||
}
|
||||
commands += `
|
||||
ip6tables -w 2 -t mangle -A TP_RULE -i docker+ -j RETURN
|
||||
ip6tables -w 2 -t mangle -A TP_RULE -i veth+ -j RETURN
|
||||
ip6tables -w 2 -t mangle -A TP_RULE -i ppp+ -j RETURN
|
||||
`
|
||||
if configure.GetSettingNotNil().AntiPollution != configure.AntipollutionClosed {
|
||||
commands += `
|
||||
ip6tables -w 2 -t mangle -A TP_RULE -p udp --dport 53 -j TP_MARK
|
||||
@@ -307,14 +297,10 @@ func (t *nftTproxy) GetSetupCommands() Setter {
|
||||
meta mark set ct mark
|
||||
meta mark & 0xc0 == 0x40 return
|
||||
`
|
||||
if notSkip, _ := strconv.ParseBool(TproxyNotSkipBr); !notSkip {
|
||||
table += ` iifname "br-*" return`
|
||||
for _, v := range GetExcludedInterfaces() {
|
||||
table += fmt.Sprintf(" iifname \"%s\" return\n", v)
|
||||
}
|
||||
table += `
|
||||
iifname "docker*" return
|
||||
iifname "veth*" return
|
||||
iifname "wg*" return
|
||||
iifname "ppp*" return
|
||||
# anti-pollution
|
||||
ip daddr @interface return
|
||||
`
|
||||
|
||||
@@ -116,3 +116,19 @@ func IsEnabledTproxyWhiteIpGroups() bool {
|
||||
ipv4List, ipv6List := GetWhiteListIPs()
|
||||
return len(ipv4List) > 0 && len(ipv6List) > 0
|
||||
}
|
||||
|
||||
func GetExcludedInterfaces() []string {
|
||||
setting := configure.GetSettingNotNil()
|
||||
if setting.TproxyExcludedInterfaces == "" {
|
||||
return []string{}
|
||||
}
|
||||
ifs := strings.Split(setting.TproxyExcludedInterfaces, ",")
|
||||
var res []string
|
||||
for _, v := range ifs {
|
||||
v = strings.TrimSpace(v)
|
||||
if v != "" {
|
||||
res = append(res, v)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ type Setting struct {
|
||||
TunIPv6 bool `json:"tunIPv6"`
|
||||
TunStrictRoute bool `json:"tunStrictRoute"`
|
||||
TunAutoRoute bool `json:"tunAutoRoute"`
|
||||
TproxyExcludedInterfaces string `json:"tproxyExcludedInterfaces"`
|
||||
}
|
||||
|
||||
func NewSetting() (setting *Setting) {
|
||||
@@ -54,6 +55,7 @@ func NewSetting() (setting *Setting) {
|
||||
TunIPv6: false,
|
||||
TunStrictRoute: false,
|
||||
TunAutoRoute: true,
|
||||
TproxyExcludedInterfaces: "docker*,veth*,wg*,ppp*,br-*",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>7.19.1</Version>
|
||||
<Version>7.19.2</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
||||
Reference in New Issue
Block a user