Update On Thu May 2 20:28:16 CEST 2024

This commit is contained in:
github-action[bot]
2024-05-02 20:28:16 +02:00
parent 706599b673
commit a70c467138
58 changed files with 532 additions and 284 deletions

1
.github/update.log vendored
View File

@@ -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

View File

@@ -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",

View File

@@ -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",

View File

@@ -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"
}

View File

@@ -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",

View File

@@ -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

View File

@@ -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"

View File

@@ -69,7 +69,8 @@
},
"fs": {
"exists": true,
"scope": ["$APPDATA/**", "$RESOURCE/../**"]
"readFile": true,
"scope": ["$APPDATA/**", "$RESOURCE/../**", "**"]
}
},
"windows": [],

View File

@@ -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>

View File

@@ -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"
}

View File

@@ -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": "Использование регулярных выражений"
}

View File

@@ -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": "使用正则表达式"
}

View File

@@ -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,

View File

@@ -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": "主题"

View File

@@ -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": "我的檔案",

View File

@@ -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 并选择配置

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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
}
}

View File

@@ -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 "缓冲区大小"

View File

@@ -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;

View File

@@ -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

View File

@@ -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_

View File

@@ -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

View File

@@ -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
}
}

View File

@@ -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 "缓冲区大小"

View File

@@ -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

View File

@@ -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"

View File

@@ -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",

View File

@@ -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,

View File

@@ -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()
}

View File

@@ -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,

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 cores DNS module (Recommended, if need routing Bypassing LAN and

View File

@@ -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"

View File

@@ -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()

View File

@@ -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 (

View File

@@ -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;

View File

@@ -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

View File

@@ -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=

View File

@@ -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
}

View File

@@ -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,

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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
)"));
}

View File

@@ -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()) {

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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

View File

@@ -7,5 +7,6 @@
"server_port": 443,
"timeout": 0,
"username": "username",
"password": "password"
"password": "password",
"enable_post_quantum_kyber": false
}