mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-26 20:21:35 +08:00
Update On Thu May 2 20:28:16 CEST 2024
This commit is contained in:
1
.github/update.log
vendored
1
.github/update.log
vendored
@@ -634,3 +634,4 @@ Update On Sun Apr 28 20:28:07 CEST 2024
|
||||
Update On Mon Apr 29 20:27:31 CEST 2024
|
||||
Update On Tue Apr 30 20:31:38 CEST 2024
|
||||
Update On Wed May 1 20:30:48 CEST 2024
|
||||
Update On Thu May 2 20:28:05 CEST 2024
|
||||
|
@@ -17,9 +17,9 @@
|
||||
"@generouted/react-router": "1.19.3",
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@material/material-color-utilities": "0.2.7",
|
||||
"@mui/icons-material": "5.15.15",
|
||||
"@mui/icons-material": "5.15.16",
|
||||
"@mui/lab": "5.0.0-alpha.170",
|
||||
"@mui/material": "5.15.15",
|
||||
"@mui/material": "5.15.16",
|
||||
"@mui/x-data-grid": "7.3.1",
|
||||
"@nyanpasu/interface": "workspace:^",
|
||||
"@nyanpasu/ui": "workspace:^",
|
||||
@@ -54,7 +54,7 @@
|
||||
"@vitejs/plugin-react": "4.2.1",
|
||||
"sass": "1.76.0",
|
||||
"shiki": "1.4.0",
|
||||
"vite": "5.2.10",
|
||||
"vite": "5.2.11",
|
||||
"vite-plugin-monaco-editor": "1.1.3",
|
||||
"vite-plugin-sass-dts": "1.3.18",
|
||||
"vite-plugin-svgr": "4.2.0",
|
||||
|
@@ -5,9 +5,9 @@
|
||||
"module": "index.ts",
|
||||
"dependencies": {
|
||||
"@material/material-color-utilities": "0.2.7",
|
||||
"@mui/icons-material": "5.15.15",
|
||||
"@mui/icons-material": "5.15.16",
|
||||
"@mui/lab": "5.0.0-alpha.170",
|
||||
"@mui/material": "5.15.15",
|
||||
"@mui/material": "5.15.16",
|
||||
"@types/react": "18.3.1",
|
||||
"ahooks": "3.7.11",
|
||||
"framer-motion": "11.1.7",
|
||||
|
@@ -2,7 +2,7 @@
|
||||
"manifest_version": 1,
|
||||
"latest": {
|
||||
"mihomo": "v1.18.4",
|
||||
"mihomo_alpha": "alpha-107e3e7",
|
||||
"mihomo_alpha": "alpha-8861eaf",
|
||||
"clash_rs": "v0.1.16",
|
||||
"clash_premium": "2023-09-05-gdcc8d87"
|
||||
},
|
||||
@@ -36,5 +36,5 @@
|
||||
"darwin-x64": "clash-darwin-amd64-n{}.gz"
|
||||
}
|
||||
},
|
||||
"updated_at": "2024-04-30T22:19:35.187Z"
|
||||
"updated_at": "2024-05-01T22:20:25.502Z"
|
||||
}
|
||||
|
@@ -68,7 +68,7 @@
|
||||
"@tauri-apps/cli": "1.5.12",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/node": "20.12.7",
|
||||
"@types/node": "20.12.8",
|
||||
"autoprefixer": "10.4.19",
|
||||
"conventional-changelog-conventionalcommits": "7.0.2",
|
||||
"cross-env": "7.0.3",
|
||||
@@ -91,7 +91,7 @@
|
||||
"postcss-scss": "4.0.9",
|
||||
"prettier": "3.2.5",
|
||||
"prettier-plugin-toml": "2.0.1",
|
||||
"stylelint": "16.4.0",
|
||||
"stylelint": "16.5.0",
|
||||
"stylelint-config-html": "1.1.0",
|
||||
"stylelint-config-recess-order": "5.0.1",
|
||||
"stylelint-config-standard": "36.0.0",
|
||||
|
207
clash-nyanpasu/pnpm-lock.yaml
generated
207
clash-nyanpasu/pnpm-lock.yaml
generated
@@ -20,7 +20,7 @@ importers:
|
||||
devDependencies:
|
||||
'@commitlint/cli':
|
||||
specifier: 19.3.0
|
||||
version: 19.3.0(@types/node@20.12.7)(typescript@5.4.5)
|
||||
version: 19.3.0(@types/node@20.12.8)(typescript@5.4.5)
|
||||
'@commitlint/config-conventional':
|
||||
specifier: 19.2.2
|
||||
version: 19.2.2
|
||||
@@ -34,8 +34,8 @@ importers:
|
||||
specifier: 4.17.12
|
||||
version: 4.17.12
|
||||
'@types/node':
|
||||
specifier: 20.12.7
|
||||
version: 20.12.7
|
||||
specifier: 20.12.8
|
||||
version: 20.12.8
|
||||
autoprefixer:
|
||||
specifier: 10.4.19
|
||||
version: 10.4.19(postcss@8.4.38)
|
||||
@@ -103,26 +103,26 @@ importers:
|
||||
specifier: 2.0.1
|
||||
version: 2.0.1(prettier@3.2.5)
|
||||
stylelint:
|
||||
specifier: 16.4.0
|
||||
version: 16.4.0(typescript@5.4.5)
|
||||
specifier: 16.5.0
|
||||
version: 16.5.0(typescript@5.4.5)
|
||||
stylelint-config-html:
|
||||
specifier: 1.1.0
|
||||
version: 1.1.0(postcss-html@1.6.0)(stylelint@16.4.0(typescript@5.4.5))
|
||||
version: 1.1.0(postcss-html@1.6.0)(stylelint@16.5.0(typescript@5.4.5))
|
||||
stylelint-config-recess-order:
|
||||
specifier: 5.0.1
|
||||
version: 5.0.1(stylelint@16.4.0(typescript@5.4.5))
|
||||
version: 5.0.1(stylelint@16.5.0(typescript@5.4.5))
|
||||
stylelint-config-standard:
|
||||
specifier: 36.0.0
|
||||
version: 36.0.0(stylelint@16.4.0(typescript@5.4.5))
|
||||
version: 36.0.0(stylelint@16.5.0(typescript@5.4.5))
|
||||
stylelint-declaration-block-no-ignored-properties:
|
||||
specifier: 2.8.0
|
||||
version: 2.8.0(stylelint@16.4.0(typescript@5.4.5))
|
||||
version: 2.8.0(stylelint@16.5.0(typescript@5.4.5))
|
||||
stylelint-order:
|
||||
specifier: 6.0.4
|
||||
version: 6.0.4(stylelint@16.4.0(typescript@5.4.5))
|
||||
version: 6.0.4(stylelint@16.5.0(typescript@5.4.5))
|
||||
stylelint-scss:
|
||||
specifier: 6.2.1
|
||||
version: 6.2.1(stylelint@16.4.0(typescript@5.4.5))
|
||||
version: 6.2.1(stylelint@16.5.0(typescript@5.4.5))
|
||||
tailwindcss:
|
||||
specifier: 3.4.3
|
||||
version: 3.4.3
|
||||
@@ -164,7 +164,7 @@ importers:
|
||||
version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@generouted/react-router':
|
||||
specifier: 1.19.3
|
||||
version: 1.19.3(react-router-dom@6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
version: 1.19.3(react-router-dom@6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
'@juggle/resize-observer':
|
||||
specifier: 3.4.0
|
||||
version: 3.4.0
|
||||
@@ -172,17 +172,17 @@ importers:
|
||||
specifier: 0.2.7
|
||||
version: 0.2.7
|
||||
'@mui/icons-material':
|
||||
specifier: 5.15.15
|
||||
version: 5.15.15(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
specifier: 5.15.16
|
||||
version: 5.15.16(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@mui/lab':
|
||||
specifier: 5.0.0-alpha.170
|
||||
version: 5.0.0-alpha.170(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
version: 5.0.0-alpha.170(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material':
|
||||
specifier: 5.15.15
|
||||
version: 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
specifier: 5.15.16
|
||||
version: 5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/x-data-grid':
|
||||
specifier: 7.3.1
|
||||
version: 7.3.1(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
version: 7.3.1(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@nyanpasu/interface':
|
||||
specifier: workspace:^
|
||||
version: link:../interface
|
||||
@@ -212,7 +212,7 @@ importers:
|
||||
version: 0.48.0
|
||||
mui-color-input:
|
||||
specifier: 2.0.3
|
||||
version: 2.0.3(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
version: 2.0.3(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react:
|
||||
specifier: 18.3.1
|
||||
version: 18.3.1
|
||||
@@ -270,7 +270,7 @@ importers:
|
||||
version: 7.8.0(eslint@8.57.0)(typescript@5.4.5)
|
||||
'@vitejs/plugin-react':
|
||||
specifier: 4.2.1
|
||||
version: 4.2.1(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
version: 4.2.1(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
sass:
|
||||
specifier: 1.76.0
|
||||
version: 1.76.0
|
||||
@@ -278,20 +278,20 @@ importers:
|
||||
specifier: 1.4.0
|
||||
version: 1.4.0
|
||||
vite:
|
||||
specifier: 5.2.10
|
||||
version: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
specifier: 5.2.11
|
||||
version: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite-plugin-monaco-editor:
|
||||
specifier: npm:vite-plugin-monaco-editor-new@1.1.3
|
||||
version: vite-plugin-monaco-editor-new@1.1.3(monaco-editor@0.48.0)
|
||||
vite-plugin-sass-dts:
|
||||
specifier: 1.3.18
|
||||
version: 1.3.18(postcss@8.4.38)(prettier@3.2.5)(sass@1.76.0)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
version: 1.3.18(postcss@8.4.38)(prettier@3.2.5)(sass@1.76.0)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
vite-plugin-svgr:
|
||||
specifier: 4.2.0
|
||||
version: 4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
version: 4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
vite-tsconfig-paths:
|
||||
specifier: 4.3.2
|
||||
version: 4.3.2(typescript@5.4.5)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
version: 4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
|
||||
frontend/ui:
|
||||
dependencies:
|
||||
@@ -299,14 +299,14 @@ importers:
|
||||
specifier: 0.2.7
|
||||
version: 0.2.7
|
||||
'@mui/icons-material':
|
||||
specifier: 5.15.15
|
||||
version: 5.15.15(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
specifier: 5.15.16
|
||||
version: 5.15.16(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@mui/lab':
|
||||
specifier: 5.0.0-alpha.170
|
||||
version: 5.0.0-alpha.170(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
version: 5.0.0-alpha.170(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material':
|
||||
specifier: 5.15.15
|
||||
version: 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
specifier: 5.15.16
|
||||
version: 5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@types/react':
|
||||
specifier: 18.3.1
|
||||
version: 18.3.1
|
||||
@@ -1035,11 +1035,11 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/core-downloads-tracker@5.15.15':
|
||||
resolution: {integrity: sha512-aXnw29OWQ6I5A47iuWEI6qSSUfH6G/aCsW9KmW3LiFqr7uXZBK4Ks+z8G+qeIub8k0T5CMqlT2q0L+ZJTMrqpg==}
|
||||
'@mui/core-downloads-tracker@5.15.16':
|
||||
resolution: {integrity: sha512-PTIbMJs5C/vYMfyJNW8ArOezh4eyHkg2pTeA7bBxh2kLP1Uzs0Nm+krXWbWGJPwTWjM8EhnDrr4aCF26+2oleg==}
|
||||
|
||||
'@mui/icons-material@5.15.15':
|
||||
resolution: {integrity: sha512-kkeU/pe+hABcYDH6Uqy8RmIsr2S/y5bP2rp+Gat4CcRjCcVne6KudS1NrZQhUCRysrTDCAhcbcf9gt+/+pGO2g==}
|
||||
'@mui/icons-material@5.15.16':
|
||||
resolution: {integrity: sha512-s8vYbyACzTNZRKv+20fCfVXJwJqNcVotns2EKnu1wmAga6wv2LAo5kB1d5yqQqZlMFtp34EJvRXf7cy8X0tJVA==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
'@mui/material': ^5.0.0
|
||||
@@ -1067,8 +1067,8 @@ packages:
|
||||
'@types/react':
|
||||
optional: true
|
||||
|
||||
'@mui/material@5.15.15':
|
||||
resolution: {integrity: sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==}
|
||||
'@mui/material@5.15.16':
|
||||
resolution: {integrity: sha512-ery2hFReewko9gpDBqOr2VmXwQG9ifXofPhGzIx09/b9JqCQC/06kZXZDGGrOTpIddK9HlIf4yrS+G70jPAzUQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
'@emotion/react': ^11.5.0
|
||||
@@ -1522,6 +1522,9 @@ packages:
|
||||
'@types/node@20.12.7':
|
||||
resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==}
|
||||
|
||||
'@types/node@20.12.8':
|
||||
resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==}
|
||||
|
||||
'@types/parse-json@4.0.2':
|
||||
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
|
||||
|
||||
@@ -2127,8 +2130,8 @@ packages:
|
||||
eastasianwidth@0.2.0:
|
||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
|
||||
electron-to-chromium@1.4.752:
|
||||
resolution: {integrity: sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==}
|
||||
electron-to-chromium@1.4.753:
|
||||
resolution: {integrity: sha512-Wn1XKa0Lc5kMe5UIwQc4+i5lhhBggF0l82C1bE3oOMASt4JVqdOyRIVc8mh0kiuL5CCptqwQJBmFbaPglLrN0Q==}
|
||||
|
||||
emoji-regex@10.3.0:
|
||||
resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
|
||||
@@ -4005,8 +4008,8 @@ packages:
|
||||
peerDependencies:
|
||||
stylelint: ^16.0.2
|
||||
|
||||
stylelint@16.4.0:
|
||||
resolution: {integrity: sha512-uSx7VMuXwLuYcNSIg+0/fFNv0WinsfLAqsVVy7h7p80clKOHiGE8pfY6UjqwylTHiJrRIahTl6a8FPxGezhWoA==}
|
||||
stylelint@16.5.0:
|
||||
resolution: {integrity: sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==}
|
||||
engines: {node: '>=18.12.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -4218,8 +4221,8 @@ packages:
|
||||
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
update-browserslist-db@1.0.13:
|
||||
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
|
||||
update-browserslist-db@1.0.14:
|
||||
resolution: {integrity: sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
browserslist: '>= 4.21.0'
|
||||
@@ -4268,8 +4271,8 @@ packages:
|
||||
vite:
|
||||
optional: true
|
||||
|
||||
vite@5.2.10:
|
||||
resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==}
|
||||
vite@5.2.11:
|
||||
resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -4564,11 +4567,11 @@ snapshots:
|
||||
'@babel/helper-validator-identifier': 7.24.5
|
||||
to-fast-properties: 2.0.0
|
||||
|
||||
'@commitlint/cli@19.3.0(@types/node@20.12.7)(typescript@5.4.5)':
|
||||
'@commitlint/cli@19.3.0(@types/node@20.12.8)(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@commitlint/format': 19.3.0
|
||||
'@commitlint/lint': 19.2.2
|
||||
'@commitlint/load': 19.2.0(@types/node@20.12.7)(typescript@5.4.5)
|
||||
'@commitlint/load': 19.2.0(@types/node@20.12.8)(typescript@5.4.5)
|
||||
'@commitlint/read': 19.2.1
|
||||
'@commitlint/types': 19.0.3
|
||||
execa: 8.0.1
|
||||
@@ -4615,7 +4618,7 @@ snapshots:
|
||||
'@commitlint/rules': 19.0.3
|
||||
'@commitlint/types': 19.0.3
|
||||
|
||||
'@commitlint/load@19.2.0(@types/node@20.12.7)(typescript@5.4.5)':
|
||||
'@commitlint/load@19.2.0(@types/node@20.12.8)(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@commitlint/config-validator': 19.0.3
|
||||
'@commitlint/execute-rule': 19.0.0
|
||||
@@ -4623,7 +4626,7 @@ snapshots:
|
||||
'@commitlint/types': 19.0.3
|
||||
chalk: 5.3.0
|
||||
cosmiconfig: 9.0.0(typescript@5.4.5)
|
||||
cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.7)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5)
|
||||
cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.8)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5)
|
||||
lodash.isplainobject: 4.0.6
|
||||
lodash.merge: 4.6.2
|
||||
lodash.uniq: 4.5.0
|
||||
@@ -4976,13 +4979,13 @@ snapshots:
|
||||
|
||||
'@floating-ui/utils@0.2.2': {}
|
||||
|
||||
'@generouted/react-router@1.19.3(react-router-dom@6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))':
|
||||
'@generouted/react-router@1.19.3(react-router-dom@6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))':
|
||||
dependencies:
|
||||
fast-glob: 3.3.2
|
||||
generouted: 1.19.3(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
generouted: 1.19.3(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))
|
||||
react: 18.3.1
|
||||
react-router-dom: 6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
vite: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
|
||||
'@humanwhocodes/config-array@0.11.14':
|
||||
dependencies:
|
||||
@@ -5040,21 +5043,21 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.1
|
||||
|
||||
'@mui/core-downloads-tracker@5.15.15': {}
|
||||
'@mui/core-downloads-tracker@5.15.16': {}
|
||||
|
||||
'@mui/icons-material@5.15.15(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)':
|
||||
'@mui/icons-material@5.15.16(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material': 5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.1
|
||||
|
||||
'@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
'@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material': 5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@mui/types': 7.2.14(@types/react@18.3.1)
|
||||
'@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.3.1)
|
||||
@@ -5067,11 +5070,11 @@ snapshots:
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
|
||||
'@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
'@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@mui/base': 5.0.0-beta.40(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/core-downloads-tracker': 5.15.15
|
||||
'@mui/core-downloads-tracker': 5.15.16
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@mui/types': 7.2.14(@types/react@18.3.1)
|
||||
'@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.3.1)
|
||||
@@ -5138,10 +5141,10 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.1
|
||||
|
||||
'@mui/x-data-grid@7.3.1(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
'@mui/x-data-grid@7.3.1(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material': 5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/system': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@mui/utils': 5.15.14(@types/react@18.3.1)(react@18.3.1)
|
||||
clsx: 2.1.1
|
||||
@@ -5441,7 +5444,7 @@ snapshots:
|
||||
|
||||
'@types/conventional-commits-parser@5.0.0':
|
||||
dependencies:
|
||||
'@types/node': 20.12.7
|
||||
'@types/node': 20.12.8
|
||||
|
||||
'@types/debug@4.1.12':
|
||||
dependencies:
|
||||
@@ -5456,7 +5459,7 @@ snapshots:
|
||||
'@types/fs-extra@11.0.4':
|
||||
dependencies:
|
||||
'@types/jsonfile': 6.1.4
|
||||
'@types/node': 20.12.7
|
||||
'@types/node': 20.12.8
|
||||
|
||||
'@types/hast@3.0.4':
|
||||
dependencies:
|
||||
@@ -5470,7 +5473,7 @@ snapshots:
|
||||
|
||||
'@types/jsonfile@6.1.4':
|
||||
dependencies:
|
||||
'@types/node': 20.12.7
|
||||
'@types/node': 20.12.8
|
||||
|
||||
'@types/lodash-es@4.17.12':
|
||||
dependencies:
|
||||
@@ -5488,6 +5491,10 @@ snapshots:
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
||||
'@types/node@20.12.8':
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
||||
'@types/parse-json@4.0.2': {}
|
||||
|
||||
'@types/postcss-modules-local-by-default@4.0.2':
|
||||
@@ -5607,14 +5614,14 @@ snapshots:
|
||||
|
||||
'@ungap/structured-clone@1.2.0': {}
|
||||
|
||||
'@vitejs/plugin-react@4.2.1(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))':
|
||||
'@vitejs/plugin-react@4.2.1(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0))':
|
||||
dependencies:
|
||||
'@babel/core': 7.24.5
|
||||
'@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5)
|
||||
'@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5)
|
||||
'@types/babel__core': 7.20.5
|
||||
react-refresh: 0.14.2
|
||||
vite: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -5829,9 +5836,9 @@ snapshots:
|
||||
browserslist@4.23.0:
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001614
|
||||
electron-to-chromium: 1.4.752
|
||||
electron-to-chromium: 1.4.753
|
||||
node-releases: 2.0.14
|
||||
update-browserslist-db: 1.0.13(browserslist@4.23.0)
|
||||
update-browserslist-db: 1.0.14(browserslist@4.23.0)
|
||||
|
||||
buffer-alloc-unsafe@1.1.0: {}
|
||||
|
||||
@@ -5978,9 +5985,9 @@ snapshots:
|
||||
dependencies:
|
||||
is-what: 3.14.1
|
||||
|
||||
cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.7)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5):
|
||||
cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.8)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5):
|
||||
dependencies:
|
||||
'@types/node': 20.12.7
|
||||
'@types/node': 20.12.8
|
||||
cosmiconfig: 9.0.0(typescript@5.4.5)
|
||||
jiti: 1.21.0
|
||||
typescript: 5.4.5
|
||||
@@ -6150,7 +6157,7 @@ snapshots:
|
||||
|
||||
eastasianwidth@0.2.0: {}
|
||||
|
||||
electron-to-chromium@1.4.752: {}
|
||||
electron-to-chromium@1.4.753: {}
|
||||
|
||||
emoji-regex@10.3.0: {}
|
||||
|
||||
@@ -6652,9 +6659,9 @@ snapshots:
|
||||
|
||||
functions-have-names@1.2.3: {}
|
||||
|
||||
generouted@1.19.3(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
generouted@1.19.3(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
dependencies:
|
||||
vite: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
|
||||
gensync@1.0.0-beta.2: {}
|
||||
|
||||
@@ -7495,12 +7502,12 @@ snapshots:
|
||||
|
||||
ms@2.1.3: {}
|
||||
|
||||
mui-color-input@2.0.3(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
mui-color-input@2.0.3(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@mui/material@5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
'@ctrl/tinycolor': 4.1.0
|
||||
'@emotion/react': 11.11.4(@types/react@18.3.1)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)
|
||||
'@mui/material': 5.15.15(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@mui/material': 5.15.16(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
optionalDependencies:
|
||||
@@ -8240,45 +8247,45 @@ snapshots:
|
||||
dependencies:
|
||||
inline-style-parser: 0.2.3
|
||||
|
||||
stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
postcss-html: 1.6.0
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
|
||||
stylelint-config-recess-order@5.0.1(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-config-recess-order@5.0.1(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint-order: 6.0.4(stylelint@16.4.0(typescript@5.4.5))
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
stylelint-order: 6.0.4(stylelint@16.5.0(typescript@5.4.5))
|
||||
|
||||
stylelint-config-recommended@14.0.0(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-config-recommended@14.0.0(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
|
||||
stylelint-config-standard@36.0.0(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-config-standard@36.0.0(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint-config-recommended: 14.0.0(stylelint@16.4.0(typescript@5.4.5))
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
stylelint-config-recommended: 14.0.0(stylelint@16.5.0(typescript@5.4.5))
|
||||
|
||||
stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
|
||||
stylelint-order@6.0.4(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-order@6.0.4(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
postcss: 8.4.38
|
||||
postcss-sorting: 8.0.2(postcss@8.4.38)
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
|
||||
stylelint-scss@6.2.1(stylelint@16.4.0(typescript@5.4.5)):
|
||||
stylelint-scss@6.2.1(stylelint@16.5.0(typescript@5.4.5)):
|
||||
dependencies:
|
||||
known-css-properties: 0.29.0
|
||||
postcss-media-query-parser: 0.2.3
|
||||
postcss-resolve-nested-selector: 0.1.1
|
||||
postcss-selector-parser: 6.0.16
|
||||
postcss-value-parser: 4.2.0
|
||||
stylelint: 16.4.0(typescript@5.4.5)
|
||||
stylelint: 16.5.0(typescript@5.4.5)
|
||||
|
||||
stylelint@16.4.0(typescript@5.4.5):
|
||||
stylelint@16.5.0(typescript@5.4.5):
|
||||
dependencies:
|
||||
'@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4)
|
||||
'@csstools/css-tokenizer': 2.2.4
|
||||
@@ -8606,7 +8613,7 @@ snapshots:
|
||||
|
||||
universalify@2.0.1: {}
|
||||
|
||||
update-browserslist-db@1.0.13(browserslist@4.23.0):
|
||||
update-browserslist-db@1.0.14(browserslist@4.23.0):
|
||||
dependencies:
|
||||
browserslist: 4.23.0
|
||||
escalade: 3.1.2
|
||||
@@ -8638,43 +8645,43 @@ snapshots:
|
||||
esbuild: 0.19.12
|
||||
monaco-editor: 0.48.0
|
||||
|
||||
vite-plugin-sass-dts@1.3.18(postcss@8.4.38)(prettier@3.2.5)(sass@1.76.0)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
vite-plugin-sass-dts@1.3.18(postcss@8.4.38)(prettier@3.2.5)(sass@1.76.0)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
dependencies:
|
||||
postcss: 8.4.38
|
||||
postcss-js: 4.0.1(postcss@8.4.38)
|
||||
prettier: 3.2.5
|
||||
sass: 1.76.0
|
||||
vite: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
|
||||
vite-plugin-svgr@4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
vite-plugin-svgr@4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.1.0(rollup@4.17.2)
|
||||
'@svgr/core': 8.1.0(typescript@5.4.5)
|
||||
'@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5))
|
||||
vite: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)):
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
globrex: 0.1.2
|
||||
tsconfck: 3.0.3(typescript@5.4.5)
|
||||
optionalDependencies:
|
||||
vite: 5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
vite: 5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
vite@5.2.10(@types/node@20.12.7)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0):
|
||||
vite@5.2.11(@types/node@20.12.8)(less@4.2.0)(sass@1.76.0)(stylus@0.62.0):
|
||||
dependencies:
|
||||
esbuild: 0.20.2
|
||||
postcss: 8.4.38
|
||||
rollup: 4.17.2
|
||||
optionalDependencies:
|
||||
'@types/node': 20.12.7
|
||||
'@types/node': 20.12.8
|
||||
fsevents: 2.3.3
|
||||
less: 4.2.0
|
||||
sass: 1.76.0
|
||||
|
@@ -37,7 +37,7 @@ serde = { version = "1.0", features = ["derive"] }
|
||||
reqwest = { version = "0.12", features = ["json", "rustls-tls"] }
|
||||
sysproxy = { git="https://github.com/zzzgydi/sysproxy-rs", branch = "main" }
|
||||
auto-launch = { git="https://github.com/zzzgydi/auto-launch", branch = "main" }
|
||||
tauri = { version = "1.6", features = [ "fs-exists", "path-all", "protocol-asset", "dialog-open", "notification-all", "icon-png", "icon-ico", "clipboard-all", "global-shortcut-all", "process-all", "shell-all", "system-tray", "updater", "window-all", "devtools"] }
|
||||
tauri = { version = "1.6", features = [ "fs-read-file", "fs-exists", "path-all", "protocol-asset", "dialog-open", "notification-all", "icon-png", "icon-ico", "clipboard-all", "global-shortcut-all", "process-all", "shell-all", "system-tray", "updater", "window-all", "devtools"] }
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
runas = "=1.2.0"
|
||||
|
@@ -69,7 +69,8 @@
|
||||
},
|
||||
"fs": {
|
||||
"exists": true,
|
||||
"scope": ["$APPDATA/**", "$RESOURCE/../**"]
|
||||
"readFile": true,
|
||||
"scope": ["$APPDATA/**", "$RESOURCE/../**", "**"]
|
||||
}
|
||||
},
|
||||
"windows": [],
|
||||
|
@@ -86,12 +86,15 @@ export const ServiceViewer = forwardRef<DialogRef, Props>((props, ref) => {
|
||||
disableFooter
|
||||
onClose={() => setOpen(false)}
|
||||
>
|
||||
<Typography>Current State: {state}</Typography>
|
||||
<Typography>
|
||||
{t("Current State")}: {t(state)}
|
||||
</Typography>
|
||||
|
||||
{(state === "unknown" || state === "uninstall") && (
|
||||
<Typography>
|
||||
Information: Please make sure that the Clash Verge Service is
|
||||
installed and enabled
|
||||
{t(
|
||||
"Information: Please make sure that the Clash Verge Service is installed and enabled"
|
||||
)}
|
||||
</Typography>
|
||||
)}
|
||||
|
||||
@@ -102,19 +105,19 @@ export const ServiceViewer = forwardRef<DialogRef, Props>((props, ref) => {
|
||||
>
|
||||
{state === "uninstall" && enable && (
|
||||
<Button variant="contained" onClick={onDisable}>
|
||||
Disable Service Mode
|
||||
{t("Disable Service Mode")}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
{state === "uninstall" && (
|
||||
<Button variant="contained" onClick={onInstall}>
|
||||
Install
|
||||
{t("Install")}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
{(state === "active" || state === "installed") && (
|
||||
<Button variant="outlined" onClick={onUninstall}>
|
||||
Uninstall
|
||||
{t("Uninstall")}
|
||||
</Button>
|
||||
)}
|
||||
</Stack>
|
||||
|
@@ -185,9 +185,20 @@
|
||||
"MTU": "Max Transmission Unit",
|
||||
"Reset to Default": "Reset to Default",
|
||||
|
||||
"Current State": "Current State",
|
||||
"pending": "pending",
|
||||
"installed": "installed",
|
||||
"uninstall": "uninstalled",
|
||||
"active": "active",
|
||||
"unknown": "unknown",
|
||||
"Disable Service Mode": "Disable Service Mode",
|
||||
"Install": "Install",
|
||||
"Uninstall": "Uninstall",
|
||||
|
||||
"Portable Updater Error": "The portable version does not support in-app updates. Please manually download and replace it",
|
||||
"Tun Mode Info": "The Tun mode requires granting core-related permissions. Please enable service mode before using it",
|
||||
"System and Mixed Can Only be Used in Service Mode": "System and Mixed Can Only be Used in Service Mode",
|
||||
"Information: Please make sure that the Clash Verge Service is installed and enabled": "Information: Please make sure that the Clash Verge Service is installed and enabled",
|
||||
|
||||
"Use Regular Expression": "Use Regular Expression"
|
||||
}
|
||||
|
@@ -185,9 +185,20 @@
|
||||
"MTU": "Максимальная единица передачи",
|
||||
"Reset to Default": "Сбросить настройки по умолчанию",
|
||||
|
||||
"Current State": "Текущее состояние",
|
||||
"pending": "Ожидающий",
|
||||
"installed": "Установленный",
|
||||
"uninstall": "Не установленный",
|
||||
"active": "Активированный",
|
||||
"unknown": "неизвестный",
|
||||
"Disable Service Mode": "Отключить режим обслуживания",
|
||||
"Install": "Установить",
|
||||
"Uninstall": "Удалить",
|
||||
|
||||
"Portable Updater Error": "Портативная версия не поддерживает обновление внутри приложения, пожалуйста, скачайте и замените вручную",
|
||||
"Tun Mode Info": "Режим туннеля требует предоставления разрешений, связанных с ядром. Пожалуйста, включите сервисный режим перед его использованием",
|
||||
"System and Mixed Can Only be Used in Service Mode": "Система и смешанные могут использоваться только в сервисном режиме",
|
||||
"Information: Please make sure that the Clash Verge Service is installed and enabled": "Информация: Пожалуйста, убедитесь, что сервис Clash Verge Service установлен и включен",
|
||||
|
||||
"Use Regular Expression": "Использование регулярных выражений"
|
||||
}
|
||||
|
@@ -185,9 +185,20 @@
|
||||
"MTU": "最大传输单元",
|
||||
"Reset to Default": "重置为默认值",
|
||||
|
||||
"Current State": "当前状态",
|
||||
"pending": "等待中",
|
||||
"installed": "已安装",
|
||||
"uninstall": "未安装",
|
||||
"active": "已激活",
|
||||
"unknown": "未知",
|
||||
"Disable Service Mode": "禁用服务模式",
|
||||
"Install": "安装",
|
||||
"Uninstall": "卸载",
|
||||
|
||||
"Portable Updater Error": "便携版不支持应用内更新,请手动下载替换",
|
||||
"Tun Mode Info": "Tun模式需要授予内核相关权限,使用前请先开启服务模式",
|
||||
"System and Mixed Can Only be Used in Service Mode": "System和Mixed只能在服务模式下使用",
|
||||
"Information: Please make sure that the Clash Verge Service is installed and enabled": "提示信息: 请确保Clash Verge Service已安装并启用",
|
||||
|
||||
"Use Regular Expression": "使用正则表达式"
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import useSWR, { mutate } from "swr";
|
||||
import { useMemo, useRef, useState } from "react";
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useLockFn } from "ahooks";
|
||||
import { useSetRecoilState } from "recoil";
|
||||
import { Box, Button, Grid, IconButton, Stack, Divider } from "@mui/material";
|
||||
@@ -33,6 +33,7 @@ import {
|
||||
deleteProfile,
|
||||
updateProfile,
|
||||
reorderProfile,
|
||||
createProfile,
|
||||
} from "@/services/cmds";
|
||||
import { atomLoadingCache } from "@/services/states";
|
||||
import { closeAllConnections } from "@/services/api";
|
||||
@@ -49,6 +50,8 @@ import { throttle } from "lodash-es";
|
||||
import { useRecoilState } from "recoil";
|
||||
import { atomThemeMode } from "@/services/states";
|
||||
import { BaseStyledTextField } from "@/components/base/base-styled-text-field";
|
||||
import { listen } from "@tauri-apps/api/event";
|
||||
import { readTextFile } from "@tauri-apps/api/fs";
|
||||
|
||||
const ProfilePage = () => {
|
||||
const { t } = useTranslation();
|
||||
@@ -63,6 +66,35 @@ const ProfilePage = () => {
|
||||
coordinateGetter: sortableKeyboardCoordinates,
|
||||
})
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const unlisten = listen("tauri://file-drop", async (event) => {
|
||||
const fileList = event.payload as string[];
|
||||
for (let file of fileList) {
|
||||
if (!file.endsWith(".yaml") && !file.endsWith(".yml")) {
|
||||
Notice.error("Only support YAML files.");
|
||||
continue;
|
||||
}
|
||||
const item = {
|
||||
type: "local",
|
||||
name: file.split(/\/|\\/).pop() ?? "New Profile",
|
||||
desc: "",
|
||||
url: "",
|
||||
option: {
|
||||
with_proxy: false,
|
||||
self_proxy: false,
|
||||
},
|
||||
} as IProfileItem;
|
||||
let data = await readTextFile(file);
|
||||
await createProfile(item, data);
|
||||
await mutateProfiles();
|
||||
}
|
||||
});
|
||||
return () => {
|
||||
unlisten.then((fn) => fn());
|
||||
};
|
||||
}, []);
|
||||
|
||||
const {
|
||||
profiles = {},
|
||||
activateSelected,
|
||||
|
@@ -39,7 +39,9 @@
|
||||
"update": "更新",
|
||||
"upload": "上传",
|
||||
"openFile": "打开文件",
|
||||
"continue": "继续"
|
||||
"continue": "继续",
|
||||
"fullScreen": "切换全屏",
|
||||
"discardChanges": "放弃更改"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "下载文件",
|
||||
@@ -136,7 +138,9 @@
|
||||
"uploadFiles": "正在上传 {files} ...",
|
||||
"uploadMessage": "选择上传选项。",
|
||||
"optionalPassword": "密码(选填,不填即无密码)",
|
||||
"resolution": "分辨率"
|
||||
"resolution": "分辨率",
|
||||
"deleteUser": "你确定要删除这个用户吗?",
|
||||
"discardEditorChanges": "你确定要放弃所做的更改吗?"
|
||||
},
|
||||
"search": {
|
||||
"images": "图像",
|
||||
@@ -218,6 +222,7 @@
|
||||
"shareDeleted": "分享已删除!",
|
||||
"singleClick": "使用单击来打开文件和文件夹",
|
||||
"themes": {
|
||||
"default": "系统默认",
|
||||
"dark": "深色",
|
||||
"light": "浅色",
|
||||
"title": "主题"
|
||||
|
@@ -6,10 +6,13 @@
|
||||
"copy": "複製",
|
||||
"copyFile": "複製檔案",
|
||||
"copyToClipboard": "複製到剪貼簿",
|
||||
"copyDownloadLinkToClipboard": "複製到剪貼簿",
|
||||
"create": "建立",
|
||||
"delete": "刪除",
|
||||
"download": "下載",
|
||||
"hideDotfiles": "",
|
||||
"file": "檔案",
|
||||
"folder": "資料夾",
|
||||
"hideDotfiles": "隱藏隱藏檔案",
|
||||
"info": "資訊",
|
||||
"more": "更多",
|
||||
"move": "移動",
|
||||
@@ -30,20 +33,29 @@
|
||||
"selectMultiple": "選擇多個",
|
||||
"share": "分享",
|
||||
"shell": "切換 shell",
|
||||
"submit": "提交",
|
||||
"switchView": "切換顯示方式",
|
||||
"toggleSidebar": "切換側邊欄",
|
||||
"update": "更新",
|
||||
"upload": "上傳"
|
||||
"upload": "上傳",
|
||||
"openFile": "開啟檔案",
|
||||
"continue": "繼續",
|
||||
"fullScreen": "切換全螢幕",
|
||||
"discardChanges": "放棄變更"
|
||||
},
|
||||
"download": {
|
||||
"downloadFile": "下載檔案",
|
||||
"downloadFolder": "下載資料夾",
|
||||
"downloadSelected": ""
|
||||
"downloadSelected": "下載已選擇"
|
||||
},
|
||||
"upload": {
|
||||
"abortUpload": "你確定要中止嗎?"
|
||||
},
|
||||
"errors": {
|
||||
"forbidden": "您無權訪問。",
|
||||
"internal": "伺服器出了點問題。",
|
||||
"notFound": "找不到檔案。"
|
||||
"notFound": "找不到檔案。",
|
||||
"connection": "無法連接到伺服器。"
|
||||
},
|
||||
"files": {
|
||||
"body": "内容",
|
||||
@@ -60,7 +72,8 @@
|
||||
"size": "大小",
|
||||
"sortByLastModified": "按最後修改時間排序",
|
||||
"sortByName": "按名稱排序",
|
||||
"sortBySize": "按大小排序"
|
||||
"sortBySize": "按大小排序",
|
||||
"noPreview": "此檔案無法預覽。"
|
||||
},
|
||||
"help": {
|
||||
"click": "選擇檔案或目錄",
|
||||
@@ -95,6 +108,7 @@
|
||||
"currentlyNavigating": "目前目錄:",
|
||||
"deleteMessageMultiple": "你確定要刪除這 {count} 個檔案嗎?",
|
||||
"deleteMessageSingle": "你確定要刪除這個檔案/資料夾嗎?",
|
||||
"deleteMessageShare": "你確定要刪除這個分享({path})嗎?",
|
||||
"deleteTitle": "刪除檔案",
|
||||
"displayName": "名稱:",
|
||||
"download": "下載檔案",
|
||||
@@ -117,11 +131,16 @@
|
||||
"replace": "替換",
|
||||
"replaceMessage": "您嘗試上傳的檔案中有一個與現有檔案的名稱存在衝突。是否取代現有的同名檔案?",
|
||||
"schedule": "計畫",
|
||||
"scheduleMessage": "請選擇發佈這篇貼文的日期。",
|
||||
"scheduleMessage": "請選擇發佈這篇貼文的日期與時間。",
|
||||
"show": "顯示",
|
||||
"size": "大小",
|
||||
"upload": "上傳",
|
||||
"uploadMessage": "選擇上傳項。"
|
||||
"uploadFiles": "正在上傳 {files} ...",
|
||||
"uploadMessage": "選擇上傳項。",
|
||||
"optionalPassword": "密碼(選填,不填即無密碼)",
|
||||
"resolution": "解析度",
|
||||
"deleteUser": "你確定要刪除這個使用者嗎?",
|
||||
"discardEditorChanges": "你確定要放棄所做的變更嗎?"
|
||||
},
|
||||
"search": {
|
||||
"images": "影像",
|
||||
@@ -138,10 +157,10 @@
|
||||
"administrator": "管理員",
|
||||
"allowCommands": "執行命令",
|
||||
"allowEdit": "編輯、重命名或刪除檔案/目錄",
|
||||
"allowNew": "創建新檔案和目錄",
|
||||
"allowNew": "建立新檔案和目錄",
|
||||
"allowPublish": "發佈新的貼文與頁面",
|
||||
"allowSignup": "允許使用者註冊",
|
||||
"avoidChanges": "(留空以避免更改)",
|
||||
"avoidChanges": "(留空以避免更改)",
|
||||
"branding": "品牌",
|
||||
"brandingDirectoryPath": "品牌資訊資料夾路徑",
|
||||
"brandingHelp": "您可以通過改變例項名稱,更換Logo,加入自定義樣式,甚至禁用到Github的外部連結來自定義File Browser的外觀和給人的感覺。\n想獲得更多資訊,請檢視 {0} 。",
|
||||
@@ -150,17 +169,24 @@
|
||||
"commandRunnerHelp": "在這裡你可以設定在下面的事件中執行的命令。每行必須寫一條命令。可以在命令中使用環境變數 {0} 和 {1}。關於此功能和可用環境變數的更多資訊,請閱讀{2}.",
|
||||
"commandsUpdated": "命令已更新!",
|
||||
"createUserDir": "在新增新使用者的同時自動建立使用者的個人目錄",
|
||||
"customStylesheet": "自定義樣式表",
|
||||
"tusUploads": "分塊上傳",
|
||||
"tusUploadsHelp": "File Browser 支援分塊上傳,在不佳的網絡環境下也可進行高效、可靠、可續的檔案上傳",
|
||||
"tusUploadsChunkSize": "分塊上傳大小,例如 10MB 或 1GB",
|
||||
"tusUploadsRetryCount": "分塊上傳失敗時的重試次數",
|
||||
"userHomeBasePath": "使用者主目錄的路徑",
|
||||
"userScopeGenerationPlaceholder": "自動生成目錄範圍",
|
||||
"createUserHomeDirectory": "建立使用者主目錄",
|
||||
"customStylesheet": "自定義樣式表(CSS)",
|
||||
"defaultUserDescription": "這些是新使用者的預設設定。",
|
||||
"disableExternalLinks": "禁止外部連結(幫助文件除外)",
|
||||
"disableUsedDiskPercentage": "Disable used disk percentage graph",
|
||||
"disableUsedDiskPercentage": "停用已使用磁碟空間百分比圖",
|
||||
"documentation": "幫助文件",
|
||||
"examples": "範例",
|
||||
"executeOnShell": "在Shell中執行",
|
||||
"executeOnShellDescription": "預設情況下,File Browser通過直接呼叫命令的二進位制包來執行命令,如果想在shell中執行(如Bash、PowerShell),你可以在這裡定義所使用的shell和參數。如果設定了這個選項,所執行的命令會作為參數追加在後面。本選項對使用者命令和事件鉤子都生效。",
|
||||
"globalRules": "這是全局允許與禁止規則。它們作用於所有使用者。您可以給每個使用者定義單獨的特殊規則來覆蓋全局規則。",
|
||||
"globalSettings": "全域設定",
|
||||
"hideDotfiles": "",
|
||||
"hideDotfiles": "隱藏隱藏檔案",
|
||||
"insertPath": "插入路徑",
|
||||
"insertRegex": "插入正規表示式",
|
||||
"instanceName": "例項名稱",
|
||||
@@ -171,7 +197,7 @@
|
||||
"newUser": "建立使用者",
|
||||
"password": "密碼",
|
||||
"passwordUpdated": "密碼已更新!",
|
||||
"path": "",
|
||||
"path": "路徑",
|
||||
"perm": {
|
||||
"create": "建立檔案和資料夾",
|
||||
"delete": "刪除檔案和資料夾",
|
||||
@@ -189,18 +215,21 @@
|
||||
"rules": "規則",
|
||||
"rulesHelp": "您可以為該使用者製定一組黑名單或白名單式的規則,被屏蔽的檔案將不會顯示在清單中,使用者也無權限存取,支持相對於目錄範圍的路徑。",
|
||||
"scope": "目錄範圍",
|
||||
"setDateFormat": "顯示精確的日期格式",
|
||||
"settingsUpdated": "設定已更新!",
|
||||
"shareDuration": "",
|
||||
"shareManagement": "",
|
||||
"singleClick": "",
|
||||
"shareDuration": "分享期限",
|
||||
"shareManagement": "分享管理",
|
||||
"shareDeleted": "分享已刪除!",
|
||||
"singleClick": "使用單擊開啟檔案和目錄",
|
||||
"themes": {
|
||||
"default": "系統預設",
|
||||
"dark": "深色",
|
||||
"light": "淺色",
|
||||
"title": "主題"
|
||||
},
|
||||
"user": "使用者",
|
||||
"userCommands": "使用者命令",
|
||||
"userCommandsHelp": "指定該使用者可以執行的命令,用空格分隔。例如:",
|
||||
"userCommands": "使用者命令(Shell 命令)",
|
||||
"userCommandsHelp": "指定該使用者可以執行的命令(Shell 命令),用空格分隔。例如:",
|
||||
"userCreated": "使用者已建立!",
|
||||
"userDefaults": "使用者預設選項",
|
||||
"userDeleted": "使用者已刪除!",
|
||||
@@ -211,7 +240,7 @@
|
||||
},
|
||||
"sidebar": {
|
||||
"help": "幫助",
|
||||
"hugoNew": "Hugo New",
|
||||
"hugoNew": "Hugo 新建",
|
||||
"login": "登入",
|
||||
"logout": "登出",
|
||||
"myFiles": "我的檔案",
|
||||
|
@@ -38,9 +38,9 @@ I18N: [English](README_EN.md) | [简体中文](README.md) | [日本語](README_J
|
||||
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
|
||||
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \
|
||||
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \
|
||||
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \
|
||||
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python3 \
|
||||
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \
|
||||
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
|
||||
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev fuse-devel
|
||||
```
|
||||
|
||||
3. 下载源代码,更新 feeds 并选择配置
|
||||
|
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=UnblockNeteaseMusic
|
||||
PKG_BASE_VERSION:=0.27.6-patch.1
|
||||
PKG_VERSION:=0.27.6-patch.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/UnblockNeteaseMusic/server/tar.gz/v${PKG_VERSION}?
|
||||
PKG_MIRROR_HASH:=05b267d4f75a49e730b14505255c72dd9e6785df923e52c969ad8aa3f06380f0
|
||||
PKG_HASH:=05b267d4f75a49e730b14505255c72dd9e6785df923e52c969ad8aa3f06380f0
|
||||
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
|
||||
|
@@ -7,13 +7,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=alist
|
||||
PKG_VERSION:=3.33.0
|
||||
PKG_WEB_VERSION:=3.33.0
|
||||
PKG_VERSION:=3.34.0
|
||||
PKG_WEB_VERSION:=3.34.0
|
||||
PKG_RELEASE:=6
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/alist-org/alist/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=28aea1ddae1f394b9d66ca95cf25ab86cf30cce94544783ce7ea440f15d95f77
|
||||
PKG_HASH:=843d6ccc74210d6541d0c976c4b396381ca98a855a9c75b2e753e94c7f78cbad
|
||||
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
PKG_LICENSE_FILE:=LICENSE
|
||||
@@ -23,7 +23,7 @@ define Download/$(PKG_NAME)-web
|
||||
FILE:=$(PKG_NAME)-web-$(PKG_WEB_VERSION).tar.gz
|
||||
URL_FILE:=dist.tar.gz
|
||||
URL:=https://github.com/alist-org/alist-web/releases/download/$(PKG_WEB_VERSION)/
|
||||
HASH:=50ae0539720bce7c470ac6bc47216b0e103e73636ee3a9b4b9364e2b52ca93f6
|
||||
HASH:=82a634c20df88b0ce385d029d0a23a8047b825273621d08c276232fb3309442c
|
||||
endef
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
|
@@ -175,32 +175,19 @@ if has_xray then
|
||||
o.default = "10-20"
|
||||
o:depends("fragment", true)
|
||||
|
||||
o = s_xray:option(Flag, "sniffing", translate("Sniffing"), translate("When using the shunt, this option will be forced to be enabled."))
|
||||
o.default = 1
|
||||
o.rmempty = false
|
||||
o = s_xray:option(Flag, "sniffing_override_dest", translate("Override the connection destination address"), translate("Override the connection destination address with the sniffed domain."))
|
||||
o.default = 0
|
||||
|
||||
if has_xray then
|
||||
o = s_xray:option(Flag, "route_only", translate("Sniffing Route Only"))
|
||||
o.default = 0
|
||||
o:depends("sniffing", true)
|
||||
local domains_excluded = string.format("/usr/share/%s/rules/domains_excluded", appname)
|
||||
o = s_xray:option(TextValue, "excluded_domains", translate("Excluded Domains"), translate("If the traffic sniffing result is in this list, the destination address will not be overridden."))
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section) return fs.readfile(domains_excluded) or "" end
|
||||
o.write = function(self, section, value) fs.writefile(domains_excluded, value:gsub("\r\n", "\n")) end
|
||||
o:depends({sniffing_override_dest = true})
|
||||
|
||||
local domains_excluded = string.format("/usr/share/%s/rules/domains_excluded", appname)
|
||||
o = s_xray:option(TextValue, "no_sniffing_hosts", translate("No Sniffing Lists"), translate("Hosts added into No Sniffing Lists will not resolve again on server."))
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section) return fs.readfile(domains_excluded) or "" end
|
||||
o.write = function(self, section, value) fs.writefile(domains_excluded, value:gsub("\r\n", "\n")) end
|
||||
o.remove = function(self, section)
|
||||
local route_only_value = s_xray.fields["route_only"] and s_xray.fields["route_only"]:formvalue(section) or nil
|
||||
if not route_only_value or route_only_value == "0" then
|
||||
fs.writefile(domains_excluded, "")
|
||||
end
|
||||
end
|
||||
o:depends({sniffing = true, route_only = false})
|
||||
|
||||
o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)"))
|
||||
o.datatype = "uinteger"
|
||||
end
|
||||
o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)"))
|
||||
o.datatype = "uinteger"
|
||||
end
|
||||
|
||||
if has_singbox then
|
||||
|
@@ -616,11 +616,11 @@ function gen_config(var)
|
||||
settings = {network = "tcp,udp", followRedirect = true},
|
||||
streamSettings = {sockopt = {tproxy = "tproxy"}},
|
||||
sniffing = {
|
||||
enabled = xray_settings.sniffing == "1" or node.protocol == "_shunt",
|
||||
enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt",
|
||||
destOverride = {"http", "tls", "quic"},
|
||||
metadataOnly = false,
|
||||
routeOnly = (xray_settings.sniffing == "1" and xray_settings.route_only == "1") or (xray_settings.sniffing == "0" and node.protocol == "_shunt"),
|
||||
domainsExcluded = (xray_settings.sniffing == "1" and xray_settings.route_only == "0") and get_domain_excluded() or nil
|
||||
routeOnly = node.protocol == "_shunt" and xray_settings.sniffing_override_dest ~= "1" or nil,
|
||||
domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -691,12 +691,6 @@ msgstr "劫持ICMPv6 (IPv6 PING)"
|
||||
msgid "Sniffing"
|
||||
msgstr "流量嗅探"
|
||||
|
||||
msgid "When using the shunt, this option will be forced to be enabled."
|
||||
msgstr "使用分流时,将强制启用此选项。"
|
||||
|
||||
msgid "Sniffing Route Only"
|
||||
msgstr "流量嗅探仅供路由使用"
|
||||
|
||||
msgid "TCP Proxy Way"
|
||||
msgstr "TCP 代理方式"
|
||||
|
||||
@@ -1501,11 +1495,11 @@ msgstr "无子连接时的健康检查"
|
||||
msgid "Initial Windows Size"
|
||||
msgstr "初始窗口大小"
|
||||
|
||||
msgid "No Sniffing Lists"
|
||||
msgstr "不进行流量嗅探的域名列表"
|
||||
msgid "Excluded Domains"
|
||||
msgstr "排除域名"
|
||||
|
||||
msgid "Hosts added into No Sniffing Lists will not resolve again on server."
|
||||
msgstr "加入的域名不会再次在服务器解析。"
|
||||
msgid "If the traffic sniffing result is in this list, the destination address will not be overridden."
|
||||
msgstr "如果流量嗅探结果在此列表中,则不会覆盖目标地址。"
|
||||
|
||||
msgid "Buffer Size"
|
||||
msgstr "缓冲区大小"
|
||||
|
@@ -412,10 +412,11 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
Language = (int)config.System.Language.Value;
|
||||
TimeZone = config.System.TimeZone;
|
||||
|
||||
DateTime currentDateTime = DateTime.Now;
|
||||
|
||||
DateTime currentHostDateTime = DateTime.Now;
|
||||
TimeSpan systemDateTimeOffset = TimeSpan.FromSeconds(config.System.SystemTimeOffset);
|
||||
DateTime currentDateTime = currentHostDateTime.Add(systemDateTimeOffset);
|
||||
CurrentDate = currentDateTime.Date;
|
||||
CurrentTime = currentDateTime.TimeOfDay.Add(TimeSpan.FromSeconds(config.System.SystemTimeOffset));
|
||||
CurrentTime = currentDateTime.TimeOfDay;
|
||||
|
||||
EnableVsync = config.Graphics.EnableVsync;
|
||||
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
||||
|
@@ -9,9 +9,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://gn.googlesource.com/gn.git
|
||||
PKG_SOURCE_DATE:=2024-03-28
|
||||
PKG_SOURCE_VERSION:=93ee9b91423c1f1f53fb5f6cba7b8eef6247a564
|
||||
PKG_MIRROR_HASH:=ec94fb9da8276ded4f92ff1078431835de3ede4d0354961a984b0b17bb8a25c2
|
||||
PKG_SOURCE_DATE:=2024-04-23
|
||||
PKG_SOURCE_VERSION:=f284b6b47039a2d7edfcbfc51f52664f82b5a789
|
||||
PKG_MIRROR_HASH:=17157e20619d31ba99894045691a68aa583a78feb9771dcddb01376edb222e17
|
||||
|
||||
PKG_LICENSE:=BSD 3-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
@@ -3,7 +3,7 @@
|
||||
#ifndef OUT_LAST_COMMIT_POSITION_H_
|
||||
#define OUT_LAST_COMMIT_POSITION_H_
|
||||
|
||||
#define LAST_COMMIT_POSITION_NUM 2161
|
||||
#define LAST_COMMIT_POSITION "2161 (93ee9b91423c)"
|
||||
#define LAST_COMMIT_POSITION_NUM 2166
|
||||
#define LAST_COMMIT_POSITION "2166 (f284b6b47039)"
|
||||
|
||||
#endif // OUT_LAST_COMMIT_POSITION_H_
|
||||
|
@@ -175,32 +175,19 @@ if has_xray then
|
||||
o.default = "10-20"
|
||||
o:depends("fragment", true)
|
||||
|
||||
o = s_xray:option(Flag, "sniffing", translate("Sniffing"), translate("When using the shunt, this option will be forced to be enabled."))
|
||||
o.default = 1
|
||||
o.rmempty = false
|
||||
o = s_xray:option(Flag, "sniffing_override_dest", translate("Override the connection destination address"), translate("Override the connection destination address with the sniffed domain."))
|
||||
o.default = 0
|
||||
|
||||
if has_xray then
|
||||
o = s_xray:option(Flag, "route_only", translate("Sniffing Route Only"))
|
||||
o.default = 0
|
||||
o:depends("sniffing", true)
|
||||
local domains_excluded = string.format("/usr/share/%s/rules/domains_excluded", appname)
|
||||
o = s_xray:option(TextValue, "excluded_domains", translate("Excluded Domains"), translate("If the traffic sniffing result is in this list, the destination address will not be overridden."))
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section) return fs.readfile(domains_excluded) or "" end
|
||||
o.write = function(self, section, value) fs.writefile(domains_excluded, value:gsub("\r\n", "\n")) end
|
||||
o:depends({sniffing_override_dest = true})
|
||||
|
||||
local domains_excluded = string.format("/usr/share/%s/rules/domains_excluded", appname)
|
||||
o = s_xray:option(TextValue, "no_sniffing_hosts", translate("No Sniffing Lists"), translate("Hosts added into No Sniffing Lists will not resolve again on server."))
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section) return fs.readfile(domains_excluded) or "" end
|
||||
o.write = function(self, section, value) fs.writefile(domains_excluded, value:gsub("\r\n", "\n")) end
|
||||
o.remove = function(self, section)
|
||||
local route_only_value = s_xray.fields["route_only"] and s_xray.fields["route_only"]:formvalue(section) or nil
|
||||
if not route_only_value or route_only_value == "0" then
|
||||
fs.writefile(domains_excluded, "")
|
||||
end
|
||||
end
|
||||
o:depends({sniffing = true, route_only = false})
|
||||
|
||||
o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)"))
|
||||
o.datatype = "uinteger"
|
||||
end
|
||||
o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)"))
|
||||
o.datatype = "uinteger"
|
||||
end
|
||||
|
||||
if has_singbox then
|
||||
|
@@ -616,11 +616,11 @@ function gen_config(var)
|
||||
settings = {network = "tcp,udp", followRedirect = true},
|
||||
streamSettings = {sockopt = {tproxy = "tproxy"}},
|
||||
sniffing = {
|
||||
enabled = xray_settings.sniffing == "1" or node.protocol == "_shunt",
|
||||
enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt",
|
||||
destOverride = {"http", "tls", "quic"},
|
||||
metadataOnly = false,
|
||||
routeOnly = (xray_settings.sniffing == "1" and xray_settings.route_only == "1") or (xray_settings.sniffing == "0" and node.protocol == "_shunt"),
|
||||
domainsExcluded = (xray_settings.sniffing == "1" and xray_settings.route_only == "0") and get_domain_excluded() or nil
|
||||
routeOnly = node.protocol == "_shunt" and xray_settings.sniffing_override_dest ~= "1" or nil,
|
||||
domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -691,12 +691,6 @@ msgstr "劫持ICMPv6 (IPv6 PING)"
|
||||
msgid "Sniffing"
|
||||
msgstr "流量嗅探"
|
||||
|
||||
msgid "When using the shunt, this option will be forced to be enabled."
|
||||
msgstr "使用分流时,将强制启用此选项。"
|
||||
|
||||
msgid "Sniffing Route Only"
|
||||
msgstr "流量嗅探仅供路由使用"
|
||||
|
||||
msgid "TCP Proxy Way"
|
||||
msgstr "TCP 代理方式"
|
||||
|
||||
@@ -1501,11 +1495,11 @@ msgstr "无子连接时的健康检查"
|
||||
msgid "Initial Windows Size"
|
||||
msgstr "初始窗口大小"
|
||||
|
||||
msgid "No Sniffing Lists"
|
||||
msgstr "不进行流量嗅探的域名列表"
|
||||
msgid "Excluded Domains"
|
||||
msgstr "排除域名"
|
||||
|
||||
msgid "Hosts added into No Sniffing Lists will not resolve again on server."
|
||||
msgstr "加入的域名不会再次在服务器解析。"
|
||||
msgid "If the traffic sniffing result is in this list, the destination address will not be overridden."
|
||||
msgstr "如果流量嗅探结果在此列表中,则不会覆盖目标地址。"
|
||||
|
||||
msgid "Buffer Size"
|
||||
msgstr "缓冲区大小"
|
||||
|
@@ -12,13 +12,13 @@ PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
GEOIP_VER:=202404250042
|
||||
GEOIP_VER:=202405020039
|
||||
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:=8ad42be541dfa7c2e548ba94b6dcb3fe431a105ba14d3907299316a036723760
|
||||
HASH:=2f7516c0f853625e0a7ca932f534eb6d963f4287d4a2c585b1d193b4bb0a0f4f
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20240426060244
|
||||
|
@@ -15,6 +15,8 @@ object AppConfig {
|
||||
|
||||
// Preferences mapped to MMKV
|
||||
const val PREF_SNIFFING_ENABLED = "pref_sniffing_enabled"
|
||||
const val PREF_ROUTE_ONLY_ENABLED = "pref_route_only_enabled"
|
||||
|
||||
const val PREF_PER_APP_PROXY = "pref_per_app_proxy"
|
||||
const val PREF_PER_APP_PROXY_SET = "pref_per_app_proxy_set"
|
||||
const val PREF_BYPASS_APPS = "pref_bypass_apps"
|
||||
|
@@ -60,7 +60,8 @@ data class V2rayConfig(
|
||||
|
||||
data class SniffingBean(var enabled: Boolean,
|
||||
val destOverride: ArrayList<String>,
|
||||
val metadataOnly: Boolean? = null)
|
||||
val metadataOnly: Boolean? = null,
|
||||
var routeOnly: Boolean? = null)
|
||||
}
|
||||
|
||||
data class OutboundBean(var tag: String = "proxy",
|
||||
|
@@ -230,6 +230,7 @@ class SettingsActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
listOf(
|
||||
AppConfig.PREF_ROUTE_ONLY_ENABLED,
|
||||
AppConfig.PREF_BYPASS_APPS,
|
||||
AppConfig.PREF_SPEED_ENABLED,
|
||||
AppConfig.PREF_CONFIRM_REMOVE,
|
||||
|
@@ -134,6 +134,7 @@ object V2rayConfigUtil {
|
||||
settingsStorage?.decodeBool(AppConfig.PREF_SNIFFING_ENABLED, true)
|
||||
?: true
|
||||
v2rayConfig.inbounds[0].sniffing?.enabled = fakedns || sniffAllTlsAndHttp
|
||||
v2rayConfig.inbounds[0].sniffing?.routeOnly = settingsStorage?.decodeBool(AppConfig.PREF_ROUTE_ONLY_ENABLED, false)
|
||||
if (!sniffAllTlsAndHttp) {
|
||||
v2rayConfig.inbounds[0].sniffing?.destOverride?.clear()
|
||||
}
|
||||
|
@@ -59,6 +59,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
|
||||
settingsStorage?.encode(key, sharedPreferences.getString(key, ""))
|
||||
}
|
||||
|
||||
AppConfig.PREF_ROUTE_ONLY_ENABLED,
|
||||
AppConfig.PREF_SPEED_ENABLED,
|
||||
AppConfig.PREF_PROXY_SHARING,
|
||||
AppConfig.PREF_LOCAL_DNS_ENABLED,
|
||||
|
@@ -125,6 +125,9 @@
|
||||
|
||||
<string name="summary_pref_speed_enabled">عرض السرعة الحالية في الإشعار.\nسيتغير رمز الإشعار استنادًا إلى الاستخدام.</string>
|
||||
<string name="title_pref_sniffing_enabled">تمكين Sniffing</string>
|
||||
<string name="title_pref_route_only_enabled">Enable routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">Use the sniffed domain name for routing only, and keep the target address as the IP address.</string>
|
||||
|
||||
|
||||
<string name="summary_pref_sniffing_enabled">محاولة استخلاص النطاق من الحزمة (مشغلة افتراضيًا)</string>
|
||||
<string name="title_pref_local_dns_enabled">تمكين DNS المحلي</string>
|
||||
|
@@ -120,6 +120,9 @@
|
||||
|
||||
<string name="title_pref_sniffing_enabled">فعال کردن Sniffing</string>
|
||||
<string name="summary_pref_sniffing_enabled">دامنه sniff را از بسته امتحان کنید (پیشفرض روشن)</string>
|
||||
<string name="title_pref_route_only_enabled">Enable routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">Use the sniffed domain name for routing only, and keep the target address as the IP address.</string>
|
||||
|
||||
|
||||
<string name="title_pref_local_dns_enabled">فعال کردن DNS محلی</string>
|
||||
<string name="summary_pref_local_dns_enabled">DNS پردازش شده توسط ماژول DNS هسته (توصیه میشود، در صورت نیاز به دور زدن LAN و نشانی mainland)</string>
|
||||
|
@@ -123,6 +123,9 @@
|
||||
|
||||
<string name="title_pref_sniffing_enabled">Анализ пакетов</string>
|
||||
<string name="summary_pref_sniffing_enabled">Использовать анализ пакетов (по умолчанию включено)</string>
|
||||
<string name="title_pref_route_only_enabled">Enable routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">Use the sniffed domain name for routing only, and keep the target address as the IP address.</string>
|
||||
|
||||
|
||||
<string name="title_pref_local_dns_enabled">Использовать локальную DNS</string>
|
||||
<string name="summary_pref_local_dns_enabled">Обслуживание выполняется DNS-модулем ядра (в настройках маршрутизации рекомендуется выбрать режим «Все, кроме LAN и Китая»)</string>
|
||||
|
@@ -122,6 +122,9 @@
|
||||
|
||||
<string name="title_pref_sniffing_enabled">Bật Sniffing</string>
|
||||
<string name="summary_pref_sniffing_enabled">Nhận diện tên miền từ gói tin để phục vụ định tuyến. \n(phải tắt để xài Zalo)</string>
|
||||
<string name="title_pref_route_only_enabled">Enable routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">Use the sniffed domain name for routing only, and keep the target address as the IP address.</string>
|
||||
|
||||
|
||||
<string name="title_pref_local_dns_enabled">Bật Local DNS</string>
|
||||
<string name="summary_pref_local_dns_enabled">DNS được xử lý bởi mô-đun DNS của xray-core (dùng nếu cần định tuyến bypass cho mạng LAN và địa chỉ nội địa)</string>
|
||||
|
@@ -121,6 +121,8 @@
|
||||
|
||||
<string name="title_pref_sniffing_enabled">启用流量探测</string>
|
||||
<string name="summary_pref_sniffing_enabled">从流量中探测域名 (默认启用)</string>
|
||||
<string name="title_pref_route_only_enabled">启用 routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">将嗅探得到的域名仅用于路由,代理目标地址仍为 IP</string>
|
||||
|
||||
<string name="title_pref_local_dns_enabled">启用本地DNS</string>
|
||||
<string name="summary_pref_local_dns_enabled">DNS 请求导入 core 由 DNS 模块处理(推荐启用 如果需要路由绕过局域网及大陆地址)</string>
|
||||
|
@@ -121,6 +121,9 @@
|
||||
|
||||
<string name="title_pref_sniffing_enabled">啟用流量監聽</string>
|
||||
<string name="summary_pref_sniffing_enabled">從流量中監聽網域 (預設啟用)</string>
|
||||
<string name="title_pref_route_only_enabled">啟用 routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">將嗅探得到的網域只用於路由,代理目標位址仍為 IP</string>
|
||||
|
||||
|
||||
<string name="title_pref_local_dns_enabled">啟用本機 DNS</string>
|
||||
<string name="summary_pref_local_dns_enabled">DNS 請求匯入 core 由 DNS 模塊處理 (建議啟用,如果需要轉送略過區域網路及中國大陸)</string>
|
||||
|
@@ -133,6 +133,8 @@
|
||||
|
||||
<string name="title_pref_sniffing_enabled">Enable Sniffing</string>
|
||||
<string name="summary_pref_sniffing_enabled">Try sniff domain from the packet (default on)</string>
|
||||
<string name="title_pref_route_only_enabled">Enable routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">Use the sniffed domain name for routing only, and keep the target address as the IP address.</string>
|
||||
|
||||
<string name="title_pref_local_dns_enabled">Enable local DNS</string>
|
||||
<string name="summary_pref_local_dns_enabled">DNS processed by core‘s DNS module (Recommended, if need routing Bypassing LAN and
|
||||
|
@@ -8,6 +8,12 @@
|
||||
android:summary="@string/summary_pref_sniffing_enabled"
|
||||
android:title="@string/title_pref_sniffing_enabled" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="pref_route_only_enabled"
|
||||
android:summary="@string/summary_pref_route_only_enabled"
|
||||
android:title="@string/title_pref_route_only_enabled" />
|
||||
|
||||
<PreferenceCategory android:title="@string/title_vpn_settings">
|
||||
<CheckBoxPreference
|
||||
android:key="pref_per_app_proxy"
|
||||
|
@@ -21,12 +21,14 @@ type Commander struct {
|
||||
services []Service
|
||||
ohm outbound.Manager
|
||||
tag string
|
||||
listen string
|
||||
}
|
||||
|
||||
// NewCommander creates a new Commander based on the given config.
|
||||
func NewCommander(ctx context.Context, config *Config) (*Commander, error) {
|
||||
c := &Commander{
|
||||
tag: config.Tag,
|
||||
tag: config.Tag,
|
||||
listen: config.Listen,
|
||||
}
|
||||
|
||||
common.Must(core.RequireFeatures(ctx, func(om outbound.Manager) {
|
||||
@@ -66,16 +68,29 @@ func (c *Commander) Start() error {
|
||||
}
|
||||
c.Unlock()
|
||||
|
||||
var listen = func(listener net.Listener) {
|
||||
if err := c.server.Serve(listener); err != nil {
|
||||
newError("failed to start grpc server").Base(err).AtError().WriteToLog()
|
||||
}
|
||||
}
|
||||
|
||||
if len(c.listen) > 0 {
|
||||
if l, err := net.Listen("tcp", c.listen); err != nil {
|
||||
newError("API server failed to listen on ", c.listen).Base(err).AtError().WriteToLog()
|
||||
return err
|
||||
} else {
|
||||
newError("API server listening on ", l.Addr()).AtInfo().WriteToLog()
|
||||
go listen(l)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
listener := &OutboundListener{
|
||||
buffer: make(chan net.Conn, 4),
|
||||
done: done.New(),
|
||||
}
|
||||
|
||||
go func() {
|
||||
if err := c.server.Serve(listener); err != nil {
|
||||
newError("failed to start grpc server").Base(err).AtError().WriteToLog()
|
||||
}
|
||||
}()
|
||||
go listen(listener)
|
||||
|
||||
if err := c.ohm.RemoveHandler(context.Background(), c.tag); err != nil {
|
||||
newError("failed to remove existing handler").WriteToLog()
|
||||
|
@@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.33.0
|
||||
// protoc v4.23.1
|
||||
// protoc-gen-go v1.28.1
|
||||
// protoc v4.25.3
|
||||
// source: app/commander/config.proto
|
||||
|
||||
package commander
|
||||
@@ -29,6 +29,8 @@ type Config struct {
|
||||
|
||||
// Tag of the outbound handler that handles grpc connections.
|
||||
Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
|
||||
// Network address of commander grpc service.
|
||||
Listen string `protobuf:"bytes,3,opt,name=listen,proto3" json:"listen,omitempty"`
|
||||
// Services that supported by this server. All services must implement Service
|
||||
// interface.
|
||||
Service []*serial.TypedMessage `protobuf:"bytes,2,rep,name=service,proto3" json:"service,omitempty"`
|
||||
@@ -73,6 +75,13 @@ func (x *Config) GetTag() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Config) GetListen() string {
|
||||
if x != nil {
|
||||
return x.Listen
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Config) GetService() []*serial.TypedMessage {
|
||||
if x != nil {
|
||||
return x.Service
|
||||
@@ -127,20 +136,21 @@ var file_app_commander_config_proto_rawDesc = []byte{
|
||||
0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72,
|
||||
0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f,
|
||||
0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x22, 0x56, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a,
|
||||
0x6f, 0x74, 0x6f, 0x22, 0x6e, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a,
|
||||
0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12,
|
||||
0x3a, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
|
||||
0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73,
|
||||
0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||
0x67, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52,
|
||||
0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42,
|
||||
0x58, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74,
|
||||
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61,
|
||||
0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61,
|
||||
0x6e, 0x64, 0x65, 0x72, 0xaa, 0x02, 0x12, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e,
|
||||
0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x33,
|
||||
0x16, 0x0a, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69,
|
||||
0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79,
|
||||
0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76,
|
||||
0x69, 0x63, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x58, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x78,
|
||||
0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65,
|
||||
0x72, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
||||
0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61,
|
||||
0x70, 0x70, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0xaa, 0x02, 0x12, 0x58,
|
||||
0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65,
|
||||
0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
@@ -12,6 +12,10 @@ import "common/serial/typed_message.proto";
|
||||
message Config {
|
||||
// Tag of the outbound handler that handles grpc connections.
|
||||
string tag = 1;
|
||||
|
||||
// Network address of commander grpc service.
|
||||
string listen = 3;
|
||||
|
||||
// Services that supported by this server. All services must implement Service
|
||||
// interface.
|
||||
repeated xray.common.serial.TypedMessage service = 2;
|
||||
|
@@ -28,7 +28,7 @@ require (
|
||||
golang.org/x/sys v0.19.0
|
||||
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173
|
||||
google.golang.org/grpc v1.63.2
|
||||
google.golang.org/protobuf v1.33.0
|
||||
google.golang.org/protobuf v1.34.0
|
||||
gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489
|
||||
h12.io/socks v1.0.3
|
||||
lukechampine.com/blake3 v1.2.2
|
||||
|
@@ -279,8 +279,8 @@ google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
|
||||
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
|
||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4=
|
||||
google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
@@ -14,6 +14,7 @@ import (
|
||||
|
||||
type APIConfig struct {
|
||||
Tag string `json:"tag"`
|
||||
Listen string `json:"listen"`
|
||||
Services []string `json:"services"`
|
||||
}
|
||||
|
||||
@@ -42,6 +43,7 @@ func (c *APIConfig) Build() (*commander.Config, error) {
|
||||
|
||||
return &commander.Config{
|
||||
Tag: c.Tag,
|
||||
Listen: c.Listen,
|
||||
Service: services,
|
||||
}, nil
|
||||
}
|
||||
|
@@ -33,6 +33,80 @@ import (
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
)
|
||||
|
||||
func TestCommanderListenConfigurationItem(t *testing.T) {
|
||||
tcpServer := tcp.Server{
|
||||
MsgProcessor: xor,
|
||||
}
|
||||
dest, err := tcpServer.Start()
|
||||
common.Must(err)
|
||||
defer tcpServer.Close()
|
||||
|
||||
clientPort := tcp.PickPort()
|
||||
cmdPort := tcp.PickPort()
|
||||
clientConfig := &core.Config{
|
||||
App: []*serial.TypedMessage{
|
||||
serial.ToTypedMessage(&commander.Config{
|
||||
Tag: "api",
|
||||
Listen: fmt.Sprintf("127.0.0.1:%d", cmdPort),
|
||||
Service: []*serial.TypedMessage{
|
||||
serial.ToTypedMessage(&command.Config{}),
|
||||
},
|
||||
}),
|
||||
},
|
||||
Inbound: []*core.InboundHandlerConfig{
|
||||
{
|
||||
Tag: "d",
|
||||
ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
|
||||
PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(clientPort)}},
|
||||
Listen: net.NewIPOrDomain(net.LocalHostIP),
|
||||
}),
|
||||
ProxySettings: serial.ToTypedMessage(&dokodemo.Config{
|
||||
Address: net.NewIPOrDomain(dest.Address),
|
||||
Port: uint32(dest.Port),
|
||||
Networks: []net.Network{net.Network_TCP},
|
||||
}),
|
||||
},
|
||||
},
|
||||
Outbound: []*core.OutboundHandlerConfig{
|
||||
{
|
||||
Tag: "default-outbound",
|
||||
ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
servers, err := InitializeServerConfigs(clientConfig)
|
||||
common.Must(err)
|
||||
defer CloseAllServers(servers)
|
||||
|
||||
if err := testTCPConn(clientPort, 1024, time.Second*5)(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cmdConn, err := grpc.Dial(fmt.Sprintf("127.0.0.1:%d", cmdPort), grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock())
|
||||
common.Must(err)
|
||||
defer cmdConn.Close()
|
||||
|
||||
hsClient := command.NewHandlerServiceClient(cmdConn)
|
||||
resp, err := hsClient.RemoveInbound(context.Background(), &command.RemoveInboundRequest{
|
||||
Tag: "d",
|
||||
})
|
||||
common.Must(err)
|
||||
if resp == nil {
|
||||
t.Error("unexpected nil response")
|
||||
}
|
||||
|
||||
{
|
||||
_, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
||||
IP: []byte{127, 0, 0, 1},
|
||||
Port: int(clientPort),
|
||||
})
|
||||
if err == nil {
|
||||
t.Error("unexpected nil error")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommanderRemoveHandler(t *testing.T) {
|
||||
tcpServer := tcp.Server{
|
||||
MsgProcessor: xor,
|
||||
|
@@ -1,6 +1,6 @@
|
||||
.\" generated with Ronn-NG/v0.9.1
|
||||
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
||||
.TH "YASS_CLI" "1" "December 2023" ""
|
||||
.TH "YASS_CLI" "1" "May 2024" ""
|
||||
.SH "NAME"
|
||||
\fByass_cli\fR \- a lightweight and efficient, socks5/http forward proxy
|
||||
.SH "SYNOPSIS"
|
||||
@@ -63,7 +63,7 @@ Maximum number of accepted connection is \fInumber\fR\.
|
||||
Enable padding support\.
|
||||
.TP
|
||||
\fB\-\-use_ca_bundle_crt\fR
|
||||
Use internal ca\-bundle\.crt instead of system CA store\.
|
||||
Use builtin ca\-bundle\.crt instead of system CA store\.
|
||||
.TP
|
||||
\fB\-\-cacert\fR \fIfile\fR
|
||||
Tells where to use the specified certificate \fIfile\fR to verify the peer\.
|
||||
@@ -76,11 +76,17 @@ This option makes to skip the verification step and proceed without checking\.
|
||||
.TP
|
||||
\fB\-\-redir_mode\fR
|
||||
Enable TCP Redir mode support (Linux only)\.
|
||||
.TP
|
||||
\fB\-\-tls13_early_data\fR
|
||||
Enable 0RTTI Early Data\.
|
||||
.TP
|
||||
\fB\-\-enable_post_quantum_kyber\fR
|
||||
Enable post\-quantum secure TLS key encapsulation mechanism X25519Kyber768, based on a NIST standard (ML\-KEM)\.
|
||||
.SH "ENVIRONMENT VARIABLES"
|
||||
.TP
|
||||
\fBYASS_CA_BUNDLE\fR
|
||||
Use as the path of ca\-bundle\.crt file\. Same effect with \fB\-\-cacert\fR \fIfile\fR\.
|
||||
.SH "COPYRIGHT"
|
||||
Copyright (C) 2019\-2023 Chilledheart\. All rights reserved\.
|
||||
Copyright (C) 2019\-2024 Chilledheart\. All rights reserved\.
|
||||
.SH "SEE ALSO"
|
||||
\fBiptables\fR(8)
|
||||
|
@@ -77,7 +77,7 @@ See <https://github.com/Chilledheart/yass/wiki/Usage>.
|
||||
Enable padding support.
|
||||
|
||||
* `--use_ca_bundle_crt`:
|
||||
Use internal ca-bundle.crt instead of system CA store.
|
||||
Use builtin ca-bundle.crt instead of system CA store.
|
||||
|
||||
* `--cacert` _file_:
|
||||
Tells where to use the specified certificate _file_ to verify the peer.
|
||||
@@ -91,6 +91,12 @@ See <https://github.com/Chilledheart/yass/wiki/Usage>.
|
||||
* `--redir_mode`:
|
||||
Enable TCP Redir mode support (Linux only).
|
||||
|
||||
* `--tls13_early_data`:
|
||||
Enable 0RTTI Early Data.
|
||||
|
||||
* `--enable_post_quantum_kyber`:
|
||||
Enable post-quantum secure TLS key encapsulation mechanism X25519Kyber768, based on a NIST standard (ML-KEM).
|
||||
|
||||
## ENVIRONMENT VARIABLES
|
||||
|
||||
* `YASS_CA_BUNDLE`:
|
||||
@@ -98,7 +104,7 @@ See <https://github.com/Chilledheart/yass/wiki/Usage>.
|
||||
|
||||
## COPYRIGHT
|
||||
|
||||
Copyright (C) 2019-2023 Chilledheart. All rights reserved.
|
||||
Copyright (C) 2019-2024 Chilledheart. All rights reserved.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
.\" generated with Ronn-NG/v0.9.1
|
||||
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
||||
.TH "YASS_SEREVR" "1" "December 2023" ""
|
||||
.TH "YASS_SEREVR" "1" "May 2024" ""
|
||||
.SH "NAME"
|
||||
\fByass_serevr\fR \- a lightweight and efficient, socks5/http forward proxy
|
||||
.SH "SYNOPSIS"
|
||||
@@ -63,7 +63,7 @@ Maximum number of accepted connection is \fInumber\fR\.
|
||||
Enable padding support\.
|
||||
.TP
|
||||
\fB\-\-use_ca_bundle_crt\fR
|
||||
Use internal ca\-bundle\.crt instead of system CA store\.
|
||||
Use builtin ca\-bundle\.crt instead of system CA store\.
|
||||
.TP
|
||||
\fB\-\-cacert\fR \fIfile\fR
|
||||
Tells where to use the specified certificate \fIfile\fR to verify the peer\.
|
||||
@@ -96,6 +96,6 @@ If true, the Via header will not be added\.
|
||||
\fBYASS_CA_BUNDLE\fR
|
||||
Use as the path of ca\-bundle\.crt file\. Same effect with \fB\-\-cacert\fR \fIfile\fR\.
|
||||
.SH "COPYRIGHT"
|
||||
Copyright (C) 2019\-2023 Chilledheart\. All rights reserved\.
|
||||
Copyright (C) 2019\-2024 Chilledheart\. All rights reserved\.
|
||||
.SH "SEE ALSO"
|
||||
\fBopenssl\fR(1)
|
||||
|
@@ -76,7 +76,7 @@ See <https://github.com/Chilledheart/yass/wiki/Usage>.
|
||||
Enable padding support.
|
||||
|
||||
* `--use_ca_bundle_crt`:
|
||||
Use internal ca-bundle.crt instead of system CA store.
|
||||
Use builtin ca-bundle.crt instead of system CA store.
|
||||
|
||||
* `--cacert` _file_:
|
||||
Tells where to use the specified certificate _file_ to verify the peer.
|
||||
@@ -112,7 +112,7 @@ See <https://github.com/Chilledheart/yass/wiki/Usage>.
|
||||
|
||||
## COPYRIGHT
|
||||
|
||||
Copyright (C) 2019-2023 Chilledheart. All rights reserved.
|
||||
Copyright (C) 2019-2024 Chilledheart. All rights reserved.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
|
@@ -61,14 +61,18 @@ bool ReadConfig() {
|
||||
config_impl->Read("tcp_keep_alive_interval", &FLAGS_tcp_keep_alive_interval);
|
||||
|
||||
/* optional tls fields */
|
||||
config_impl->Read("certificate_chain_file", &FLAGS_certificate_chain_file);
|
||||
config_impl->Read("private_key_file", &FLAGS_private_key_file);
|
||||
config_impl->Read("private_key_password", &FLAGS_private_key_password, true);
|
||||
config_impl->Read("insecure_mode", &FLAGS_insecure_mode);
|
||||
config_impl->Read("cacert", &FLAGS_cacert);
|
||||
config_impl->Read("capath", &FLAGS_capath);
|
||||
config_impl->Read("certificate_chain_file", &FLAGS_certificate_chain_file);
|
||||
if (pType == YASS_SERVER) {
|
||||
config_impl->Read("private_key_file", &FLAGS_private_key_file);
|
||||
config_impl->Read("private_key_password", &FLAGS_private_key_password, true);
|
||||
}
|
||||
if (pType == YASS_CLIENT || pType == YASS_CLIENT_SLAVE) {
|
||||
config_impl->Read("insecure_mode", &FLAGS_insecure_mode);
|
||||
config_impl->Read("enable_post_quantum_kyber", &FLAGS_enable_post_quantum_kyber);
|
||||
}
|
||||
config_impl->Read("tls13_early_data", &FLAGS_tls13_early_data);
|
||||
config_impl->Read("enable_post_quantum_kyber", &FLAGS_enable_post_quantum_kyber);
|
||||
|
||||
/* close fields */
|
||||
config_impl->Close();
|
||||
@@ -122,14 +126,18 @@ bool SaveConfig() {
|
||||
all_fields_written &= config_impl->Write("tcp_keep_alive_idle_timeout", FLAGS_tcp_keep_alive_idle_timeout);
|
||||
all_fields_written &= config_impl->Write("tcp_keep_alive_interval", FLAGS_tcp_keep_alive_interval);
|
||||
|
||||
all_fields_written &= config_impl->Write("certificate_chain_file", FLAGS_certificate_chain_file);
|
||||
all_fields_written &= config_impl->Write("private_key_file", FLAGS_private_key_file);
|
||||
all_fields_written &= config_impl->Write("private_key_password", FLAGS_private_key_password);
|
||||
all_fields_written &= config_impl->Write("insecure_mode", FLAGS_insecure_mode);
|
||||
all_fields_written &= config_impl->Write("cacert", FLAGS_cacert);
|
||||
all_fields_written &= config_impl->Write("capath", FLAGS_capath);
|
||||
all_fields_written &= config_impl->Write("certificate_chain_file", FLAGS_certificate_chain_file);
|
||||
if (pType == YASS_SERVER) {
|
||||
all_fields_written &= config_impl->Write("private_key_file", FLAGS_private_key_file);
|
||||
all_fields_written &= config_impl->Write("private_key_password", FLAGS_private_key_password);
|
||||
}
|
||||
if (pType == YASS_CLIENT || pType == YASS_CLIENT_SLAVE) {
|
||||
all_fields_written &= config_impl->Write("insecure_mode", FLAGS_insecure_mode);
|
||||
all_fields_written &= config_impl->Write("enable_post_quantum_kyber", FLAGS_enable_post_quantum_kyber);
|
||||
}
|
||||
all_fields_written &= config_impl->Write("tls13_early_data", FLAGS_tls13_early_data);
|
||||
all_fields_written &= config_impl->Write("enable_post_quantum_kyber", FLAGS_enable_post_quantum_kyber);
|
||||
|
||||
all_fields_written &= config_impl->Close();
|
||||
|
||||
@@ -305,20 +313,35 @@ void SetClientUsageMessage(std::string_view exec_path) {
|
||||
--username <username> Server user
|
||||
--password <pasword> Server password
|
||||
--method <method> Specify encrypt of method to use
|
||||
--limit_rate Limits the rate of response transmission to a client. Uint can be (none), k, m.
|
||||
--padding_support Enable padding support
|
||||
--use_ca_bundle_crt Use builtin ca-bundle.crt instead of system CA store
|
||||
--cacert <file> Tells where to use the specified certificate file to verify the peer
|
||||
--capath <dir> Tells where to use the specified certificate dir to verify the peer
|
||||
--certificate_chain_file <file> Specify Certificate Chain File Path
|
||||
-k, --insecure_mode Skip the verification step and proceed without checking
|
||||
--tls13_early_data Enable 0RTTI Early Data
|
||||
--enable_post_quantum_kyber Enable post-quantum secure TLS key encapsulation mechanism X25519Kyber768, based on a NIST standard (ML-KEM)
|
||||
)"));
|
||||
}
|
||||
|
||||
void SetServerUsageMessage(std::string_view exec_path) {
|
||||
absl::SetProgramUsageMessage(absl::StrCat("Usage: ", Basename(exec_path), " [options ...]\n", R"(
|
||||
-K, --config <file> Read config from a file
|
||||
--certificate_chain_file <file> (TLS) Certificate Chain File Path
|
||||
--private_key_file <file> (TLS) Private Key File Path
|
||||
--private_key_password <password> (TLS) Private Key Password
|
||||
--server_host <host> Server on given host
|
||||
--server_port <port> Server on given port
|
||||
--username <username> Server user
|
||||
--password <pasword> Server password
|
||||
--method <method> Specify encrypt of method to use
|
||||
--limit_rate Limits the rate of response transmission to a client. Uint can be (none), k, m.
|
||||
--padding_support Enable padding support
|
||||
--use_ca_bundle_crt Use builtin ca-bundle.crt instead of system CA store
|
||||
--cacert <file> Tells where to use the specified certificate file to verify the peer
|
||||
--capath <dir> Tells where to use the specified certificate dir to verify the peer
|
||||
--certificate_chain_file <file> Specify Certificate Chain File Path
|
||||
--private_key_file <file> Specify Private Key File Path
|
||||
--private_key_password <password> Specify Private Key Password
|
||||
--tls13_early_data Enable 0RTTI Early Data
|
||||
)"));
|
||||
}
|
||||
|
||||
|
@@ -328,7 +328,7 @@ class ContentServer {
|
||||
|
||||
bssl::UniquePtr<BIO> bio(BIO_new_mem_buf(certificate_.data(), certificate_.size()));
|
||||
|
||||
static pem_password_cb* callback = [](char *buf, int size, int rwflag, void *userdata) -> int {
|
||||
static pem_password_cb* callback = [](char* buf, int size, int rwflag, void* userdata) -> int {
|
||||
std::string password = absl::GetFlag(FLAGS_private_key_password);
|
||||
/* not enough buffer size */
|
||||
if (size < (int)password.size()) {
|
||||
|
@@ -4,5 +4,7 @@
|
||||
"server_port": 443,
|
||||
"timeout": 0,
|
||||
"username": "username",
|
||||
"password": "password"
|
||||
"password": "password",
|
||||
"private_key_file": "/etc/yass/private_key.pem",
|
||||
"certificate_chain_file": "/etc/yass/pubkey.crt"
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@ Wants=network-online.target
|
||||
[Service]
|
||||
Type=exec
|
||||
User=root
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -logtostderr --private_key_file /etc/yass/private_key.pem --certificate_chain_file /etc/yass/pubkey.crt --user nobody --group nogroup
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -logtostderr --user nobody --group nogroup
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
RestartPreventExitStatus=23
|
||||
|
@@ -7,7 +7,7 @@ Wants=network-online.target
|
||||
Type=exec
|
||||
DynamicUser=yes
|
||||
LogsDirectory=yass-server
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -log_dir=/var/log/yass-server --private_key_file /etc/yass/private_key.pem --certificate_chain_file /etc/yass/pubkey.crt
|
||||
ExecStart=/usr/bin/yass_server -c /etc/yass/server.json -log_dir=/var/log/yass-server
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
|
@@ -7,5 +7,6 @@
|
||||
"server_port": 443,
|
||||
"timeout": 0,
|
||||
"username": "username",
|
||||
"password": "password"
|
||||
"password": "password",
|
||||
"enable_post_quantum_kyber": false
|
||||
}
|
||||
|
Reference in New Issue
Block a user