diff --git a/.github/update.log b/.github/update.log
index 396465bae8..3d7cd64617 100644
--- a/.github/update.log
+++ b/.github/update.log
@@ -598,3 +598,4 @@ Update On Fri Mar 22 19:26:11 CET 2024
Update On Sat Mar 23 19:27:23 CET 2024
Update On Sun Mar 24 19:31:12 CET 2024
Update On Mon Mar 25 19:35:07 CET 2024
+Update On Tue Mar 26 19:28:27 CET 2024
diff --git a/clash-meta/transport/vmess/http.go b/clash-meta/transport/vmess/http.go
index 6da9759e2f..b023fee41e 100644
--- a/clash-meta/transport/vmess/http.go
+++ b/clash-meta/transport/vmess/http.go
@@ -3,6 +3,7 @@ package vmess
import (
"bufio"
"bytes"
+ "errors"
"fmt"
"net"
"net/http"
@@ -54,6 +55,10 @@ func (hc *httpConn) Write(b []byte) (int, error) {
return hc.Conn.Write(b)
}
+ if len(hc.cfg.Path) == 0 {
+ return -1, errors.New("path is empty")
+ }
+
path := hc.cfg.Path[fastrand.Intn(len(hc.cfg.Path))]
host := hc.cfg.Host
if header := hc.cfg.Headers["Host"]; len(header) != 0 {
diff --git a/clash-nyanpasu/.github/ISSUE_TEMPLATE/bug_report.yaml b/clash-nyanpasu/.github/ISSUE_TEMPLATE/bug_report.yaml
index 9587e7b67d..2708ee51d1 100644
--- a/clash-nyanpasu/.github/ISSUE_TEMPLATE/bug_report.yaml
+++ b/clash-nyanpasu/.github/ISSUE_TEMPLATE/bug_report.yaml
@@ -87,7 +87,7 @@ body:
- type: input
id: version
attributes:
- label: Clash Nyapasu 版本号 / Clash Nyapasu
+ label: Clash Nyanpasu 版本号 / Clash Nyanpasu
description: 您可以在 **设置 - 关于** 或在 **托盘 - 更多** 中找到版本号 / You can find the version number in **Settings - About** or **Tray - More**
placeholder: 1.5.0
validations:
diff --git a/clash-nyanpasu/.github/ISSUE_TEMPLATE/feature_request.yaml b/clash-nyanpasu/.github/ISSUE_TEMPLATE/feature_request.yaml
index 84f07eed8b..bd352d5159 100644
--- a/clash-nyanpasu/.github/ISSUE_TEMPLATE/feature_request.yaml
+++ b/clash-nyanpasu/.github/ISSUE_TEMPLATE/feature_request.yaml
@@ -56,7 +56,7 @@ body:
- type: input
id: version
attributes:
- label: Clash Nyapasu 版本号 / Clash Nyapasu
+ label: Clash Nyanpasu 版本号 / Clash Nyanpasu
description: 您可以在设置 - 关于处找到版本号 / You can get version code in Settings - About
placeholder: 1.4.1
validations:
diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock
index fa8885a776..ed3f9028f6 100644
--- a/clash-nyanpasu/backend/Cargo.lock
+++ b/clash-nyanpasu/backend/Cargo.lock
@@ -4958,9 +4958,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.114"
+version = "1.0.115"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
dependencies = [
"indexmap 2.2.6",
"itoa 1.0.10",
diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json
index 057f90f6a4..f571fa8022 100644
--- a/clash-nyanpasu/package.json
+++ b/clash-nyanpasu/package.json
@@ -77,7 +77,7 @@
"ahooks": "3.7.10",
"axios": "1.6.8",
"dayjs": "1.11.10",
- "framer-motion": "11.0.20",
+ "framer-motion": "11.0.21",
"i18next": "23.10.1",
"lodash-es": "4.17.21",
"monaco-editor": "0.47.0",
@@ -103,11 +103,11 @@
"@types/js-cookie": "3.0.6",
"@types/lodash-es": "4.17.12",
"@types/node": "20.11.30",
- "@types/react": "18.2.70",
+ "@types/react": "18.2.71",
"@types/react-dom": "18.2.22",
"@types/react-transition-group": "4.4.10",
- "@typescript-eslint/eslint-plugin": "7.3.1",
- "@typescript-eslint/parser": "7.3.1",
+ "@typescript-eslint/eslint-plugin": "7.4.0",
+ "@typescript-eslint/parser": "7.4.0",
"@vitejs/plugin-react": "4.2.1",
"adm-zip": "0.5.12",
"autoprefixer": "10.4.19",
@@ -141,7 +141,7 @@
"prettier-plugin-toml": "2.0.1",
"sass": "1.72.0",
"shikiji": "0.10.2",
- "stylelint": "16.3.0",
+ "stylelint": "16.3.1",
"stylelint-config-html": "1.1.0",
"stylelint-config-recess-order": "5.0.0",
"stylelint-config-standard": "36.0.0",
diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml
index 3d8284b1a2..82cc2447a1 100644
--- a/clash-nyanpasu/pnpm-lock.yaml
+++ b/clash-nyanpasu/pnpm-lock.yaml
@@ -19,25 +19,25 @@ dependencies:
version: 3.2.2(react@18.2.0)
'@emotion/react':
specifier: 11.11.4
- version: 11.11.4(@types/react@18.2.70)(react@18.2.0)
+ version: 11.11.4(@types/react@18.2.71)(react@18.2.0)
'@emotion/styled':
specifier: 11.11.0
- version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0)
+ version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0)
'@juggle/resize-observer':
specifier: 3.4.0
version: 3.4.0
'@mui/icons-material':
specifier: 5.15.14
- version: 5.15.14(@mui/material@5.15.14)(@types/react@18.2.70)(react@18.2.0)
+ version: 5.15.14(@mui/material@5.15.14)(@types/react@18.2.71)(react@18.2.0)
'@mui/lab':
specifier: 5.0.0-alpha.169
- version: 5.0.0-alpha.169(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
+ version: 5.0.0-alpha.169(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
'@mui/material':
specifier: 5.15.14
- version: 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
+ version: 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
'@mui/x-data-grid':
specifier: 7.0.0
- version: 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
+ version: 7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
'@tauri-apps/api':
specifier: 1.5.3
version: 1.5.3
@@ -51,8 +51,8 @@ dependencies:
specifier: 1.11.10
version: 1.11.10
framer-motion:
- specifier: 11.0.20
- version: 11.0.20(react-dom@18.2.0)(react@18.2.0)
+ specifier: 11.0.21
+ version: 11.0.21(react-dom@18.2.0)(react@18.2.0)
i18next:
specifier: 23.10.1
version: 23.10.1
@@ -64,7 +64,7 @@ dependencies:
version: 0.47.0
mui-color-input:
specifier: 2.0.3
- version: 2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
+ version: 2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
react:
specifier: 18.2.0
version: 18.2.0
@@ -82,7 +82,7 @@ dependencies:
version: 14.1.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0)
react-markdown:
specifier: 9.0.1
- version: 9.0.1(@types/react@18.2.70)(react@18.2.0)
+ version: 9.0.1(@types/react@18.2.71)(react@18.2.0)
react-router-dom:
specifier: 6.22.3
version: 6.22.3(react-dom@18.2.0)(react@18.2.0)
@@ -125,8 +125,8 @@ devDependencies:
specifier: 20.11.30
version: 20.11.30
'@types/react':
- specifier: 18.2.70
- version: 18.2.70
+ specifier: 18.2.71
+ version: 18.2.71
'@types/react-dom':
specifier: 18.2.22
version: 18.2.22
@@ -134,11 +134,11 @@ devDependencies:
specifier: 4.4.10
version: 4.4.10
'@typescript-eslint/eslint-plugin':
- specifier: 7.3.1
- version: 7.3.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)(typescript@5.4.3)
+ specifier: 7.4.0
+ version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3)
'@typescript-eslint/parser':
- specifier: 7.3.1
- version: 7.3.1(eslint@8.57.0)(typescript@5.4.3)
+ specifier: 7.4.0
+ version: 7.4.0(eslint@8.57.0)(typescript@5.4.3)
'@vitejs/plugin-react':
specifier: 4.2.1
version: 4.2.1(vite@5.2.6)
@@ -180,7 +180,7 @@ devDependencies:
version: 8.0.0
eslint-plugin-import:
specifier: 2.29.1
- version: 2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)
+ version: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)
eslint-plugin-n:
specifier: 16.6.2
version: 16.6.2(eslint@8.57.0)
@@ -239,26 +239,26 @@ devDependencies:
specifier: 0.10.2
version: 0.10.2
stylelint:
- specifier: 16.3.0
- version: 16.3.0(typescript@5.4.3)
+ specifier: 16.3.1
+ version: 16.3.1(typescript@5.4.3)
stylelint-config-html:
specifier: 1.1.0
- version: 1.1.0(postcss-html@1.6.0)(stylelint@16.3.0)
+ version: 1.1.0(postcss-html@1.6.0)(stylelint@16.3.1)
stylelint-config-recess-order:
specifier: 5.0.0
- version: 5.0.0(stylelint@16.3.0)
+ version: 5.0.0(stylelint@16.3.1)
stylelint-config-standard:
specifier: 36.0.0
- version: 36.0.0(stylelint@16.3.0)
+ version: 36.0.0(stylelint@16.3.1)
stylelint-declaration-block-no-ignored-properties:
specifier: 2.8.0
- version: 2.8.0(stylelint@16.3.0)
+ version: 2.8.0(stylelint@16.3.1)
stylelint-order:
specifier: 6.0.4
- version: 6.0.4(stylelint@16.3.0)
+ version: 6.0.4(stylelint@16.3.1)
stylelint-scss:
specifier: 6.2.1
- version: 6.2.1(stylelint@16.3.0)
+ version: 6.2.1(stylelint@16.3.1)
telegraf:
specifier: 4.16.3
version: 4.16.3
@@ -829,7 +829,7 @@ packages:
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
dev: false
- /@emotion/react@11.11.4(@types/react@18.2.70)(react@18.2.0):
+ /@emotion/react@11.11.4(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==}
peerDependencies:
'@types/react': '*'
@@ -845,7 +845,7 @@ packages:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
'@emotion/utils': 1.2.1
'@emotion/weak-memoize': 0.3.1
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
hoist-non-react-statics: 3.3.2
react: 18.2.0
dev: false
@@ -864,7 +864,7 @@ packages:
resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
dev: false
- /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0):
+ /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==}
peerDependencies:
'@emotion/react': ^11.0.0-rc.0
@@ -877,11 +877,11 @@ packages:
'@babel/runtime': 7.23.8
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.1
- '@emotion/react': 11.11.4(@types/react@18.2.70)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.71)(react@18.2.0)
'@emotion/serialize': 1.1.3
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
'@emotion/utils': 1.2.1
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
react: 18.2.0
dev: false
@@ -1342,7 +1342,7 @@ packages:
debug: 4.3.4
espree: 9.6.1
globals: 13.24.0
- ignore: 5.3.0
+ ignore: 5.3.1
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -1455,7 +1455,7 @@ packages:
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
dev: false
- /@mui/base@5.0.0-beta.40(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0):
+ /@mui/base@5.0.0-beta.40(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1468,10 +1468,10 @@ packages:
dependencies:
'@babel/runtime': 7.23.9
'@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
- '@mui/types': 7.2.14(@types/react@18.2.70)
- '@mui/utils': 5.15.14(@types/react@18.2.70)(react@18.2.0)
+ '@mui/types': 7.2.14(@types/react@18.2.71)
+ '@mui/utils': 5.15.14(@types/react@18.2.71)(react@18.2.0)
'@popperjs/core': 2.11.8
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
clsx: 2.1.0
prop-types: 15.8.1
react: 18.2.0
@@ -1482,7 +1482,7 @@ packages:
resolution: {integrity: sha512-on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA==}
dev: false
- /@mui/icons-material@5.15.14(@mui/material@5.15.14)(@types/react@18.2.70)(react@18.2.0):
+ /@mui/icons-material@5.15.14(@mui/material@5.15.14)(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-vj/51k7MdFmt+XVw94sl30SCvGx6+wJLsNYjZRgxhS6y3UtnWnypMOsm3Kmg8TN+P0dqwsjy4/fX7B1HufJIhw==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1494,12 +1494,12 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.70
+ '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.71
react: 18.2.0
dev: false
- /@mui/lab@5.0.0-alpha.169(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0):
+ /@mui/lab@5.0.0-alpha.169(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-h6xe1K6ISKUbyxTDgdvql4qoDP6+q8ad5fg9nXQxGLUrIeT2jVrBuT/jRECSTufbnhzP+V5kulvYxaMfM8rEdA==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1518,21 +1518,21 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.4(@types/react@18.2.70)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0)
- '@mui/base': 5.0.0-beta.40(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
- '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
- '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react@18.2.0)
- '@mui/types': 7.2.14(@types/react@18.2.70)
- '@mui/utils': 5.15.14(@types/react@18.2.70)(react@18.2.0)
- '@types/react': 18.2.70
+ '@emotion/react': 11.11.4(@types/react@18.2.71)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/base': 5.0.0-beta.40(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/types': 7.2.14(@types/react@18.2.71)
+ '@mui/utils': 5.15.14(@types/react@18.2.71)(react@18.2.0)
+ '@types/react': 18.2.71
clsx: 2.1.0
prop-types: 15.8.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@mui/material@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0):
+ /@mui/material@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1550,14 +1550,14 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.23.9
- '@emotion/react': 11.11.4(@types/react@18.2.70)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0)
- '@mui/base': 5.0.0-beta.40(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.71)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/base': 5.0.0-beta.40(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
'@mui/core-downloads-tracker': 5.15.14
- '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react@18.2.0)
- '@mui/types': 7.2.14(@types/react@18.2.70)
- '@mui/utils': 5.15.14(@types/react@18.2.70)(react@18.2.0)
- '@types/react': 18.2.70
+ '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/types': 7.2.14(@types/react@18.2.71)
+ '@mui/utils': 5.15.14(@types/react@18.2.71)(react@18.2.0)
+ '@types/react': 18.2.71
'@types/react-transition-group': 4.4.10
clsx: 2.1.0
csstype: 3.1.3
@@ -1568,7 +1568,7 @@ packages:
react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
dev: false
- /@mui/private-theming@5.15.14(@types/react@18.2.70)(react@18.2.0):
+ /@mui/private-theming@5.15.14(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1579,8 +1579,8 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.24.1
- '@mui/utils': 5.15.14(@types/react@18.2.70)(react@18.2.0)
- '@types/react': 18.2.70
+ '@mui/utils': 5.15.14(@types/react@18.2.71)(react@18.2.0)
+ '@types/react': 18.2.71
prop-types: 15.8.1
react: 18.2.0
dev: false
@@ -1600,14 +1600,14 @@ packages:
dependencies:
'@babel/runtime': 7.24.1
'@emotion/cache': 11.11.0
- '@emotion/react': 11.11.4(@types/react@18.2.70)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.71)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0)
csstype: 3.1.3
prop-types: 15.8.1
react: 18.2.0
dev: false
- /@mui/system@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react@18.2.0):
+ /@mui/system@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1624,20 +1624,20 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.24.1
- '@emotion/react': 11.11.4(@types/react@18.2.70)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0)
- '@mui/private-theming': 5.15.14(@types/react@18.2.70)(react@18.2.0)
+ '@emotion/react': 11.11.4(@types/react@18.2.71)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/private-theming': 5.15.14(@types/react@18.2.71)(react@18.2.0)
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0)
- '@mui/types': 7.2.14(@types/react@18.2.70)
- '@mui/utils': 5.15.14(@types/react@18.2.70)(react@18.2.0)
- '@types/react': 18.2.70
+ '@mui/types': 7.2.14(@types/react@18.2.71)
+ '@mui/utils': 5.15.14(@types/react@18.2.71)(react@18.2.0)
+ '@types/react': 18.2.71
clsx: 2.1.0
csstype: 3.1.3
prop-types: 15.8.1
react: 18.2.0
dev: false
- /@mui/types@7.2.14(@types/react@18.2.70):
+ /@mui/types@7.2.14(@types/react@18.2.71):
resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -1645,10 +1645,10 @@ packages:
'@types/react':
optional: true
dependencies:
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
dev: false
- /@mui/utils@5.15.14(@types/react@18.2.70)(react@18.2.0):
+ /@mui/utils@5.15.14(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
engines: {node: '>=12.0.0'}
peerDependencies:
@@ -1660,13 +1660,13 @@ packages:
dependencies:
'@babel/runtime': 7.24.1
'@types/prop-types': 15.7.11
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
prop-types: 15.8.1
react: 18.2.0
react-is: 18.2.0
dev: false
- /@mui/x-data-grid@7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0):
+ /@mui/x-data-grid@7.0.0(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-Nwwfr+ot/di0oH/pVwIxKV2QD7QyUY/MKkTWRSKzQoJw2aiFQf1Usmvq9Fu1qsCsvMmqIFaToY7972p0cczRjw==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -1675,9 +1675,9 @@ packages:
react-dom: ^17.0.0 || ^18.0.0
dependencies:
'@babel/runtime': 7.24.1
- '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
- '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react@18.2.0)
- '@mui/utils': 5.15.14(@types/react@18.2.70)(react@18.2.0)
+ '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
+ '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/utils': 5.15.14(@types/react@18.2.71)(react@18.2.0)
clsx: 2.1.0
prop-types: 15.8.1
react: 18.2.0
@@ -2309,16 +2309,16 @@ packages:
/@types/react-dom@18.2.22:
resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==}
dependencies:
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
dev: true
/@types/react-transition-group@4.4.10:
resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
dependencies:
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
- /@types/react@18.2.70:
- resolution: {integrity: sha512-hjlM2hho2vqklPhopNkXkdkeq6Lv8WSZTpr7956zY+3WS5cfYUewtCzsJLsbW5dEv3lfSeQ4W14ZFeKC437JRQ==}
+ /@types/react@18.2.71:
+ resolution: {integrity: sha512-PxEsB9OjmQeYGffoWnYAd/r5FiJuUw2niFQHPc2v2idwh8wGPkkYzOHuinNJJY6NZqfoTCiOIizDOz38gYNsyw==}
dependencies:
'@types/prop-types': 15.7.11
'@types/scheduler': 0.16.2
@@ -2339,8 +2339,8 @@ packages:
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
dev: false
- /@typescript-eslint/eslint-plugin@7.3.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)(typescript@5.4.3):
- resolution: {integrity: sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==}
+ /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3):
+ resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
'@typescript-eslint/parser': ^7.0.0
@@ -2351,15 +2351,15 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/scope-manager': 7.3.1
- '@typescript-eslint/type-utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/visitor-keys': 7.3.1
+ '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/scope-manager': 7.4.0
+ '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/visitor-keys': 7.4.0
debug: 4.3.4
eslint: 8.57.0
graphemer: 1.4.0
- ignore: 5.3.0
+ ignore: 5.3.1
natural-compare: 1.4.0
semver: 7.6.0
ts-api-utils: 1.0.3(typescript@5.4.3)
@@ -2368,8 +2368,8 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.3):
- resolution: {integrity: sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==}
+ /@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.3):
+ resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -2378,10 +2378,10 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/scope-manager': 7.3.1
- '@typescript-eslint/types': 7.3.1
- '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3)
- '@typescript-eslint/visitor-keys': 7.3.1
+ '@typescript-eslint/scope-manager': 7.4.0
+ '@typescript-eslint/types': 7.4.0
+ '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3)
+ '@typescript-eslint/visitor-keys': 7.4.0
debug: 4.3.4
eslint: 8.57.0
typescript: 5.4.3
@@ -2389,16 +2389,16 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/scope-manager@7.3.1:
- resolution: {integrity: sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==}
+ /@typescript-eslint/scope-manager@7.4.0:
+ resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==}
engines: {node: ^18.18.0 || >=20.0.0}
dependencies:
- '@typescript-eslint/types': 7.3.1
- '@typescript-eslint/visitor-keys': 7.3.1
+ '@typescript-eslint/types': 7.4.0
+ '@typescript-eslint/visitor-keys': 7.4.0
dev: true
- /@typescript-eslint/type-utils@7.3.1(eslint@8.57.0)(typescript@5.4.3):
- resolution: {integrity: sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==}
+ /@typescript-eslint/type-utils@7.4.0(eslint@8.57.0)(typescript@5.4.3):
+ resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -2407,8 +2407,8 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3)
- '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3)
+ '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
debug: 4.3.4
eslint: 8.57.0
ts-api-utils: 1.0.3(typescript@5.4.3)
@@ -2417,13 +2417,13 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/types@7.3.1:
- resolution: {integrity: sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==}
+ /@typescript-eslint/types@7.4.0:
+ resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==}
engines: {node: ^18.18.0 || >=20.0.0}
dev: true
- /@typescript-eslint/typescript-estree@7.3.1(typescript@5.4.3):
- resolution: {integrity: sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==}
+ /@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3):
+ resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
typescript: '*'
@@ -2431,8 +2431,8 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/types': 7.3.1
- '@typescript-eslint/visitor-keys': 7.3.1
+ '@typescript-eslint/types': 7.4.0
+ '@typescript-eslint/visitor-keys': 7.4.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@@ -2444,8 +2444,8 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/utils@7.3.1(eslint@8.57.0)(typescript@5.4.3):
- resolution: {integrity: sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==}
+ /@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.4.3):
+ resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -2453,9 +2453,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.6
- '@typescript-eslint/scope-manager': 7.3.1
- '@typescript-eslint/types': 7.3.1
- '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3)
+ '@typescript-eslint/scope-manager': 7.4.0
+ '@typescript-eslint/types': 7.4.0
+ '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3)
eslint: 8.57.0
semver: 7.6.0
transitivePeerDependencies:
@@ -2463,11 +2463,11 @@ packages:
- typescript
dev: true
- /@typescript-eslint/visitor-keys@7.3.1:
- resolution: {integrity: sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==}
+ /@typescript-eslint/visitor-keys@7.4.0:
+ resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==}
engines: {node: ^18.18.0 || >=20.0.0}
dependencies:
- '@typescript-eslint/types': 7.3.1
+ '@typescript-eslint/types': 7.4.0
eslint-visitor-keys: 3.4.3
dev: true
@@ -3693,7 +3693,7 @@ packages:
eslint-plugin-promise: ^6.0.0
dependencies:
eslint: 8.57.0
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)
eslint-plugin-n: 16.6.2(eslint@8.57.0)
eslint-plugin-promise: 6.1.1(eslint@8.57.0)
dev: true
@@ -3704,7 +3704,7 @@ packages:
peerDependencies:
eslint-plugin-import: '>=1.4.0'
dependencies:
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)
dev: true
/eslint-import-resolver-node@0.3.9:
@@ -3717,7 +3717,7 @@ packages:
- supports-color
dev: true
- /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.3.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@@ -3738,7 +3738,7 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
debug: 3.2.7
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
@@ -3765,7 +3765,7 @@ packages:
htmlparser2: 9.1.0
dev: true
- /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0):
+ /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.4.0)(eslint@8.57.0):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
peerDependencies:
@@ -3775,7 +3775,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@@ -3784,7 +3784,7 @@ packages:
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.3.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.4.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
hasown: 2.0.0
is-core-module: 2.13.1
is-glob: 4.0.3
@@ -4190,8 +4190,8 @@ packages:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true
- /framer-motion@11.0.20(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-YSDmWznt3hpdERosbE0UAPYWoYhTnmQ0J1qWPsgpCia9NgY8Xsz5IpOiUEGGj/nzCAW29fSrWugeLRkdp5de7g==}
+ /framer-motion@11.0.21(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-blcaJ0LJM2y7AB0c45ijbjtUsoXTga+aJpRWGO/qYLUcpG0dLu2aKBryqfgp5UZ4uXiiZ8UA63q6GLzCK9oZ4Q==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0
@@ -5634,7 +5634,7 @@ packages:
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- /mui-color-input@2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0):
+ /mui-color-input@2.0.3(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-rAd040qQ0Y+8dk4gE8kkCiJ/vCgA0j4vv1quJ43BfORTFE3uHarHj0xY1Vo9CPbojtx1f5vW+CjckYPRIZPIRg==}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -5648,10 +5648,10 @@ packages:
optional: true
dependencies:
'@ctrl/tinycolor': 4.0.3
- '@emotion/react': 11.11.4(@types/react@18.2.70)(react@18.2.0)
- '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.70)(react@18.2.0)
- '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.70
+ '@emotion/react': 11.11.4(@types/react@18.2.71)(react@18.2.0)
+ '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.71)(react@18.2.0)
+ '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.71)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.71
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
@@ -6181,14 +6181,14 @@ packages:
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
dev: false
- /react-markdown@9.0.1(@types/react@18.2.70)(react@18.2.0):
+ /react-markdown@9.0.1(@types/react@18.2.71)(react@18.2.0):
resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==}
peerDependencies:
'@types/react': '>=18'
react: '>=18'
dependencies:
'@types/hast': 3.0.4
- '@types/react': 18.2.70
+ '@types/react': 18.2.71
devlop: 1.1.0
hast-util-to-jsx-runtime: 2.3.0
html-url-attributes: 3.0.0
@@ -6820,7 +6820,7 @@ packages:
inline-style-parser: 0.2.2
dev: false
- /stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.3.0):
+ /stylelint-config-html@1.1.0(postcss-html@1.6.0)(stylelint@16.3.1):
resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==}
engines: {node: ^12 || >=14}
peerDependencies:
@@ -6828,57 +6828,57 @@ packages:
stylelint: '>=14.0.0'
dependencies:
postcss-html: 1.6.0
- stylelint: 16.3.0(typescript@5.4.3)
+ stylelint: 16.3.1(typescript@5.4.3)
dev: true
- /stylelint-config-recess-order@5.0.0(stylelint@16.3.0):
+ /stylelint-config-recess-order@5.0.0(stylelint@16.3.1):
resolution: {integrity: sha512-D+/Got844O96No2mj/H2NhLjj555iKAy/Mea+JCerfKB9TBKQW3/IudSVkTCxE4QiRDLldfH15x6FH1D1Anjhw==}
peerDependencies:
stylelint: '>=16'
dependencies:
- stylelint: 16.3.0(typescript@5.4.3)
- stylelint-order: 6.0.4(stylelint@16.3.0)
+ stylelint: 16.3.1(typescript@5.4.3)
+ stylelint-order: 6.0.4(stylelint@16.3.1)
dev: true
- /stylelint-config-recommended@14.0.0(stylelint@16.3.0):
+ /stylelint-config-recommended@14.0.0(stylelint@16.3.1):
resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==}
engines: {node: '>=18.12.0'}
peerDependencies:
stylelint: ^16.0.0
dependencies:
- stylelint: 16.3.0(typescript@5.4.3)
+ stylelint: 16.3.1(typescript@5.4.3)
dev: true
- /stylelint-config-standard@36.0.0(stylelint@16.3.0):
+ /stylelint-config-standard@36.0.0(stylelint@16.3.1):
resolution: {integrity: sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==}
engines: {node: '>=18.12.0'}
peerDependencies:
stylelint: ^16.1.0
dependencies:
- stylelint: 16.3.0(typescript@5.4.3)
- stylelint-config-recommended: 14.0.0(stylelint@16.3.0)
+ stylelint: 16.3.1(typescript@5.4.3)
+ stylelint-config-recommended: 14.0.0(stylelint@16.3.1)
dev: true
- /stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.3.0):
+ /stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.3.1):
resolution: {integrity: sha512-Ws8Cav7Y+SPN0JsV407LrnNXWOrqGjxShf+37GBtnU/C58Syve9c0+I/xpLcFOosST3ternykn3Lp77f3ITnFw==}
engines: {node: '>=6'}
peerDependencies:
stylelint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
dependencies:
- stylelint: 16.3.0(typescript@5.4.3)
+ stylelint: 16.3.1(typescript@5.4.3)
dev: true
- /stylelint-order@6.0.4(stylelint@16.3.0):
+ /stylelint-order@6.0.4(stylelint@16.3.1):
resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==}
peerDependencies:
stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1
dependencies:
postcss: 8.4.38
postcss-sorting: 8.0.2(postcss@8.4.38)
- stylelint: 16.3.0(typescript@5.4.3)
+ stylelint: 16.3.1(typescript@5.4.3)
dev: true
- /stylelint-scss@6.2.1(stylelint@16.3.0):
+ /stylelint-scss@6.2.1(stylelint@16.3.1):
resolution: {integrity: sha512-ZoGLbVb1keZYRVGQlhB8G6sZOoNqw61whzzzGFWp05N12ErqLFfBv3JPrXiMLZaW98sBS7K/vUQhRnvUj4vwdw==}
engines: {node: '>=18.12.0'}
peerDependencies:
@@ -6889,11 +6889,11 @@ packages:
postcss-resolve-nested-selector: 0.1.1
postcss-selector-parser: 6.0.15
postcss-value-parser: 4.2.0
- stylelint: 16.3.0(typescript@5.4.3)
+ stylelint: 16.3.1(typescript@5.4.3)
dev: true
- /stylelint@16.3.0(typescript@5.4.3):
- resolution: {integrity: sha512-hqC6xNTbQ5HRGQXfIW4HwXcx09raIFz4W4XFbraeqWqYRVVY/ibYvI0dsu0ORMQY8re2bpDdCAeIa2cm+QJ4Sw==}
+ /stylelint@16.3.1(typescript@5.4.3):
+ resolution: {integrity: sha512-/JOwQnBvxEKOT2RtNgGpBVXnCSMBgKOL2k7w0K52htwCyJls4+cHvc4YZgXlVoAZS9QJd2DgYAiRnja96pTgxw==}
engines: {node: '>=18.12.0'}
hasBin: true
dependencies:
diff --git a/clashn/clashN/clashN/App.xaml.cs b/clashn/clashN/clashN/App.xaml.cs
index f98231f62e..810215366d 100644
--- a/clashn/clashN/clashN/App.xaml.cs
+++ b/clashn/clashN/clashN/App.xaml.cs
@@ -20,7 +20,6 @@ namespace ClashN
if (!bCreatedNew)
{
ProgramStarted.Set();
- App.Current.Shutdown();
Environment.Exit(-1);
return;
}
@@ -65,7 +64,6 @@ namespace ClashN
if (ConfigProc.LoadConfig(ref _config) != 0)
{
UI.ShowWarning($"Loading GUI configuration file is abnormal,please restart the application{Environment.NewLine}加载GUI配置文件异常,请重启应用");
- Application.Current.Shutdown();
Environment.Exit(0);
return;
}
diff --git a/clashn/clashN/clashN/ViewModels/MainWindowViewModel.cs b/clashn/clashN/clashN/ViewModels/MainWindowViewModel.cs
index 38ca6a05b2..9ee78c749f 100644
--- a/clashn/clashN/clashN/ViewModels/MainWindowViewModel.cs
+++ b/clashn/clashN/clashN/ViewModels/MainWindowViewModel.cs
@@ -8,6 +8,7 @@ using NHotkey;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using Splat;
+using System.Diagnostics;
using System.Drawing;
using System.Reactive;
using System.Reactive.Linq;
@@ -253,8 +254,8 @@ namespace ClashN.ViewModels
catch { }
finally
{
- Application.Current.Shutdown();
Environment.Exit(0);
+ Process.GetCurrentProcess().Kill();
}
}
diff --git a/clashn/clashN/clashN/clashN.csproj b/clashn/clashN/clashN/clashN.csproj
index c9fa811000..83a8dbd397 100644
--- a/clashn/clashN/clashN/clashN.csproj
+++ b/clashn/clashN/clashN/clashN.csproj
@@ -9,7 +9,7 @@
enable
ClashN.ico
Copyright © 2019-2024 (GPLv3)
- 2.20
+ 2.21
7.0
@@ -22,11 +22,11 @@
-
+
-
+
diff --git a/echo/internal/web/templates/index.html b/echo/internal/web/templates/index.html
index e4b32609d7..824336ad99 100644
--- a/echo/internal/web/templates/index.html
+++ b/echo/internal/web/templates/index.html
@@ -58,7 +58,7 @@
Debug
- Current Connections
diff --git a/hysteria/README.md b/hysteria/README.md
index f6c2171ac0..f8521af69c 100644
--- a/hysteria/README.md
+++ b/hysteria/README.md
@@ -23,23 +23,23 @@
-
🛠️ Packed to the gills
-
Expansive range of modes including SOCKS5, HTTP proxy, TCP/UDP forwarding, Linux TProxy - not to mention additional features continually being added.
+
🛠️ Jack of all trades
+
Wide range of modes including SOCKS5, HTTP Proxy, TCP/UDP Forwarding, Linux TProxy, TUN - with more features being added constantly.
-
⚡ Lightning fast
-
Powered by a custom QUIC protocol, Hysteria delivers unparalleled performance over even the most unreliable and lossy networks.
+
⚡ Blazing fast
+
Powered by a customized QUIC protocol, Hysteria is designed to deliver unparalleled performance over unreliable and lossy networks.
✊ Censorship resistant
-
Our protocol is designed to masquerade as standard HTTP/3 traffic, making it very difficult to detect and block without widespread collateral damage.
+
The protocol masquerades as standard HTTP/3 traffic, making it very difficult for censors to detect and block without widespread collateral damage.
💻 Cross-platform
-
We have builds for all major platforms and architectures. Deploy anywhere & use everywhere.
+
We have builds for every major platform and architecture. Deploy anywhere & use everywhere. Not to mention the long list of 3rd party apps.
@@ -48,8 +48,8 @@
-
🤗 Open standards
-
We have well-documented specifications and code for developers to contribute and build their own apps.
+
🤗 Cards on the table
+
We have well-documented specifications and code for developers to contribute and build their own apps. And a helpful community, too.
diff --git a/lede/package/lean/vsftpd-alt/Makefile b/lede/package/lean/vsftpd-alt/Makefile
index 860193937e..0d3cded03f 100644
--- a/lede/package/lean/vsftpd-alt/Makefile
+++ b/lede/package/lean/vsftpd-alt/Makefile
@@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk
-PKG_NAME:=vsftpd-alt
+PKG_NAME:=vsftpd-alt
PKG_VERSION:=3.0.5
PKG_RELEASE:=2
@@ -15,6 +15,7 @@ PKG_SOURCE:=vsftpd-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://security.appspot.com/downloads/
PKG_HASH:=26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3
PKG_LICENSE:=GPLv2
+PKG_CPE_ID:=cpe:/a:vsftpd_project:vsftpd
BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/vsftpd-$(PKG_VERSION)
@@ -65,7 +66,7 @@ define Build/Compile
$(SED) 's/-lcrypt -lnsl/$(NLSSTRING)/' $(PKG_BUILD_DIR)/Makefile
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS)" \
+ CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
vsftpd
endef
diff --git a/mihomo/transport/vmess/http.go b/mihomo/transport/vmess/http.go
index 6da9759e2f..b023fee41e 100644
--- a/mihomo/transport/vmess/http.go
+++ b/mihomo/transport/vmess/http.go
@@ -3,6 +3,7 @@ package vmess
import (
"bufio"
"bytes"
+ "errors"
"fmt"
"net"
"net/http"
@@ -54,6 +55,10 @@ func (hc *httpConn) Write(b []byte) (int, error) {
return hc.Conn.Write(b)
}
+ if len(hc.cfg.Path) == 0 {
+ return -1, errors.New("path is empty")
+ }
+
path := hc.cfg.Path[fastrand.Intn(len(hc.cfg.Path))]
host := hc.cfg.Host
if header := hc.cfg.Headers["Host"]; len(header) != 0 {
diff --git a/openwrt-packages/ddns-go/Makefile b/openwrt-packages/ddns-go/Makefile
index cc63e74cf4..5b1d5a418b 100644
--- a/openwrt-packages/ddns-go/Makefile
+++ b/openwrt-packages/ddns-go/Makefile
@@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ddns-go
-PKG_VERSION:=6.2.2
+PKG_VERSION:=6.3.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=9c1ccfe60ea1e6fc81d2905b5ef7c7bd403a1858de4f0d3aed81e57bce8cfaa0
+PKG_HASH:=307a0b045f3631b0f67d566903b80d0ecdd47c8159000ee0d93debe3c59097a0
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
diff --git a/openwrt-packages/luci-theme-tomato/Makefile b/openwrt-packages/luci-theme-tomato/Makefile
index 2d67d925a5..0e729c8c58 100644
--- a/openwrt-packages/luci-theme-tomato/Makefile
+++ b/openwrt-packages/luci-theme-tomato/Makefile
@@ -1,5 +1,6 @@
# LuCI Material Theme
# Copyright 2015 Lutty Yang
+#
# Licensed under the Apache License v2.0
# http://www.apache.org/licenses/LICENSE-2.0
diff --git a/sing-box/.goreleaser.fury.yaml b/sing-box/.goreleaser.fury.yaml
index 1d0f16e19b..b5187f0ec7 100644
--- a/sing-box/.goreleaser.fury.yaml
+++ b/sing-box/.goreleaser.fury.yaml
@@ -60,6 +60,7 @@ nfpms:
- id: package_beta
<<: *template
package_name: sing-box-beta
+ file_name_template: '{{ .ProjectName }}-beta_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}'
formats:
- deb
- rpm
@@ -71,10 +72,9 @@ furies:
- account: sagernet
ids:
- package
- skip: |-
- {{ eq .Prerelease "" }}
+ skip: "{{ .Prerelease }}"
- account: sagernet
ids:
- package_beta
- skip: |-
- {{ ne .Prerelease "" }}
+ skip: "{{ not .Prerelease }}"
+
diff --git a/sing-box/docs/changelog.md b/sing-box/docs/changelog.md
index 2e6478f6d8..4935eb880d 100644
--- a/sing-box/docs/changelog.md
+++ b/sing-box/docs/changelog.md
@@ -2,7 +2,7 @@
icon: material/alert-decagram
---
-#### 1.9.0-rc.2
+#### 1.9.0-rc.3
* Fixes and improvements
diff --git a/sing-box/go.mod b/sing-box/go.mod
index 9f63c22ccb..0b529d9531 100644
--- a/sing-box/go.mod
+++ b/sing-box/go.mod
@@ -26,7 +26,7 @@ require (
github.com/sagernet/gvisor v0.0.0-20240315080113-799fb6b6d311
github.com/sagernet/quic-go v0.42.0-beta.2
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
- github.com/sagernet/sing v0.4.0-beta.5
+ github.com/sagernet/sing v0.4.0-beta.6
github.com/sagernet/sing-dns v0.2.0-beta.16
github.com/sagernet/sing-mux v0.2.0
github.com/sagernet/sing-quic v0.1.9-beta.3
diff --git a/sing-box/go.sum b/sing-box/go.sum
index 4a861eb698..69a7daf9d5 100644
--- a/sing-box/go.sum
+++ b/sing-box/go.sum
@@ -109,8 +109,8 @@ github.com/sagernet/quic-go v0.42.0-beta.2/go.mod h1:lf8OYop+fMxIlrfM/ZHpENt/7ZD
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
-github.com/sagernet/sing v0.4.0-beta.5 h1:2RXOU+Hrb5gEOFA+S6Ji+7egLoWj6QMAFpbO1SQ3XTM=
-github.com/sagernet/sing v0.4.0-beta.5/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI=
+github.com/sagernet/sing v0.4.0-beta.6 h1:z7plSB0lWX2vt3e5UYYNQi1+bNqfxU9uh1nWlPZFwj8=
+github.com/sagernet/sing v0.4.0-beta.6/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI=
github.com/sagernet/sing-dns v0.2.0-beta.16 h1:bzd4B8eHD7/WO3HrYknvgE8A56/R3n5oXBjNF97iPzQ=
github.com/sagernet/sing-dns v0.2.0-beta.16/go.mod h1:XU6Vqr6aHcMz/34Fcv8jmXpRCEuShzW+B7Qg1Xe1nxY=
github.com/sagernet/sing-mux v0.2.0 h1:4C+vd8HztJCWNYfufvgL49xaOoOHXty2+EAjnzN3IYo=
diff --git a/sing-box/ntp/service.go b/sing-box/ntp/service.go
deleted file mode 100644
index 70a41c0eda..0000000000
--- a/sing-box/ntp/service.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package ntp
-
-import (
- "context"
- "os"
- "time"
-
- "github.com/sagernet/sing-box/adapter"
- "github.com/sagernet/sing-box/common/dialer"
- "github.com/sagernet/sing-box/common/settings"
- C "github.com/sagernet/sing-box/constant"
- "github.com/sagernet/sing-box/option"
- "github.com/sagernet/sing/common"
- E "github.com/sagernet/sing/common/exceptions"
- "github.com/sagernet/sing/common/logger"
- M "github.com/sagernet/sing/common/metadata"
- N "github.com/sagernet/sing/common/network"
- "github.com/sagernet/sing/common/ntp"
-)
-
-var _ ntp.TimeService = (*Service)(nil)
-
-type Service struct {
- ctx context.Context
- cancel common.ContextCancelCauseFunc
- server M.Socksaddr
- writeToSystem bool
- dialer N.Dialer
- logger logger.Logger
- ticker *time.Ticker
- clockOffset time.Duration
-}
-
-func NewService(ctx context.Context, router adapter.Router, logger logger.Logger, options option.NTPOptions) (*Service, error) {
- ctx, cancel := common.ContextWithCancelCause(ctx)
- server := M.ParseSocksaddrHostPort(options.Server, options.ServerPort)
- if server.Port == 0 {
- server.Port = 123
- }
- var interval time.Duration
- if options.Interval > 0 {
- interval = time.Duration(options.Interval)
- } else {
- interval = 30 * time.Minute
- }
- outboundDialer, err := dialer.New(router, options.DialerOptions)
- if err != nil {
- return nil, err
- }
- return &Service{
- ctx: ctx,
- cancel: cancel,
- server: server,
- writeToSystem: options.WriteToSystem,
- dialer: outboundDialer,
- logger: logger,
- ticker: time.NewTicker(interval),
- }, nil
-}
-
-func (s *Service) Start() error {
- err := s.update()
- if err != nil {
- return E.Cause(err, "initialize time")
- }
- s.logger.Info("updated time: ", s.TimeFunc()().Local().Format(C.TimeLayout))
- go s.loopUpdate()
- return nil
-}
-
-func (s *Service) Close() error {
- s.ticker.Stop()
- s.cancel(os.ErrClosed)
- return nil
-}
-
-func (s *Service) TimeFunc() func() time.Time {
- return func() time.Time {
- return time.Now().Add(s.clockOffset)
- }
-}
-
-func (s *Service) loopUpdate() {
- for {
- select {
- case <-s.ctx.Done():
- return
- case <-s.ticker.C:
- }
- err := s.update()
- if err == nil {
- s.logger.Debug("updated time: ", s.TimeFunc()().Local().Format(C.TimeLayout))
- } else {
- s.logger.Warn("update time: ", err)
- }
- }
-}
-
-func (s *Service) update() error {
- response, err := ntp.Exchange(s.ctx, s.dialer, s.server)
- if err != nil {
- return err
- }
- s.clockOffset = response.ClockOffset
- if s.writeToSystem {
- writeErr := settings.SetSystemTime(s.TimeFunc()())
- if writeErr != nil {
- s.logger.Warn("write time to system: ", writeErr)
- }
- }
- return nil
-}
diff --git a/sing-box/option/ntp.go b/sing-box/option/ntp.go
index 000a658c2f..0bd2489ac2 100644
--- a/sing-box/option/ntp.go
+++ b/sing-box/option/ntp.go
@@ -2,9 +2,8 @@ package option
type NTPOptions struct {
Enabled bool `json:"enabled,omitempty"`
- Server string `json:"server,omitempty"`
- ServerPort uint16 `json:"server_port,omitempty"`
Interval Duration `json:"interval,omitempty"`
WriteToSystem bool `json:"write_to_system,omitempty"`
+ ServerOptions
DialerOptions
}
diff --git a/sing-box/route/router.go b/sing-box/route/router.go
index f1761c4ea7..2283aa8713 100644
--- a/sing-box/route/router.go
+++ b/sing-box/route/router.go
@@ -23,7 +23,6 @@ import (
C "github.com/sagernet/sing-box/constant"
"github.com/sagernet/sing-box/experimental/libbox/platform"
"github.com/sagernet/sing-box/log"
- "github.com/sagernet/sing-box/ntp"
"github.com/sagernet/sing-box/option"
"github.com/sagernet/sing-box/outbound"
"github.com/sagernet/sing-box/transport/fakeip"
@@ -40,7 +39,7 @@ import (
F "github.com/sagernet/sing/common/format"
M "github.com/sagernet/sing/common/metadata"
N "github.com/sagernet/sing/common/network"
- serviceNTP "github.com/sagernet/sing/common/ntp"
+ "github.com/sagernet/sing/common/ntp"
"github.com/sagernet/sing/common/task"
"github.com/sagernet/sing/common/uot"
"github.com/sagernet/sing/common/winpowrprof"
@@ -363,11 +362,19 @@ func NewRouter(
}
if ntpOptions.Enabled {
- timeService, err := ntp.NewService(ctx, router, logFactory.NewLogger("ntp"), ntpOptions)
+ ntpDialer, err := dialer.New(router, ntpOptions.DialerOptions)
if err != nil {
- return nil, err
+ return nil, E.Cause(err, "create NTP service")
}
- service.ContextWith[serviceNTP.TimeService](ctx, timeService)
+ timeService := ntp.NewService(ntp.Options{
+ Context: ctx,
+ Dialer: ntpDialer,
+ Logger: logFactory.NewLogger("ntp"),
+ Server: ntpOptions.ServerOptions.Build(),
+ Interval: time.Duration(ntpOptions.Interval),
+ WriteToSystem: ntpOptions.WriteToSystem,
+ })
+ service.MustRegister[ntp.TimeService](ctx, timeService)
router.timeService = timeService
}
return router, nil
diff --git a/small/shadowsocksr-libev/patches/104-fix-use-after-free.patch b/small/shadowsocksr-libev/patches/104-fix-use-after-free.patch
new file mode 100644
index 0000000000..d00d549e32
--- /dev/null
+++ b/small/shadowsocksr-libev/patches/104-fix-use-after-free.patch
@@ -0,0 +1,15 @@
+--- a/server/server.c
++++ b/server/server.c
+@@ -1942,11 +1942,11 @@ main(int argc, char **argv)
+ text = (char*)malloc(strlen(protocol) - 11);
+ memcpy(text, protocol, strlen(protocol) - 11);
+ int length = strlen(protocol) - 11;
+- free(protocol);
+ obfs = (char*)malloc(length);
+ memset(protocol, 0x00, length);
+ memcpy(protocol, text, length);
+ LOGI("protocol compatible enable, %s", protocol);
++ free(protocol);
+ free(text);
+ protocol_compatible = 1;
+ }
diff --git a/small/trojan-plus/Makefile b/small/trojan-plus/Makefile
index 6cdbf3046c..0206b6982a 100644
--- a/small/trojan-plus/Makefile
+++ b/small/trojan-plus/Makefile
@@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=trojan-plus
-PKG_VERSION:=10.0.3
+PKG_VERSION:=10.0.3
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/peter-tank/trojan-plus/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=0240f5b4d2a37074ab33b414a8b60d5f5b4778bd226586a2bd9a5c87a12896ed
+PKG_HASH:=0240f5b4d2a37074ab33b414a8b60d5f5b4778bd226586a2bd9a5c87a12896ed
PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=openssl
diff --git a/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj b/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj
index c29258e078..b1440e239d 100644
--- a/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj
+++ b/v2rayn/v2rayN/ProtosLib/ProtosLib.csproj
@@ -9,7 +9,7 @@
-
+
all
diff --git a/v2rayn/v2rayN/v2rayN/App.xaml.cs b/v2rayn/v2rayN/v2rayN/App.xaml.cs
index 0508749494..b61aad7715 100644
--- a/v2rayn/v2rayN/v2rayN/App.xaml.cs
+++ b/v2rayn/v2rayN/v2rayN/App.xaml.cs
@@ -27,14 +27,13 @@ namespace v2rayN
///
protected override void OnStartup(StartupEventArgs e)
{
- var exePathKey = Utile.GetMD5(Utile.GetExePath());
+ var exePathKey = Utils.GetMD5(Utils.GetExePath());
var rebootas = (e.Args ?? new string[] { }).Any(t => t == Global.RebootAs);
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, exePathKey, out bool bCreatedNew);
if (!rebootas && !bCreatedNew)
{
ProgramStarted.Set();
- Current.Shutdown();
Environment.Exit(0);
return;
}
@@ -42,7 +41,7 @@ namespace v2rayN
Logging.Setup();
Init();
Logging.LoggingEnabled(_config.guiItem.enableLog);
- Logging.SaveLog($"v2rayN start up | {Utile.GetVersion()} | {Utile.GetExePath()}");
+ Logging.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}");
Logging.ClearLogs();
Thread.CurrentThread.CurrentUICulture = new(_config.uiItem.currentLanguage);
@@ -55,7 +54,6 @@ namespace v2rayN
if (ConfigHandler.LoadConfig(ref _config) != 0)
{
UI.Show($"Loading GUI configuration file is abnormal,please restart the application{Environment.NewLine}加载GUI配置文件异常,请重启应用");
- Application.Current.Shutdown();
Environment.Exit(0);
return;
}
diff --git a/v2rayn/v2rayN/v2rayN/Common/DownloaderHelper.cs b/v2rayn/v2rayN/v2rayN/Common/DownloaderHelper.cs
index 9f4fe96386..ddfe381160 100644
--- a/v2rayn/v2rayN/v2rayN/Common/DownloaderHelper.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/DownloaderHelper.cs
@@ -11,7 +11,7 @@ namespace v2rayN
public async Task DownloadStringAsync(IWebProxy? webProxy, string url, string? userAgent, int timeout)
{
- if (Utile.IsNullOrEmpty(url))
+ if (Utils.IsNullOrEmpty(url))
{
return null;
}
@@ -19,9 +19,9 @@ namespace v2rayN
Uri uri = new(url);
//Authorization Header
var headers = new WebHeaderCollection();
- if (!Utile.IsNullOrEmpty(uri.UserInfo))
+ if (!Utils.IsNullOrEmpty(uri.UserInfo))
{
- headers.Add(HttpRequestHeader.Authorization, "Basic " + Utile.Base64Encode(uri.UserInfo));
+ headers.Add(HttpRequestHeader.Authorization, "Basic " + Utils.Base64Encode(uri.UserInfo));
}
var downloadOpt = new DownloadConfiguration()
@@ -57,7 +57,7 @@ namespace v2rayN
public async Task DownloadDataAsync4Speed(IWebProxy webProxy, string url, IProgress progress, int timeout)
{
- if (Utile.IsNullOrEmpty(url))
+ if (Utils.IsNullOrEmpty(url))
{
throw new ArgumentNullException(nameof(url));
}
@@ -120,11 +120,11 @@ namespace v2rayN
public async Task DownloadFileAsync(IWebProxy? webProxy, string url, string fileName, IProgress progress, int timeout)
{
- if (Utile.IsNullOrEmpty(url))
+ if (Utils.IsNullOrEmpty(url))
{
throw new ArgumentNullException(nameof(url));
}
- if (Utile.IsNullOrEmpty(fileName))
+ if (Utils.IsNullOrEmpty(fileName))
{
throw new ArgumentNullException(nameof(fileName));
}
diff --git a/v2rayn/v2rayN/v2rayN/Common/FileManager.cs b/v2rayn/v2rayN/v2rayN/Common/FileManager.cs
index 6fc6a21cb1..b721f5dbb3 100644
--- a/v2rayn/v2rayN/v2rayN/Common/FileManager.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/FileManager.cs
@@ -67,7 +67,7 @@ namespace v2rayN
}
try
{
- if (!Utile.IsNullOrEmpty(ignoredName) && entry.Name.Contains(ignoredName))
+ if (!Utils.IsNullOrEmpty(ignoredName) && entry.Name.Contains(ignoredName))
{
continue;
}
diff --git a/v2rayn/v2rayN/v2rayN/Common/HttpClientHelper.cs b/v2rayn/v2rayN/v2rayN/Common/HttpClientHelper.cs
index 51707be5ea..1c338b61be 100644
--- a/v2rayn/v2rayN/v2rayN/Common/HttpClientHelper.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/HttpClientHelper.cs
@@ -23,19 +23,19 @@ namespace v2rayN
public async Task GetAsync(string url)
{
- if (Utile.IsNullOrEmpty(url)) return null;
+ if (Utils.IsNullOrEmpty(url)) return null;
return await httpClient.GetStringAsync(url);
}
public async Task GetAsync(HttpClient client, string url, CancellationToken token = default)
{
- if (Utile.IsNullOrEmpty(url)) return null;
+ if (Utils.IsNullOrEmpty(url)) return null;
return await client.GetStringAsync(url, token);
}
public async Task PutAsync(string url, Dictionary headers)
{
- var jsonContent = JsonUtile.Serialize(headers);
+ var jsonContent = JsonUtils.Serialize(headers);
var content = new StringContent(jsonContent, Encoding.UTF8, MediaTypeNames.Application.Json);
var result = await httpClient.PutAsync(url, content);
@@ -88,7 +88,7 @@ namespace v2rayN
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress progress, CancellationToken token = default)
{
- if (Utile.IsNullOrEmpty(url))
+ if (Utils.IsNullOrEmpty(url))
{
throw new ArgumentNullException(nameof(url));
}
diff --git a/v2rayn/v2rayN/v2rayN/Common/JsonUtile.cs b/v2rayn/v2rayN/v2rayN/Common/JsonUtils.cs
similarity index 99%
rename from v2rayn/v2rayN/v2rayN/Common/JsonUtile.cs
rename to v2rayn/v2rayN/v2rayN/Common/JsonUtils.cs
index 1c76fc4e25..2198ba3541 100644
--- a/v2rayn/v2rayN/v2rayN/Common/JsonUtile.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/JsonUtils.cs
@@ -5,7 +5,7 @@ using System.Text.Json.Serialization;
namespace v2rayN
{
- internal class JsonUtile
+ internal class JsonUtils
{
///
/// DeepCopy
diff --git a/v2rayn/v2rayN/v2rayN/Common/Logging.cs b/v2rayn/v2rayN/v2rayN/Common/Logging.cs
index d989aabf6d..ba5b97e7e2 100644
--- a/v2rayn/v2rayN/v2rayN/Common/Logging.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/Logging.cs
@@ -13,7 +13,7 @@ namespace v2rayN
FileTarget fileTarget = new();
config.AddTarget("file", fileTarget);
fileTarget.Layout = "${longdate}-${level:uppercase=true} ${message}";
- fileTarget.FileName = Utile.GetLogPath("${shortdate}.txt");
+ fileTarget.FileName = Utils.GetLogPath("${shortdate}.txt");
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, fileTarget));
LogManager.Configuration = config;
}
@@ -33,7 +33,7 @@ namespace v2rayN
try
{
var now = DateTime.Now.AddMonths(-1);
- var dir = Utile.GetLogPath();
+ var dir = Utils.GetLogPath();
var files = Directory.GetFiles(dir, "*.txt");
foreach (var filePath in files)
{
diff --git a/v2rayn/v2rayN/v2rayN/Common/SqliteHelper.cs b/v2rayn/v2rayN/v2rayN/Common/SqliteHelper.cs
index 68d70feff4..70beb81074 100644
--- a/v2rayn/v2rayN/v2rayN/Common/SqliteHelper.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/SqliteHelper.cs
@@ -15,7 +15,7 @@ namespace v2rayN
public SQLiteHelper()
{
- _connstr = Utile.GetConfigPath(_configDB);
+ _connstr = Utils.GetConfigPath(_configDB);
_db = new SQLiteConnection(_connstr, false);
_dbAsync = new SQLiteAsyncConnection(_connstr, false);
}
diff --git a/v2rayn/v2rayN/v2rayN/Common/Utile.cs b/v2rayn/v2rayN/v2rayN/Common/Utils.cs
similarity index 98%
rename from v2rayn/v2rayN/v2rayN/Common/Utile.cs
rename to v2rayn/v2rayN/v2rayN/Common/Utils.cs
index 672b576333..d98d9a7afd 100644
--- a/v2rayn/v2rayN/v2rayN/Common/Utile.cs
+++ b/v2rayn/v2rayN/v2rayN/Common/Utils.cs
@@ -25,7 +25,7 @@ using ZXing.Windows.Compatibility;
namespace v2rayN
{
- internal class Utile
+ internal class Utils
{
#region 资源Json操作
@@ -361,7 +361,7 @@ namespace v2rayN
///
public static string GetPunycode(string url)
{
- if (Utile.IsNullOrEmpty(url))
+ if (Utils.IsNullOrEmpty(url))
{
return url;
}
@@ -391,7 +391,7 @@ namespace v2rayN
public static string Convert2Comma(string text)
{
- if (Utile.IsNullOrEmpty(text))
+ if (Utils.IsNullOrEmpty(text))
{
return text;
}
@@ -583,7 +583,7 @@ namespace v2rayN
{
try
{
- if (!Utile.PortInUse(defaultPort))
+ if (!Utils.PortInUse(defaultPort))
{
return defaultPort;
}
@@ -840,7 +840,7 @@ namespace v2rayN
{
Directory.CreateDirectory(_tempPath);
}
- if (Utile.IsNullOrEmpty(filename))
+ if (Utils.IsNullOrEmpty(filename))
{
return _tempPath;
}
@@ -876,7 +876,7 @@ namespace v2rayN
{
Directory.CreateDirectory(_tempPath);
}
- if (Utile.IsNullOrEmpty(filename))
+ if (Utils.IsNullOrEmpty(filename))
{
return _tempPath;
}
@@ -901,7 +901,7 @@ namespace v2rayN
Directory.CreateDirectory(_tempPath);
}
}
- if (Utile.IsNullOrEmpty(filename))
+ if (Utils.IsNullOrEmpty(filename))
{
return _tempPath;
}
@@ -918,7 +918,7 @@ namespace v2rayN
{
Directory.CreateDirectory(_tempPath);
}
- if (Utile.IsNullOrEmpty(filename))
+ if (Utils.IsNullOrEmpty(filename))
{
return _tempPath;
}
@@ -935,7 +935,7 @@ namespace v2rayN
{
Directory.CreateDirectory(_tempPath);
}
- if (Utile.IsNullOrEmpty(filename))
+ if (Utils.IsNullOrEmpty(filename))
{
return _tempPath;
}
@@ -1107,7 +1107,7 @@ namespace v2rayN
///
public static void AutoStart(string taskName, string fileName, string description)
{
- if (Utile.IsNullOrEmpty(taskName))
+ if (Utils.IsNullOrEmpty(taskName))
{
return;
}
@@ -1122,7 +1122,7 @@ namespace v2rayN
{
taskService.RootFolder.DeleteTask(t.Name);
}
- if (Utile.IsNullOrEmpty(fileName))
+ if (Utils.IsNullOrEmpty(fileName))
{
return;
}
diff --git a/v2rayn/v2rayN/v2rayN/Converters/MaterialDesignFonts.cs b/v2rayn/v2rayN/v2rayN/Converters/MaterialDesignFonts.cs
index 938db7cc85..5ce0328668 100644
--- a/v2rayn/v2rayN/v2rayN/Converters/MaterialDesignFonts.cs
+++ b/v2rayn/v2rayN/v2rayN/Converters/MaterialDesignFonts.cs
@@ -12,9 +12,9 @@ namespace v2rayN.Converters
try
{
var fontFamily = LazyConfig.Instance.GetConfig().uiItem.currentFontFamily;
- if (!Utile.IsNullOrEmpty(fontFamily))
+ if (!Utils.IsNullOrEmpty(fontFamily))
{
- var fontPath = Utile.GetFontsPath();
+ var fontPath = Utils.GetFontsPath();
MyFont = new FontFamily(new Uri(@$"file:///{fontPath}\"), $"./#{fontFamily}");
}
}
diff --git a/v2rayn/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayn/v2rayN/v2rayN/Handler/ConfigHandler.cs
index 4b430705e8..fa2377c6fc 100644
--- a/v2rayn/v2rayN/v2rayN/Handler/ConfigHandler.cs
+++ b/v2rayn/v2rayN/v2rayN/Handler/ConfigHandler.cs
@@ -23,15 +23,15 @@ namespace v2rayN.Handler
public static int LoadConfig(ref Config? config)
{
//载入配置文件
- var result = Utile.LoadResource(Utile.GetConfigPath(configRes));
- if (!Utile.IsNullOrEmpty(result))
+ var result = Utils.LoadResource(Utils.GetConfigPath(configRes));
+ if (!Utils.IsNullOrEmpty(result))
{
//转成Json
- config = JsonUtile.Deserialize(result);
+ config = JsonUtils.Deserialize(result);
}
else
{
- if (File.Exists(Utile.GetConfigPath(configRes)))
+ if (File.Exists(Utils.GetConfigPath(configRes)))
{
Logging.SaveLog("LoadConfig Exception");
return -1;
@@ -85,7 +85,7 @@ namespace v2rayN.Handler
};
}
//路由规则
- if (Utile.IsNullOrEmpty(config.routingBasicItem.domainStrategy))
+ if (Utils.IsNullOrEmpty(config.routingBasicItem.domainStrategy))
{
config.routingBasicItem.domainStrategy = Global.DomainStrategies[0];//"IPIfNonMatch";
}
@@ -144,7 +144,7 @@ namespace v2rayN.Handler
{
config.uiItem.mainColumnItem = new();
}
- if (Utile.IsNullOrEmpty(config.uiItem.currentLanguage))
+ if (Utils.IsNullOrEmpty(config.uiItem.currentLanguage))
{
config.uiItem.currentLanguage = Global.Languages[0];
}
@@ -153,7 +153,7 @@ namespace v2rayN.Handler
{
config.constItem = new ConstItem();
}
- if (Utile.IsNullOrEmpty(config.constItem.defIEProxyExceptions))
+ if (Utils.IsNullOrEmpty(config.constItem.defIEProxyExceptions))
{
config.constItem.defIEProxyExceptions = Global.IEProxyExceptions;
}
@@ -166,11 +166,11 @@ namespace v2rayN.Handler
{
config.speedTestItem.speedTestTimeout = 10;
}
- if (Utile.IsNullOrEmpty(config.speedTestItem.speedTestUrl))
+ if (Utils.IsNullOrEmpty(config.speedTestItem.speedTestUrl))
{
config.speedTestItem.speedTestUrl = Global.SpeedTestUrls[0];
}
- if (Utile.IsNullOrEmpty(config.speedTestItem.speedPingTestUrl))
+ if (Utils.IsNullOrEmpty(config.speedTestItem.speedPingTestUrl))
{
config.speedTestItem.speedPingTestUrl = Global.SpeedPingTestUrl;
}
@@ -220,9 +220,9 @@ namespace v2rayN.Handler
try
{
//save temp file
- var resPath = Utile.GetConfigPath(configRes);
+ var resPath = Utils.GetConfigPath(configRes);
var tempPath = $"{resPath}_temp";
- if (JsonUtile.ToFile(config, tempPath) != 0)
+ if (JsonUtils.ToFile(config, tempPath) != 0)
{
return;
}
@@ -243,34 +243,34 @@ namespace v2rayN.Handler
public static int ImportOldGuiConfig(Config config, string fileName)
{
- var result = Utile.LoadResource(fileName);
- if (Utile.IsNullOrEmpty(result))
+ var result = Utils.LoadResource(fileName);
+ if (Utils.IsNullOrEmpty(result))
{
return -1;
}
- var configOld = JsonUtile.Deserialize(result);
+ var configOld = JsonUtils.Deserialize(result);
if (configOld == null)
{
return -1;
}
- var subItem = JsonUtile.Deserialize>(JsonUtile.Serialize(configOld.subItem));
+ var subItem = JsonUtils.Deserialize>(JsonUtils.Serialize(configOld.subItem));
foreach (var it in subItem)
{
- if (Utile.IsNullOrEmpty(it.id))
+ if (Utils.IsNullOrEmpty(it.id))
{
- it.id = Utile.GetGUID(false);
+ it.id = Utils.GetGUID(false);
}
SQLiteHelper.Instance.Replace(it);
}
- var profileItems = JsonUtile.Deserialize>(JsonUtile.Serialize(configOld.vmess));
+ var profileItems = JsonUtils.Deserialize>(JsonUtils.Serialize(configOld.vmess));
foreach (var it in profileItems)
{
- if (Utile.IsNullOrEmpty(it.indexId))
+ if (Utils.IsNullOrEmpty(it.indexId))
{
- it.indexId = Utile.GetGUID(false);
+ it.indexId = Utils.GetGUID(false);
}
SQLiteHelper.Instance.Replace(it);
}
@@ -281,22 +281,22 @@ namespace v2rayN.Handler
{
continue;
}
- var routing = JsonUtile.Deserialize(JsonUtile.Serialize(it));
+ var routing = JsonUtils.Deserialize(JsonUtils.Serialize(it));
foreach (var it2 in it.rules)
{
- it2.id = Utile.GetGUID(false);
+ it2.id = Utils.GetGUID(false);
}
routing.ruleNum = it.rules.Count;
- routing.ruleSet = JsonUtile.Serialize(it.rules, false);
+ routing.ruleSet = JsonUtils.Serialize(it.rules, false);
- if (Utile.IsNullOrEmpty(routing.id))
+ if (Utils.IsNullOrEmpty(routing.id))
{
- routing.id = Utile.GetGUID(false);
+ routing.id = Utils.GetGUID(false);
}
SQLiteHelper.Instance.Replace(routing);
}
- config = JsonUtile.Deserialize(JsonUtile.Serialize(configOld));
+ config = JsonUtils.Deserialize(JsonUtils.Serialize(configOld));
if (config.coreBasicItem == null)
{
@@ -412,13 +412,13 @@ namespace v2rayN.Handler
continue;
}
- ProfileItem profileItem = JsonUtile.DeepCopy(item);
+ ProfileItem profileItem = JsonUtils.DeepCopy(item);
profileItem.indexId = string.Empty;
profileItem.remarks = $"{item.remarks}-clone";
if (profileItem.configType == EConfigType.Custom)
{
- profileItem.address = Utile.GetConfigPath(profileItem.address);
+ profileItem.address = Utils.GetConfigPath(profileItem.address);
if (AddCustomServer(config, profileItem, false) == 0)
{
}
@@ -440,7 +440,7 @@ namespace v2rayN.Handler
///
public static int SetDefaultServerIndex(Config config, string? indexId)
{
- if (Utile.IsNullOrEmpty(indexId))
+ if (Utils.IsNullOrEmpty(indexId))
{
return -1;
}
@@ -570,12 +570,12 @@ namespace v2rayN.Handler
return -1;
}
var ext = Path.GetExtension(fileName);
- string newFileName = $"{Utile.GetGUID()}{ext}";
+ string newFileName = $"{Utils.GetGUID()}{ext}";
//newFileName = Path.Combine(Utile.GetTempPath(), newFileName);
try
{
- File.Copy(fileName, Utile.GetConfigPath(newFileName));
+ File.Copy(fileName, Utils.GetConfigPath(newFileName));
if (blDelete)
{
File.Delete(fileName);
@@ -589,7 +589,7 @@ namespace v2rayN.Handler
profileItem.address = newFileName;
profileItem.configType = EConfigType.Custom;
- if (Utile.IsNullOrEmpty(profileItem.remarks))
+ if (Utils.IsNullOrEmpty(profileItem.remarks))
{
profileItem.remarks = $"import custom@{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}";
}
@@ -676,7 +676,7 @@ namespace v2rayN.Handler
profileItem.address = profileItem.address.TrimEx();
profileItem.id = profileItem.id.TrimEx();
- if (Utile.IsNullOrEmpty(profileItem.streamSecurity))
+ if (Utils.IsNullOrEmpty(profileItem.streamSecurity))
{
profileItem.streamSecurity = Global.StreamSecurity;
}
@@ -706,7 +706,7 @@ namespace v2rayN.Handler
profileItem.path = profileItem.path.TrimEx();
profileItem.network = string.Empty;
- if (Utile.IsNullOrEmpty(profileItem.streamSecurity))
+ if (Utils.IsNullOrEmpty(profileItem.streamSecurity))
{
profileItem.streamSecurity = Global.StreamSecurity;
}
@@ -741,11 +741,11 @@ namespace v2rayN.Handler
profileItem.headerType = Global.TuicCongestionControls.FirstOrDefault()!;
}
- if (Utile.IsNullOrEmpty(profileItem.streamSecurity))
+ if (Utils.IsNullOrEmpty(profileItem.streamSecurity))
{
profileItem.streamSecurity = Global.StreamSecurity;
}
- if (Utile.IsNullOrEmpty(profileItem.alpn))
+ if (Utils.IsNullOrEmpty(profileItem.alpn))
{
profileItem.alpn = "h3";
}
@@ -913,7 +913,7 @@ namespace v2rayN.Handler
{
return -1;
}
- if (!Utile.IsNullOrEmpty(profileItem.security) && profileItem.security != Global.None)
+ if (!Utils.IsNullOrEmpty(profileItem.security) && profileItem.security != Global.None)
{
profileItem.security = Global.None;
}
@@ -951,7 +951,7 @@ namespace v2rayN.Handler
{
profileItem.configVersion = 2;
- if (!Utile.IsNullOrEmpty(profileItem.streamSecurity))
+ if (!Utils.IsNullOrEmpty(profileItem.streamSecurity))
{
if (profileItem.streamSecurity != Global.StreamSecurity
&& profileItem.streamSecurity != Global.StreamSecurityReality)
@@ -960,26 +960,26 @@ namespace v2rayN.Handler
}
else
{
- if (Utile.IsNullOrEmpty(profileItem.allowInsecure))
+ if (Utils.IsNullOrEmpty(profileItem.allowInsecure))
{
profileItem.allowInsecure = config.coreBasicItem.defAllowInsecure.ToString().ToLower();
}
- if (Utile.IsNullOrEmpty(profileItem.fingerprint) && profileItem.streamSecurity == Global.StreamSecurityReality)
+ if (Utils.IsNullOrEmpty(profileItem.fingerprint) && profileItem.streamSecurity == Global.StreamSecurityReality)
{
profileItem.fingerprint = config.coreBasicItem.defFingerprint;
}
}
}
- if (!Utile.IsNullOrEmpty(profileItem.network) && !Global.Networks.Contains(profileItem.network))
+ if (!Utils.IsNullOrEmpty(profileItem.network) && !Global.Networks.Contains(profileItem.network))
{
profileItem.network = Global.DefaultNetwork;
}
var maxSort = -1;
- if (Utile.IsNullOrEmpty(profileItem.indexId))
+ if (Utils.IsNullOrEmpty(profileItem.indexId))
{
- profileItem.indexId = Utile.GetGUID(false);
+ profileItem.indexId = Utils.GetGUID(false);
maxSort = ProfileExHandler.Instance.GetMaxSort();
}
if (!toFile && maxSort < 0)
@@ -1032,7 +1032,7 @@ namespace v2rayN.Handler
}
if (item.configType == EConfigType.Custom)
{
- File.Delete(Utile.GetConfigPath(item.address));
+ File.Delete(Utils.GetConfigPath(item.address));
}
SQLiteHelper.Instance.Delete(item);
@@ -1058,14 +1058,14 @@ namespace v2rayN.Handler
/// 成功导入的数量
private static int AddBatchServers(Config config, string clipboardData, string subid, bool isSub, List lstOriSub)
{
- if (Utile.IsNullOrEmpty(clipboardData))
+ if (Utils.IsNullOrEmpty(clipboardData))
{
return -1;
}
string subFilter = string.Empty;
//remove sub items
- if (isSub && !Utile.IsNullOrEmpty(subid))
+ if (isSub && !Utils.IsNullOrEmpty(subid))
{
RemoveServerViaSubid(config, subid, isSub);
subFilter = LazyConfig.Instance.GetSubItem(subid)?.filter ?? "";
@@ -1098,7 +1098,7 @@ namespace v2rayN.Handler
}
//exist sub items
- if (isSub && !Utile.IsNullOrEmpty(subid))
+ if (isSub && !Utils.IsNullOrEmpty(subid))
{
var existItem = lstOriSub?.FirstOrDefault(t => t.isSub == isSub
&& config.uiItem.enableUpdateSubOnlyRemarksExist ? t.remarks == profileItem.remarks : CompareProfileItem(t, profileItem, true));
@@ -1120,7 +1120,7 @@ namespace v2rayN.Handler
}
}
//filter
- if (!Utile.IsNullOrEmpty(subFilter))
+ if (!Utils.IsNullOrEmpty(subFilter))
{
if (!Regex.IsMatch(profileItem.remarks, subFilter))
{
@@ -1162,7 +1162,7 @@ namespace v2rayN.Handler
private static int AddBatchServers4Custom(Config config, string clipboardData, string subid, bool isSub, List lstOriSub)
{
- if (Utile.IsNullOrEmpty(clipboardData))
+ if (Utils.IsNullOrEmpty(clipboardData))
{
return -1;
}
@@ -1178,10 +1178,10 @@ namespace v2rayN.Handler
}
//Is v2ray array configuration
- var configObjects = JsonUtile.Deserialize
diff --git a/yass/README.md b/yass/README.md
index 393579dee5..d14a60378a 100644
--- a/yass/README.md
+++ b/yass/README.md
@@ -22,13 +22,13 @@ More Information refers to [wiki](https://github.com/Chilledheart/yass/wiki) and
## Usages
### Prebuilt binaries
-- Android [download apk](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-android-release-arm64-1.8.0.apk) or [download 32-bit apk](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-android-release-arm-1.8.0.apk)
-- iOS [join via TestFlight](https://testflight.apple.com/join/6AkiEq09) or [download ipa](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-ios-release-arm64-1.8.0.ipa)
-- Windows [download installer](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-mingw-winxp-release-x86_64-1.8.0-system-installer.exe) or [download 32-bit installer (require runtime)](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-mingw-winxp-release-i686-1.8.0-system-installer.exe) or [download woa arm64 installer](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-mingw-release-aarch64-1.8.0-system-installer.exe)
-- macOS [download intel dmg](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-macos-release-x64-1.8.0.dmg) or [download apple silicon dmg](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-macos-release-arm64-1.8.0.dmg)
-- Linux [download rpm](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass.el7.x86_64.1.8.0-0.rpm) or [download deb](https://github.com/Chilledheart/yass/releases/download/1.8.0/yass-client-ubuntu-16.04-xenial_amd64.1.8.0.deb)
+- Android [download apk](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-android-release-arm64-1.8.1.apk) or [download 32-bit apk](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-android-release-arm-1.8.1.apk)
+- iOS [join via TestFlight](https://testflight.apple.com/join/6AkiEq09) or [download ipa](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-ios-release-arm64-1.8.1.ipa)
+- Windows [download installer](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-mingw-winxp-release-x86_64-1.8.1-system-installer.exe) or [download 32-bit installer (require runtime)](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-mingw-winxp-release-i686-1.8.1-system-installer.exe) or [download woa arm64 installer](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-mingw-release-aarch64-1.8.1-system-installer.exe)
+- macOS [download intel dmg](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-macos-release-x64-1.8.1.dmg) or [download apple silicon dmg](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-macos-release-arm64-1.8.1.dmg)
+- Linux [download rpm](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass.el7.x86_64.1.8.1-0.rpm) or [download deb](https://github.com/Chilledheart/yass/releases/download/1.8.1/yass-client-ubuntu-16.04-xenial_amd64.1.8.1.deb)
-View more at [release page](https://github.com/Chilledheart/yass/releases/tag/1.8.0)
+View more at [release page](https://github.com/Chilledheart/yass/releases/tag/1.8.1)
### Status of Package Store
Visit wiki's [Status of Package Store](https://github.com/Chilledheart/yass/wiki/Status-of-Package-Store)
diff --git a/yass/debian/changelog b/yass/debian/changelog
index 5e8384ab68..e88e442ae4 100644
--- a/yass/debian/changelog
+++ b/yass/debian/changelog
@@ -1,3 +1,9 @@
+yass (1.8.1-1) UNRELEASED; urgency=medium
+
+ * bump to chromium 124 dependents.
+ * miscellaneous fixes
+
+ -- Chilledheart Tue, 26 Mar 2024 16:16:59 +0800
yass (1.8.0-1) UNRELEASED; urgency=medium
* bump to chromium 124 dependents.
diff --git a/yass/src/cli/cli_worker.cpp b/yass/src/cli/cli_worker.cpp
index e69452766a..cd31779a91 100644
--- a/yass/src/cli/cli_worker.cpp
+++ b/yass/src/cli/cli_worker.cpp
@@ -19,7 +19,14 @@ class WorkerPrivate {
std::unique_ptr cli_server;
};
-Worker::Worker() : resolver_(io_context_), private_(new WorkerPrivate) {
+Worker::Worker()
+ : resolver_(io_context_),
+ cached_server_host_(absl::GetFlag(FLAGS_server_host)),
+ cached_server_sni_(absl::GetFlag(FLAGS_server_sni)),
+ cached_server_port_(absl::GetFlag(FLAGS_server_port)),
+ cached_local_host_(absl::GetFlag(FLAGS_local_host)),
+ cached_local_port_(absl::GetFlag(FLAGS_local_port)),
+ private_(new WorkerPrivate) {
#ifdef _WIN32
int iResult = 0;
WSADATA wsaData = {0};
diff --git a/yass/src/cli/cli_worker.hpp b/yass/src/cli/cli_worker.hpp
index fa0d5a315a..03f409d338 100644
--- a/yass/src/cli/cli_worker.hpp
+++ b/yass/src/cli/cli_worker.hpp
@@ -66,7 +66,7 @@ class Worker {
std::vector remote_server_ips_v6_;
std::string remote_server_sni_;
std::string local_server_ips_;
- uint16_t local_port_;
+ uint16_t local_port_ = 0;
std::vector endpoints_;
std::atomic_bool in_destroy_ = false;
};
diff --git a/yass/yass.spec.in b/yass/yass.spec.in
index e830523525..89f37e03a5 100644
--- a/yass/yass.spec.in
+++ b/yass/yass.spec.in
@@ -240,6 +240,9 @@ for embedded devices and low end boxes.
%systemd_postun_with_restart yass-redir.service
%changelog
+* Tue Mar 26 2024 Chilledheart - 1.8.1-1
+ - bump to chromium 124 dependents.
+ - miscellaneous fixes
* Wed Mar 20 2024 Chilledheart - 1.8.0-1
- bump to chromium 124 dependents.
* Mon Mar 18 2024 Chilledheart - 1.7.5-1