diff --git a/.github/update.log b/.github/update.log index df8dc9b2cc..08eea02467 100644 --- a/.github/update.log +++ b/.github/update.log @@ -1060,3 +1060,4 @@ Update On Sun Jul 13 20:36:25 CEST 2025 Update On Mon Jul 14 14:45:36 CEST 2025 Update On Mon Jul 14 20:43:09 CEST 2025 Update On Tue Jul 15 20:40:52 CEST 2025 +Update On Wed Jul 16 20:41:54 CEST 2025 diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index e53fd4a393..aaf413a6ce 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -65,7 +65,7 @@ "@tauri-apps/cli": "2.5.0", "@types/fs-extra": "11.0.4", "@types/lodash-es": "4.17.12", - "@types/node": "22.16.3", + "@types/node": "22.16.4", "@typescript-eslint/eslint-plugin": "8.36.0", "@typescript-eslint/parser": "8.36.0", "autoprefixer": "10.4.21", diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 000b635ba2..dbd150a91b 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: devDependencies: '@commitlint/cli': specifier: 19.8.1 - version: 19.8.1(@types/node@22.16.3)(typescript@5.8.3) + version: 19.8.1(@types/node@22.16.4)(typescript@5.8.3) '@commitlint/config-conventional': specifier: 19.8.1 version: 19.8.1 @@ -44,8 +44,8 @@ importers: specifier: 4.17.12 version: 4.17.12 '@types/node': - specifier: 22.16.3 - version: 22.16.3 + specifier: 22.16.4 + version: 22.16.4 '@typescript-eslint/eslint-plugin': specifier: 8.36.0 version: 8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) @@ -102,7 +102,7 @@ importers: version: 16.3.0 knip: specifier: 5.61.3 - version: 5.61.3(@types/node@22.16.3)(typescript@5.8.3) + version: 5.61.3(@types/node@22.16.4)(typescript@5.8.3) lint-staged: specifier: 16.1.2 version: 16.1.2 @@ -353,7 +353,7 @@ importers: version: 1.127.8(@tanstack/react-router@1.127.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.127.8)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) '@tanstack/router-plugin': specifier: 1.127.8 - version: 1.127.8(@tanstack/react-router@1.127.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 1.127.8(@tanstack/react-router@1.127.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) '@tauri-apps/plugin-clipboard-manager': specifier: 2.2.2 version: 2.2.2 @@ -389,13 +389,13 @@ importers: version: 13.15.2 '@vitejs/plugin-legacy': specifier: 7.0.0 - version: 7.0.0(terser@5.36.0)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 7.0.0(terser@5.36.0)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) '@vitejs/plugin-react': specifier: 4.6.0 - version: 4.6.0(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 4.6.0(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) '@vitejs/plugin-react-swc': specifier: 3.10.2 - version: 3.10.2(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 3.10.2(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) change-case: specifier: 5.4.4 version: 5.4.4 @@ -434,19 +434,19 @@ importers: version: 13.15.15 vite: specifier: 7.0.4 - version: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + version: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) vite-plugin-html: specifier: 3.2.2 - version: 3.2.2(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 3.2.2(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) vite-plugin-sass-dts: specifier: 1.3.31 - version: 1.3.31(postcss@8.5.6)(prettier@3.6.2)(sass-embedded@1.89.2)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 1.3.31(postcss@8.5.6)(prettier@3.6.2)(sass-embedded@1.89.2)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) vite-plugin-svgr: specifier: 4.3.0 - version: 4.3.0(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 4.3.0(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) zod: specifier: 3.25.76 version: 3.25.76 @@ -482,7 +482,7 @@ importers: version: 19.1.8 '@vitejs/plugin-react': specifier: 4.6.0 - version: 4.6.0(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 4.6.0(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) ahooks: specifier: 3.9.0 version: 3.9.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -512,10 +512,10 @@ importers: version: 4.1.11 vite: specifier: 7.0.4 - version: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + version: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) devDependencies: '@emotion/react': specifier: 11.14.0 @@ -540,7 +540,7 @@ importers: version: 5.1.0(typescript@5.8.3) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@22.16.3)(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 4.5.4(@types/node@22.16.4)(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) scripts: dependencies: @@ -3326,8 +3326,8 @@ packages: '@types/node@16.18.108': resolution: {integrity: sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==} - '@types/node@22.16.3': - resolution: {integrity: sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==} + '@types/node@22.16.4': + resolution: {integrity: sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -9591,11 +9591,11 @@ snapshots: '@bufbuild/protobuf@2.5.2': {} - '@commitlint/cli@19.8.1(@types/node@22.16.3)(typescript@5.8.3)': + '@commitlint/cli@19.8.1(@types/node@22.16.4)(typescript@5.8.3)': dependencies: '@commitlint/format': 19.8.1 '@commitlint/lint': 19.8.1 - '@commitlint/load': 19.8.1(@types/node@22.16.3)(typescript@5.8.3) + '@commitlint/load': 19.8.1(@types/node@22.16.4)(typescript@5.8.3) '@commitlint/read': 19.8.1 '@commitlint/types': 19.8.1 tinyexec: 1.0.1 @@ -9642,7 +9642,7 @@ snapshots: '@commitlint/rules': 19.8.1 '@commitlint/types': 19.8.1 - '@commitlint/load@19.8.1(@types/node@22.16.3)(typescript@5.8.3)': + '@commitlint/load@19.8.1(@types/node@22.16.4)(typescript@5.8.3)': dependencies: '@commitlint/config-validator': 19.8.1 '@commitlint/execute-rule': 19.8.1 @@ -9650,7 +9650,7 @@ snapshots: '@commitlint/types': 19.8.1 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.8.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.16.3)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.16.4)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -10095,23 +10095,23 @@ snapshots: '@material/material-color-utilities@0.3.0': {} - '@microsoft/api-extractor-model@7.30.3(@types/node@22.16.3)': + '@microsoft/api-extractor-model@7.30.3(@types/node@22.16.4)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.11.0(@types/node@22.16.3) + '@rushstack/node-core-library': 5.11.0(@types/node@22.16.4) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.51.0(@types/node@22.16.3)': + '@microsoft/api-extractor@7.51.0(@types/node@22.16.4)': dependencies: - '@microsoft/api-extractor-model': 7.30.3(@types/node@22.16.3) + '@microsoft/api-extractor-model': 7.30.3(@types/node@22.16.4) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.11.0(@types/node@22.16.3) + '@rushstack/node-core-library': 5.11.0(@types/node@22.16.4) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.0(@types/node@22.16.3) - '@rushstack/ts-command-line': 4.23.5(@types/node@22.16.3) + '@rushstack/terminal': 0.15.0(@types/node@22.16.4) + '@rushstack/ts-command-line': 4.23.5(@types/node@22.16.4) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -10842,7 +10842,7 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.11.0(@types/node@22.16.3)': + '@rushstack/node-core-library@5.11.0(@types/node@22.16.4)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -10853,23 +10853,23 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.15.0(@types/node@22.16.3)': + '@rushstack/terminal@0.15.0(@types/node@22.16.4)': dependencies: - '@rushstack/node-core-library': 5.11.0(@types/node@22.16.3) + '@rushstack/node-core-library': 5.11.0(@types/node@22.16.4) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 - '@rushstack/ts-command-line@4.23.5(@types/node@22.16.3)': + '@rushstack/ts-command-line@4.23.5(@types/node@22.16.4)': dependencies: - '@rushstack/terminal': 0.15.0(@types/node@22.16.3) + '@rushstack/terminal': 0.15.0(@types/node@22.16.4) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -11211,7 +11211,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.127.8(@tanstack/react-router@1.127.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@tanstack/router-plugin@1.127.8(@tanstack/react-router@1.127.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.27.7 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) @@ -11229,7 +11229,7 @@ snapshots: zod: 3.25.76 optionalDependencies: '@tanstack/react-router': 1.127.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -11364,7 +11364,7 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/argparse@1.0.38': {} @@ -11395,12 +11395,12 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/responselike': 1.0.3 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/d3-array@3.2.1': {} @@ -11536,7 +11536,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/geojson@7946.0.14': {} @@ -11554,11 +11554,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/keyv@3.1.4': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/lodash-es@4.17.12': dependencies: @@ -11574,7 +11574,7 @@ snapshots: '@types/node@16.18.108': {} - '@types/node@22.16.3': + '@types/node@22.16.4': dependencies: undici-types: 6.21.0 @@ -11606,7 +11606,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 '@types/retry@0.12.2': {} @@ -11626,7 +11626,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 optional: true '@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': @@ -11834,7 +11834,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.10.1': optional: true - '@vitejs/plugin-legacy@7.0.0(terser@5.36.0)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-legacy@7.0.0(terser@5.36.0)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.27.4 '@babel/preset-env': 7.27.2(@babel/core@7.27.4) @@ -11845,19 +11845,19 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.36.0 - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react-swc@3.10.2(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react-swc@3.10.2(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.11 '@swc/core': 1.12.1 - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react@4.6.0(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.27.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.4) @@ -11865,7 +11865,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.19 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -12543,9 +12543,9 @@ snapshots: core-js@3.44.0: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.16.3)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.16.4)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): dependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 2.4.2 typescript: 5.8.3 @@ -14633,10 +14633,10 @@ snapshots: kind-of@6.0.3: {} - knip@5.61.3(@types/node@22.16.3)(typescript@5.8.3): + knip@5.61.3(@types/node@22.16.4)(typescript@5.8.3): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 22.16.3 + '@types/node': 22.16.4 fast-glob: 3.3.3 formatly: 0.2.4 jiti: 2.4.2 @@ -17202,9 +17202,9 @@ snapshots: - rollup - supports-color - vite-plugin-dts@4.5.4(@types/node@22.16.3)(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): + vite-plugin-dts@4.5.4(@types/node@22.16.4)(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: - '@microsoft/api-extractor': 7.51.0(@types/node@22.16.3) + '@microsoft/api-extractor': 7.51.0(@types/node@22.16.4) '@rollup/pluginutils': 5.1.4(rollup@4.40.0) '@volar/typescript': 2.4.11 '@vue/language-core': 2.2.0(typescript@5.8.3) @@ -17215,13 +17215,13 @@ snapshots: magic-string: 0.30.17 typescript: 5.8.3 optionalDependencies: - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-html@3.2.2(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): + vite-plugin-html@3.2.2(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: '@rollup/pluginutils': 4.2.1 colorette: 2.0.20 @@ -17235,39 +17235,39 @@ snapshots: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) - vite-plugin-sass-dts@1.3.31(postcss@8.5.6)(prettier@3.6.2)(sass-embedded@1.89.2)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): + vite-plugin-sass-dts@1.3.31(postcss@8.5.6)(prettier@3.6.2)(sass-embedded@1.89.2)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: postcss: 8.5.6 postcss-js: 4.0.1(postcss@8.5.6) prettier: 3.6.2 sass-embedded: 1.89.2 - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) - vite-plugin-svgr@4.3.0(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): + vite-plugin-svgr@4.3.0(rollup@4.40.0)(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.40.0) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.8.3)) - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.8.3) optionalDependencies: - vite: 7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.0.4(@types/node@22.16.3)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0): + vite@7.0.4(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: esbuild: 0.25.0 fdir: 6.4.6(picomatch@4.0.2) @@ -17276,7 +17276,7 @@ snapshots: rollup: 4.40.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.16.3 + '@types/node': 22.16.4 fsevents: 2.3.3 jiti: 2.4.2 less: 4.2.0 diff --git a/clash-verge-rev/src-tauri/Cargo.lock b/clash-verge-rev/src-tauri/Cargo.lock index b4bce4dee3..40fb00da08 100644 --- a/clash-verge-rev/src-tauri/Cargo.lock +++ b/clash-verge-rev/src-tauri/Cargo.lock @@ -6850,16 +6850,16 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.36.0" +version = "0.35.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab138f5c1bb35231de19049060a87977ad23e04f2303e953bc5c2947ac7dec4" +checksum = "3c3ffa3e4ff2b324a57f7aeb3c349656c7b127c3c189520251a648102a92496e" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows 0.61.3", + "windows 0.61.1", ] [[package]] diff --git a/clash-verge-rev/src-tauri/Cargo.toml b/clash-verge-rev/src-tauri/Cargo.toml index d73d746f20..1439989ae0 100755 --- a/clash-verge-rev/src-tauri/Cargo.toml +++ b/clash-verge-rev/src-tauri/Cargo.toml @@ -25,10 +25,7 @@ dunce = "1.0.5" log4rs = "1.3.0" nanoid = "0.4" chrono = "0.4.41" -sysinfo = { version = "0.36.0", default-features = false, features = [ - "network", - "system", -] } +sysinfo = "0.35.2" boa_engine = "0.20.0" serde_json = "1.0.140" serde_yaml = "0.9.34" diff --git a/filebrowser/.github/ISSUE_TEMPLATE/bug_report.yml b/filebrowser/.github/ISSUE_TEMPLATE/bug_report.yml index 9c02689f58..f84e7933e7 100644 --- a/filebrowser/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/filebrowser/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: Bug Report description: Report a bug in FileBrowser. -labels: [bug, triage] +labels: [bug, 'waiting: triage'] body: - type: checkboxes attributes: diff --git a/lede/config/Config-images.in b/lede/config/Config-images.in index c3d243b514..66b1d3e4b3 100644 --- a/lede/config/Config-images.in +++ b/lede/config/Config-images.in @@ -217,7 +217,7 @@ menu "Target Images" config GRUB_IMAGES bool "Build GRUB images" depends on TARGET_x86 - depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS + depends on TARGET_ROOTFS_EROFS || TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS select PACKAGE_grub2 select PACKAGE_grub2-bios-setup default n @@ -225,7 +225,7 @@ menu "Target Images" config GRUB_EFI_IMAGES bool "Build GRUB EFI images" depends on TARGET_x86 || TARGET_armsr || TARGET_loongarch64 || TARGET_phytium - depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS + depends on TARGET_ROOTFS_EROFS || TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS select PACKAGE_grub2 if TARGET_x86 select PACKAGE_grub2-efi if TARGET_x86 select PACKAGE_grub2-bios-setup if TARGET_x86 diff --git a/lede/include/kernel-6.12 b/lede/include/kernel-6.12 index e40f0f5697..d389e589d8 100644 --- a/lede/include/kernel-6.12 +++ b/lede/include/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .37 -LINUX_KERNEL_HASH-6.12.37 = 936fdfd2405b5e0ac38d4e094b07772610c22cd478f4bb257c9bf929e762ff95 +LINUX_VERSION-6.12 = .38 +LINUX_KERNEL_HASH-6.12.38 = f035fa8d83d59f793c76b23567b130cc42118f10696815fed03c16bb15670fcc diff --git a/lede/include/kernel-6.6 b/lede/include/kernel-6.6 index a98cd88bea..1e572366f2 100644 --- a/lede/include/kernel-6.6 +++ b/lede/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .97 -LINUX_KERNEL_HASH-6.6.97 = 3b67c170638142da56b7a9c3295f2483b88e8c4d3bc26b2bda63b6cf0cb9ee3b +LINUX_VERSION-6.6 = .98 +LINUX_KERNEL_HASH-6.6.98 = 296a34c500abc22c434b967d471d75568891f06a98f11fc31c5e79b037f45de5 diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch index fd413a2191..c7de0e6029 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch @@ -31,7 +31,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -429,6 +429,7 @@ static void xhci_pci_quirks(struct devic +@@ -454,6 +454,7 @@ static void xhci_pci_quirks(struct devic if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == PCI_DEVICE_ID_VIA_VL805) { xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_TRB_OVERFETCH; @@ -41,7 +41,7 @@ Signed-off-by: Greg Kroah-Hartman if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -638,8 +638,11 @@ static int xhci_move_dequeue_past_td(str +@@ -637,8 +637,11 @@ static int xhci_move_dequeue_past_td(str struct xhci_ring *ep_ring; struct xhci_command *cmd; struct xhci_segment *new_seg; @@ -53,7 +53,7 @@ Signed-off-by: Greg Kroah-Hartman dma_addr_t addr; u64 hw_dequeue; bool cycle_found = false; -@@ -658,7 +661,25 @@ static int xhci_move_dequeue_past_td(str +@@ -657,7 +660,25 @@ static int xhci_move_dequeue_past_td(str hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id); new_seg = ep_ring->deq_seg; new_deq = ep_ring->dequeue; diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch index 2a5ebf7583..ad0b6cf7dd 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch @@ -1248,7 +1248,7 @@ Signed-off-by: Jonathan Bell } --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5754,7 +5754,7 @@ static void port_event(struct usb_hub *h +@@ -5757,7 +5757,7 @@ static void port_event(struct usb_hub *h port_dev->over_current_count++; port_over_current_notify(port_dev); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch index 8535111890..e522ad3f95 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch @@ -344,7 +344,7 @@ Signed-off-by: Phil Elwell } --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -153,6 +153,14 @@ static const struct mmc_fixup __maybe_un +@@ -50,6 +50,14 @@ static const struct mmc_fixup __maybe_un MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd, MMC_QUIRK_BROKEN_SD_DISCARD), @@ -1991,7 +1991,7 @@ Signed-off-by: Phil Elwell #define MAX_TUNING_LOOP 40 -@@ -3199,7 +3199,7 @@ static void sdhci_timeout_timer(struct t +@@ -3194,7 +3194,7 @@ static void sdhci_timeout_timer(struct t spin_lock_irqsave(&host->lock, flags); if (host->cmd && !sdhci_data_line_cmd(host->cmd)) { @@ -2000,7 +2000,7 @@ Signed-off-by: Phil Elwell mmc_hostname(host->mmc)); sdhci_err_stats_inc(host, REQ_TIMEOUT); sdhci_dumpregs(host); -@@ -3222,7 +3222,7 @@ static void sdhci_timeout_data_timer(str +@@ -3217,7 +3217,7 @@ static void sdhci_timeout_data_timer(str if (host->data || host->data_cmd || (host->cmd && sdhci_data_line_cmd(host->cmd))) { diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch index 1a508a1125..2da70b23d8 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch @@ -18626,7 +18626,7 @@ Signed-off-by: j-schambacher * For devices with more than one control interface, we assume the --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c -@@ -2358,6 +2358,8 @@ static const struct usb_audio_quirk_flag +@@ -2360,6 +2360,8 @@ static const struct usb_audio_quirk_flag QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ QUIRK_FLAG_ALIGN_TRANSFER), diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch index ab17b87020..9eb0f87332 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch @@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) { u32 *buf; -@@ -4430,7 +4435,13 @@ static int lan78xx_probe(struct usb_inte +@@ -4428,7 +4433,13 @@ static int lan78xx_probe(struct usb_inte if (ret < 0) goto out4; diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch index ef6f5d56a8..bbe32f254c 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch @@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell * @dev: the device whose endpoint is being disabled --- a/include/linux/usb.h +++ b/include/linux/usb.h -@@ -1873,6 +1873,8 @@ extern int usb_clear_halt(struct usb_dev +@@ -1875,6 +1875,8 @@ extern int usb_clear_halt(struct usb_dev extern int usb_reset_configuration(struct usb_device *dev); extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch index eefb2472b6..041d364b89 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch @@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -1538,6 +1538,109 @@ static int xhci_check_ep0_maxpacket(stru +@@ -1517,6 +1517,109 @@ static int xhci_check_ep0_maxpacket(stru } /* @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it */ -@@ -5402,6 +5505,7 @@ static const struct hc_driver xhci_hc_dr +@@ -5381,6 +5484,7 @@ static const struct hc_driver xhci_hc_dr .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0126-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0126-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch index b1674234bd..4f3acb3ab2 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0126-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0126-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -720,9 +720,9 @@ static int xhci_move_dequeue_past_td(str +@@ -719,9 +719,9 @@ static int xhci_move_dequeue_past_td(str } if ((ep->ep_state & SET_DEQ_PENDING)) { diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0127-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0127-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch index 7d9bdaa202..c6f2196c32 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0127-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0127-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch @@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -1627,7 +1627,7 @@ static void xhci_fixup_endpoint(struct u +@@ -1606,7 +1606,7 @@ static void xhci_fixup_endpoint(struct u return; } ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch index 71284d9f7e..bedd6f52a6 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch @@ -70,7 +70,7 @@ Signed-off-by: popcornmix --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -113,6 +113,12 @@ struct v3d_dev { +@@ -121,6 +121,12 @@ struct v3d_dev { void __iomem *bridge_regs; void __iomem *gca_regs; struct clk *clk; @@ -83,7 +83,7 @@ Signed-off-by: popcornmix struct reset_control *reset; /* Virtual and DMA addresses of the single shared page table. */ -@@ -589,3 +595,4 @@ int v3d_perfmon_get_counter_ioctl(struct +@@ -597,3 +603,4 @@ int v3d_perfmon_get_counter_ioctl(struct /* v3d_sysfs.c */ int v3d_sysfs_init(struct device *dev); void v3d_sysfs_destroy(struct device *dev); @@ -98,7 +98,7 @@ Signed-off-by: popcornmix #include #include #include -@@ -269,6 +270,8 @@ v3d_gem_init(struct drm_device *dev) +@@ -271,6 +272,8 @@ v3d_gem_init(struct drm_device *dev) if (ret) return ret; diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch index 731e4c71df..d5a21169bd 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4877,6 +4877,7 @@ static const struct { +@@ -4921,6 +4921,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell int ret = 0; bool invalid_bdaddr; size_t i; -@@ -4905,7 +4906,8 @@ static int hci_dev_setup_sync(struct hci +@@ -4949,7 +4950,8 @@ static int hci_dev_setup_sync(struct hci test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); if (!ret) { if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) && diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch index f2cef1fbcc..f283308934 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch @@ -24,7 +24,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -430,6 +430,7 @@ static void xhci_pci_quirks(struct devic +@@ -455,6 +455,7 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_TRB_OVERFETCH; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; @@ -34,7 +34,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -711,6 +711,16 @@ static int xhci_move_dequeue_past_td(str +@@ -710,6 +710,16 @@ static int xhci_move_dequeue_past_td(str } while (!cycle_found || !td_last_trb_found); @@ -53,9 +53,9 @@ Signed-off-by: Jonathan Bell if (addr == 0) { --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1627,6 +1627,9 @@ struct xhci_hcd { - #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48) +@@ -1628,6 +1628,9 @@ struct xhci_hcd { #define XHCI_ETRON_HOST BIT_ULL(49) + #define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50) +/* Downstream VLI fixes */ +#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch index 892c1df5b2..8fec64dcc1 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch @@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell ep_index = xhci_get_endpoint_index(&ep->desc); ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); -@@ -1435,9 +1438,35 @@ int xhci_endpoint_init(struct xhci_hcd * +@@ -1439,9 +1442,35 @@ int xhci_endpoint_init(struct xhci_hcd * mult = xhci_get_endpoint_mult(udev, ep); max_packet = usb_endpoint_maxp(&ep->desc); @@ -90,7 +90,7 @@ Signed-off-by: Jonathan Bell /* Allow 3 retries for everything but isoc, set CErr = 3 */ --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -431,6 +431,7 @@ static void xhci_pci_quirks(struct devic +@@ -456,6 +456,7 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_TRB_OVERFETCH; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; @@ -100,7 +100,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1629,6 +1629,7 @@ struct xhci_hcd { +@@ -1630,6 +1630,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch index 47b58116b5..37f9e20e3f 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch @@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell /* Device for a quirk */ #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 -@@ -244,6 +246,16 @@ static int xhci_pci_reinit(struct xhci_h +@@ -254,6 +256,16 @@ static int xhci_pci_reinit(struct xhci_h return 0; } @@ -64,7 +64,7 @@ Signed-off-by: Jonathan Bell static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) { struct pci_dev *pdev = to_pci_dev(dev); -@@ -432,6 +444,8 @@ static void xhci_pci_quirks(struct devic +@@ -457,6 +469,8 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; @@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3657,6 +3657,48 @@ static int xhci_align_td(struct xhci_hcd +@@ -3656,6 +3656,48 @@ static int xhci_align_td(struct xhci_hcd return 1; } @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell /* This is very similar to what ehci-q.c qtd_fill() does */ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, struct urb *urb, int slot_id, unsigned int ep_index) -@@ -3811,6 +3853,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3810,6 +3852,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * } check_trb_math(urb, enqd_len); @@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, start_cycle, start_trb); return 0; -@@ -3959,6 +4003,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3958,6 +4002,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * /* Event on completion */ field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state); @@ -144,7 +144,7 @@ Signed-off-by: Jonathan Bell return 0; --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1630,6 +1630,7 @@ struct xhci_hcd { +@@ -1631,6 +1631,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) #define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(57) diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch index 287f01ecc3..7fe2856c9f 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch @@ -27,7 +27,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR .postinit = dwcmshc_rk35xx_postinit, --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c -@@ -3037,6 +3037,15 @@ static void sdhci_card_event(struct mmc_ +@@ -3032,6 +3032,15 @@ static void sdhci_card_event(struct mmc_ spin_unlock_irqrestore(&host->lock, flags); } @@ -43,7 +43,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR static const struct mmc_host_ops sdhci_ops = { .request = sdhci_request, .post_req = sdhci_post_req, -@@ -3052,6 +3061,7 @@ static const struct mmc_host_ops sdhci_o +@@ -3047,6 +3056,7 @@ static const struct mmc_host_ops sdhci_o .execute_tuning = sdhci_execute_tuning, .card_event = sdhci_card_event, .card_busy = sdhci_card_busy, @@ -51,7 +51,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR }; /*****************************************************************************\ -@@ -4570,6 +4580,15 @@ int sdhci_setup_host(struct sdhci_host * +@@ -4565,6 +4575,15 @@ int sdhci_setup_host(struct sdhci_host * !(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50)) mmc->caps |= MMC_CAP_UHS_DDR50; diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0360-i2c-designware-Add-SMBUS-quick-command-support.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0360-i2c-designware-Add-SMBUS-quick-command-support.patch index d38f0e9520..79be03dd06 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0360-i2c-designware-Add-SMBUS-quick-command-support.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0360-i2c-designware-Add-SMBUS-quick-command-support.patch @@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell regmap_update_bits(dev->map, DW_IC_CON, DW_IC_CON_10BITADDR_MASTER, ic_con); -@@ -456,6 +460,14 @@ i2c_dw_xfer_msg(struct dw_i2c_dev *dev) +@@ -457,6 +461,14 @@ i2c_dw_xfer_msg(struct dw_i2c_dev *dev) regmap_read(dev->map, DW_IC_RXFLR, &flr); rx_limit = dev->rx_fifo_depth - flr; @@ -55,7 +55,7 @@ Signed-off-by: Phil Elwell while (buf_len > 0 && tx_limit > 0 && rx_limit > 0) { u32 cmd = 0; -@@ -894,14 +906,15 @@ static const struct i2c_algorithm i2c_dw +@@ -895,14 +907,15 @@ static const struct i2c_algorithm i2c_dw }; static const struct i2c_adapter_quirks i2c_dw_quirks = { diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0396-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0396-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch index e79dbb75d6..93a9205f4a 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0396-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0396-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch @@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell sdhci_writew(host, SDHCI_MAKE_CMD(cmd->opcode, flags), SDHCI_COMMAND); return true; -@@ -3296,6 +3302,11 @@ static void sdhci_cmd_irq(struct sdhci_h +@@ -3291,6 +3297,11 @@ static void sdhci_cmd_irq(struct sdhci_h if (intmask & SDHCI_INT_TIMEOUT) { host->cmd->error = -ETIMEDOUT; sdhci_err_stats_inc(host, CMD_TIMEOUT); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch index 6a1c5a1be1..dc580e53ee 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch @@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell BUG_ON(data->blksz > host->mmc->max_blk_size); BUG_ON(data->blocks > 65535); -@@ -4714,11 +4714,16 @@ int sdhci_setup_host(struct sdhci_host * +@@ -4709,11 +4709,16 @@ int sdhci_setup_host(struct sdhci_host * spin_lock_init(&host->lock); /* diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch index bcfc4d7dc8..970ec3d9a0 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch @@ -30,9 +30,9 @@ Signed-off-by: Jonathan Bell #define CID_MANFID_KINGSTON 0x70 --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -44,6 +44,14 @@ static const struct mmc_fixup __maybe_un - 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, - MMC_QUIRK_NO_UHS_DDR50_TUNING, EXT_CSD_REV_ANY), +@@ -58,6 +58,14 @@ static const struct mmc_fixup __maybe_un + MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), + MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), + /* + * Samsung Pro Plus/EVO Plus/Pro Ultimate SD cards (2023) claim to cache diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch index d345868bf1..df9f4cfc7c 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch @@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -52,6 +52,18 @@ static const struct mmc_fixup __maybe_un +@@ -66,6 +66,18 @@ static const struct mmc_fixup __maybe_un 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY), diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch index 2939ea0636..c116baa163 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch @@ -16,8 +16,8 @@ Signed-off-by: Jonathan Bell --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h @@ -181,6 +181,15 @@ static const struct mmc_fixup __maybe_un - MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), - MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), + MMC_FIXUP("M62704", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc, + MMC_QUIRK_TRIM_BROKEN), + /* + * Larger Integral SD cards using rebranded Phison controllers trash diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch index 752c7f5755..0d1238bfb5 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch @@ -134,7 +134,7 @@ Signed-off-by: Phil Elwell /* Write SDA hold time if supported */ if (dev->sda_hold_time) regmap_write(dev->map, DW_IC_SDA_HOLD, dev->sda_hold_time); -@@ -1033,6 +1045,7 @@ int i2c_dw_probe_master(struct dw_i2c_de +@@ -1034,6 +1046,7 @@ int i2c_dw_probe_master(struct dw_i2c_de struct i2c_adapter *adap = &dev->adapter; unsigned long irq_flags; unsigned int ic_con; @@ -142,7 +142,7 @@ Signed-off-by: Phil Elwell int ret; init_completion(&dev->cmd_complete); -@@ -1067,7 +1080,11 @@ int i2c_dw_probe_master(struct dw_i2c_de +@@ -1068,7 +1081,11 @@ int i2c_dw_probe_master(struct dw_i2c_de if (ret) return ret; diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch index f77140b7ba..2b1d523594 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4877,7 +4877,8 @@ static const struct { +@@ -4921,7 +4921,8 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0525-drivers-usb-xhci-prevent-a-theoretical-race-on-non-c.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0525-drivers-usb-xhci-prevent-a-theoretical-race-on-non-c.patch index b446093c40..6946643056 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0525-drivers-usb-xhci-prevent-a-theoretical-race-on-non-c.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0525-drivers-usb-xhci-prevent-a-theoretical-race-on-non-c.patch @@ -28,7 +28,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -510,6 +510,19 @@ void xhci_ring_ep_doorbell(struct xhci_h +@@ -509,6 +509,19 @@ void xhci_ring_ep_doorbell(struct xhci_h trace_xhci_ring_ep_doorbell(slot_id, DB_VALUE(ep_index, stream_id)); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch index 3514ff82d8..dcea495090 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell #define END_FIXUP { NULL } --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -76,6 +76,12 @@ static const struct mmc_fixup __maybe_un +@@ -90,6 +90,12 @@ static const struct mmc_fixup __maybe_un 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY), diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0767-drm-v3d-Fix-return-if-scheduler-initialization-fails.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0767-drm-v3d-Fix-return-if-scheduler-initialization-fails.patch index 0f913b72ea..807e033b91 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0767-drm-v3d-Fix-return-if-scheduler-initialization-fails.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0767-drm-v3d-Fix-return-if-scheduler-initialization-fails.patch @@ -21,7 +21,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20240923141348.2422499-4-mca --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c -@@ -294,8 +294,9 @@ v3d_gem_init(struct drm_device *dev) +@@ -296,8 +296,9 @@ v3d_gem_init(struct drm_device *dev) ret = v3d_sched_init(v3d); if (ret) { drm_mm_takedown(&v3d->mm); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0768-drm-v3d-Introduce-gemfs.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0768-drm-v3d-Introduce-gemfs.patch index f2e230267b..f1efefd9d9 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0768-drm-v3d-Introduce-gemfs.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0768-drm-v3d-Introduce-gemfs.patch @@ -39,7 +39,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20240923141348.2422499-6-mca --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -143,6 +143,11 @@ struct v3d_dev { +@@ -151,6 +151,11 @@ struct v3d_dev { struct drm_mm mm; spinlock_t mm_lock; @@ -51,7 +51,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20240923141348.2422499-6-mca struct work_struct overflow_mem_work; struct v3d_bin_job *bin_job; -@@ -540,6 +545,10 @@ void v3d_reset(struct v3d_dev *v3d); +@@ -548,6 +553,10 @@ void v3d_reset(struct v3d_dev *v3d); void v3d_invalidate_caches(struct v3d_dev *v3d); void v3d_clean_caches(struct v3d_dev *v3d); @@ -64,7 +64,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20240923141348.2422499-6-mca void v3d_job_put(struct v3d_job *job); --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c -@@ -291,6 +291,8 @@ v3d_gem_init(struct drm_device *dev) +@@ -293,6 +293,8 @@ v3d_gem_init(struct drm_device *dev) v3d_init_hw_state(v3d); v3d_mmu_set_page_table(v3d); @@ -73,7 +73,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20240923141348.2422499-6-mca ret = v3d_sched_init(v3d); if (ret) { drm_mm_takedown(&v3d->mm); -@@ -308,6 +310,7 @@ v3d_gem_destroy(struct drm_device *dev) +@@ -310,6 +312,7 @@ v3d_gem_destroy(struct drm_device *dev) struct v3d_dev *v3d = to_v3d_dev(dev); v3d_sched_fini(v3d); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0772-drm-v3d-Add-modparam-for-turning-off-Big-Super-Pages.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0772-drm-v3d-Add-modparam-for-turning-off-Big-Super-Pages.patch index 3757f2eb66..9d21a30aaa 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0772-drm-v3d-Add-modparam-for-turning-off-Big-Super-Pages.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0772-drm-v3d-Add-modparam-for-turning-off-Big-Super-Pages.patch @@ -39,7 +39,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20240923141348.2422499-11-mc { --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -545,6 +545,7 @@ void v3d_invalidate_caches(struct v3d_de +@@ -553,6 +553,7 @@ void v3d_invalidate_caches(struct v3d_de void v3d_clean_caches(struct v3d_dev *v3d); /* v3d_gemfs.c */ diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch index fe4c8136fb..d33cd574ae 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch @@ -39,7 +39,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20241202140615.74802-1-chris static const struct drm_driver v3d_drm_driver = { --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -189,6 +189,12 @@ struct v3d_dev { +@@ -197,6 +197,12 @@ struct v3d_dev { u32 num_allocated; u32 pages_allocated; } bo_stats; @@ -52,7 +52,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20241202140615.74802-1-chris }; static inline struct v3d_dev * -@@ -600,6 +606,8 @@ int v3d_perfmon_get_values_ioctl(struct +@@ -608,6 +614,8 @@ int v3d_perfmon_get_values_ioctl(struct struct drm_file *file_priv); int v3d_perfmon_get_counter_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch index 8ecf113d8e..9cb1524aa0 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch @@ -25,7 +25,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20250113154741.67520-2-mcana --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -153,7 +153,6 @@ struct v3d_dev { +@@ -161,7 +161,6 @@ struct v3d_dev { struct v3d_render_job *render_job; struct v3d_tfu_job *tfu_job; struct v3d_csd_job *csd_job; diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch index 4ab4ac72ab..176c04ec2b 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch @@ -324,8 +324,8 @@ Signed-off-by: Maíra Canal goto clk_disable; --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -94,11 +94,18 @@ struct v3d_perfmon { - u64 values[] __counted_by(ncounters); +@@ -100,11 +100,18 @@ enum v3d_irq { + V3D_MAX_IRQS, }; +enum v3d_gen { @@ -344,7 +344,7 @@ Signed-off-by: Maíra Canal /* Short representation (e.g. 5, 6) of the V3D tech revision */ int rev; -@@ -205,7 +212,7 @@ to_v3d_dev(struct drm_device *dev) +@@ -213,7 +220,7 @@ to_v3d_dev(struct drm_device *dev) static inline bool v3d_has_csd(struct v3d_dev *v3d) { @@ -373,7 +373,7 @@ Signed-off-by: Maíra Canal return; V3D_GCA_WRITE(V3D_GCA_SAFE_SHUTDOWN, V3D_GCA_SAFE_SHUTDOWN_EN); -@@ -133,13 +133,13 @@ v3d_reset(struct v3d_dev *v3d) +@@ -135,13 +135,13 @@ v3d_reset(struct v3d_dev *v3d) static void v3d_flush_l3(struct v3d_dev *v3d) { @@ -389,7 +389,7 @@ Signed-off-by: Maíra Canal V3D_GCA_WRITE(V3D_GCA_CACHE_CTRL, gca_ctrl & ~V3D_GCA_CACHE_CTRL_FLUSH); } -@@ -152,7 +152,7 @@ v3d_flush_l3(struct v3d_dev *v3d) +@@ -154,7 +154,7 @@ v3d_flush_l3(struct v3d_dev *v3d) static void v3d_invalidate_l2c(struct v3d_dev *v3d, int core) { diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0863-drm-v3d-Use-V3D_SMS-registers-for-power-on-off-and-r.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0863-drm-v3d-Use-V3D_SMS-registers-for-power-on-off-and-r.patch index 813c47c9fd..aa5c14271f 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0863-drm-v3d-Use-V3D_SMS-registers-for-power-on-off-and-r.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0863-drm-v3d-Use-V3D_SMS-registers-for-power-on-off-and-r.patch @@ -40,7 +40,7 @@ Signed-off-by: Maíra Canal --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h -@@ -118,6 +118,7 @@ struct v3d_dev { +@@ -126,6 +126,7 @@ struct v3d_dev { void __iomem *core_regs[3]; void __iomem *bridge_regs; void __iomem *gca_regs; @@ -48,7 +48,7 @@ Signed-off-by: Maíra Canal struct clk *clk; struct delayed_work clk_down_work; unsigned long clk_up_rate, clk_down_rate; -@@ -274,6 +275,15 @@ to_v3d_fence(struct dma_fence *fence) +@@ -282,6 +283,15 @@ to_v3d_fence(struct dma_fence *fence) #define V3D_GCA_READ(offset) readl(v3d->gca_regs + offset) #define V3D_GCA_WRITE(offset, val) writel(val, v3d->gca_regs + offset) @@ -64,7 +64,7 @@ Signed-off-by: Maíra Canal #define V3D_CORE_READ(core, offset) readl(v3d->core_regs[core] + offset) #define V3D_CORE_WRITE(core, offset, val) writel(val, v3d->core_regs[core] + offset) -@@ -552,6 +562,7 @@ struct dma_fence *v3d_fence_create(struc +@@ -560,6 +570,7 @@ struct dma_fence *v3d_fence_create(struc /* v3d_gem.c */ int v3d_gem_init(struct drm_device *dev); void v3d_gem_destroy(struct drm_device *dev); @@ -97,8 +97,8 @@ Signed-off-by: Maíra Canal v3d_reset(struct v3d_dev *v3d) { struct drm_device *dev = &v3d->drm; -@@ -120,6 +136,7 @@ v3d_reset(struct v3d_dev *v3d) - v3d_idle_axi(v3d, 0); +@@ -122,6 +138,7 @@ v3d_reset(struct v3d_dev *v3d) + v3d_irq_disable(v3d); v3d_idle_gca(v3d); + v3d_reset_sms(v3d); diff --git a/lede/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch b/lede/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch index 5f577250fc..8be659cdd0 100644 --- a/lede/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch +++ b/lede/target/linux/bcm27xx/patches-6.12/950-0950-usb-xhci-default-to-Intel-scheme-for-calculating-U1-.patch @@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring) { struct xhci_segment *seg = ring->first_seg; -@@ -4807,7 +4811,7 @@ static u16 xhci_calculate_u1_timeout(str +@@ -4786,7 +4790,7 @@ static u16 xhci_calculate_u1_timeout(str } } @@ -49,7 +49,7 @@ Signed-off-by: Jonathan Bell timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc); else timeout_ns = udev->u1_params.sel; -@@ -4871,7 +4875,7 @@ static u16 xhci_calculate_u2_timeout(str +@@ -4850,7 +4854,7 @@ static u16 xhci_calculate_u2_timeout(str } } diff --git a/lede/target/linux/generic/backport-6.12/780-01-v6.13-r8169-remove-original-workaround-for-RTL8125-broken-.patch b/lede/target/linux/generic/backport-6.12/780-01-v6.13-r8169-remove-original-workaround-for-RTL8125-broken-.patch index 080dae31e6..ed79d3914e 100644 --- a/lede/target/linux/generic/backport-6.12/780-01-v6.13-r8169-remove-original-workaround-for-RTL8125-broken-.patch +++ b/lede/target/linux/generic/backport-6.12/780-01-v6.13-r8169-remove-original-workaround-for-RTL8125-broken-.patch @@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c -@@ -4804,11 +4804,7 @@ static void r8169_phylink_handler(struct +@@ -4813,11 +4813,7 @@ static void r8169_phylink_handler(struct if (netif_carrier_ok(ndev)) { rtl_link_chg_patch(tp); pm_request_resume(d); diff --git a/lede/target/linux/generic/backport-6.12/780-02-v6.13-r8169-enable-SG-TSO-on-selected-chip-versions-per-de.patch b/lede/target/linux/generic/backport-6.12/780-02-v6.13-r8169-enable-SG-TSO-on-selected-chip-versions-per-de.patch index f7d2d23c2a..67823d4363 100644 --- a/lede/target/linux/generic/backport-6.12/780-02-v6.13-r8169-enable-SG-TSO-on-selected-chip-versions-per-de.patch +++ b/lede/target/linux/generic/backport-6.12/780-02-v6.13-r8169-enable-SG-TSO-on-selected-chip-versions-per-de.patch @@ -20,7 +20,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c -@@ -5517,11 +5517,6 @@ static int rtl_init_one(struct pci_dev * +@@ -5526,11 +5526,6 @@ static int rtl_init_one(struct pci_dev * dev->features |= dev->hw_features; @@ -32,7 +32,7 @@ Signed-off-by: David S. Miller if (rtl_chip_supports_csum_v2(tp)) { dev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6; netif_set_tso_max_size(dev, RTL_GSO_MAX_SIZE_V2); -@@ -5532,6 +5527,17 @@ static int rtl_init_one(struct pci_dev * +@@ -5541,6 +5536,17 @@ static int rtl_init_one(struct pci_dev * netif_set_tso_max_segs(dev, RTL_GSO_MAX_SEGS_V1); } diff --git a/lede/target/linux/generic/backport-6.12/780-03-v6.13-r8169-implement-additional-ethtool-stats-ops.patch b/lede/target/linux/generic/backport-6.12/780-03-v6.13-r8169-implement-additional-ethtool-stats-ops.patch index cef8e1e471..8ecb5c794c 100644 --- a/lede/target/linux/generic/backport-6.12/780-03-v6.13-r8169-implement-additional-ethtool-stats-ops.patch +++ b/lede/target/linux/generic/backport-6.12/780-03-v6.13-r8169-implement-additional-ethtool-stats-ops.patch @@ -118,7 +118,7 @@ Signed-off-by: Jakub Kicinski }; static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii) -@@ -3920,6 +3999,9 @@ static void rtl_hw_start_8125(struct rtl +@@ -3929,6 +4008,9 @@ static void rtl_hw_start_8125(struct rtl break; } diff --git a/lede/target/linux/generic/backport-6.12/780-04-v6.13-r8169-don-t-take-RTNL-lock-in-rtl_task.patch b/lede/target/linux/generic/backport-6.12/780-04-v6.13-r8169-don-t-take-RTNL-lock-in-rtl_task.patch index ef360d062a..dd42817b99 100644 --- a/lede/target/linux/generic/backport-6.12/780-04-v6.13-r8169-don-t-take-RTNL-lock-in-rtl_task.patch +++ b/lede/target/linux/generic/backport-6.12/780-04-v6.13-r8169-don-t-take-RTNL-lock-in-rtl_task.patch @@ -18,7 +18,7 @@ Signed-off-by: Andrew Lunn --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c -@@ -4827,10 +4827,8 @@ static void rtl_task(struct work_struct +@@ -4836,10 +4836,8 @@ static void rtl_task(struct work_struct container_of(work, struct rtl8169_private, wk.work); int ret; @@ -30,7 +30,7 @@ Signed-off-by: Andrew Lunn if (test_and_clear_bit(RTL_FLAG_TASK_TX_TIMEOUT, tp->wk.flags)) { /* if chip isn't accessible, reset bus to revive it */ -@@ -4839,7 +4837,7 @@ static void rtl_task(struct work_struct +@@ -4848,7 +4846,7 @@ static void rtl_task(struct work_struct if (ret < 0) { netdev_err(tp->dev, "Can't reset secondary PCI bus, detach NIC\n"); netif_device_detach(tp->dev); @@ -39,7 +39,7 @@ Signed-off-by: Andrew Lunn } } -@@ -4858,8 +4856,6 @@ reset: +@@ -4867,8 +4865,6 @@ reset: } else if (test_and_clear_bit(RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE, tp->wk.flags)) { rtl_reset_work(tp); } diff --git a/lede/target/linux/generic/backport-6.12/780-05-v6.13-replace-custom-flag-with-disable_work-et-al.patch b/lede/target/linux/generic/backport-6.12/780-05-v6.13-replace-custom-flag-with-disable_work-et-al.patch index 304515fe81..ae4bc15e30 100644 --- a/lede/target/linux/generic/backport-6.12/780-05-v6.13-replace-custom-flag-with-disable_work-et-al.patch +++ b/lede/target/linux/generic/backport-6.12/780-05-v6.13-replace-custom-flag-with-disable_work-et-al.patch @@ -17,7 +17,7 @@ Signed-off-by: Andrew Lunn --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c -@@ -617,7 +617,6 @@ struct rtl8169_tc_offsets { +@@ -619,7 +619,6 @@ struct rtl8169_tc_offsets { }; enum rtl_flag { @@ -25,7 +25,7 @@ Signed-off-by: Andrew Lunn RTL_FLAG_TASK_RESET_PENDING, RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE, RTL_FLAG_TASK_TX_TIMEOUT, -@@ -2502,11 +2501,9 @@ u16 rtl8168h_2_get_adc_bias_ioffset(stru +@@ -2505,11 +2504,9 @@ u16 rtl8168h_2_get_adc_bias_ioffset(stru static void rtl_schedule_task(struct rtl8169_private *tp, enum rtl_flag flag) { @@ -39,7 +39,7 @@ Signed-off-by: Andrew Lunn } static void rtl8169_init_phy(struct rtl8169_private *tp) -@@ -4827,9 +4824,6 @@ static void rtl_task(struct work_struct +@@ -4836,9 +4833,6 @@ static void rtl_task(struct work_struct container_of(work, struct rtl8169_private, wk.work); int ret; @@ -49,7 +49,7 @@ Signed-off-by: Andrew Lunn if (test_and_clear_bit(RTL_FLAG_TASK_TX_TIMEOUT, tp->wk.flags)) { /* if chip isn't accessible, reset bus to revive it */ if (RTL_R32(tp, TxConfig) == ~0) { -@@ -4913,6 +4907,7 @@ static int r8169_phy_connect(struct rtl8 +@@ -4922,6 +4916,7 @@ static int r8169_phy_connect(struct rtl8 static void rtl8169_down(struct rtl8169_private *tp) { @@ -57,7 +57,7 @@ Signed-off-by: Andrew Lunn /* Clear all task flags */ bitmap_zero(tp->wk.flags, RTL_FLAG_MAX); -@@ -4941,7 +4936,7 @@ static void rtl8169_up(struct rtl8169_pr +@@ -4950,7 +4945,7 @@ static void rtl8169_up(struct rtl8169_pr phy_resume(tp->phydev); rtl8169_init_phy(tp); napi_enable(&tp->napi); @@ -66,7 +66,7 @@ Signed-off-by: Andrew Lunn rtl_reset_work(tp); phy_start(tp->phydev); -@@ -4958,8 +4953,6 @@ static int rtl8169_close(struct net_devi +@@ -4967,8 +4962,6 @@ static int rtl8169_close(struct net_devi rtl8169_down(tp); rtl8169_rx_clear(tp); @@ -75,7 +75,7 @@ Signed-off-by: Andrew Lunn free_irq(tp->irq, tp); phy_disconnect(tp->phydev); -@@ -5192,7 +5185,7 @@ static void rtl_remove_one(struct pci_de +@@ -5201,7 +5194,7 @@ static void rtl_remove_one(struct pci_de if (pci_dev_run_wake(pdev)) pm_runtime_get_noresume(&pdev->dev); @@ -84,7 +84,7 @@ Signed-off-by: Andrew Lunn if (IS_ENABLED(CONFIG_R8169_LEDS)) r8169_remove_leds(tp->leds); -@@ -5570,6 +5563,7 @@ static int rtl_init_one(struct pci_dev * +@@ -5579,6 +5572,7 @@ static int rtl_init_one(struct pci_dev * tp->irq = pci_irq_vector(pdev, 0); INIT_WORK(&tp->wk.work, rtl_task); diff --git a/lede/target/linux/generic/backport-6.12/780-07-v6.13-r8169-remove-rtl_dash_loop_wait_high-low.patch b/lede/target/linux/generic/backport-6.12/780-07-v6.13-r8169-remove-rtl_dash_loop_wait_high-low.patch index 1e3c47f089..bc8f979c20 100644 --- a/lede/target/linux/generic/backport-6.12/780-07-v6.13-r8169-remove-rtl_dash_loop_wait_high-low.patch +++ b/lede/target/linux/generic/backport-6.12/780-07-v6.13-r8169-remove-rtl_dash_loop_wait_high-low.patch @@ -15,7 +15,7 @@ Signed-off-by: Andrew Lunn --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c -@@ -1345,40 +1345,19 @@ static void rtl8168ep_stop_cmac(struct r +@@ -1348,40 +1348,19 @@ static void rtl8168ep_stop_cmac(struct r RTL_W8(tp, IBCR0, RTL_R8(tp, IBCR0) & ~0x01); } @@ -60,7 +60,7 @@ Signed-off-by: Andrew Lunn } static void rtl8168_driver_start(struct rtl8169_private *tp) -@@ -1392,7 +1371,8 @@ static void rtl8168_driver_start(struct +@@ -1395,7 +1374,8 @@ static void rtl8168_driver_start(struct static void rtl8168dp_driver_stop(struct rtl8169_private *tp) { r8168dp_oob_notify(tp, OOB_CMD_DRIVER_STOP); @@ -70,7 +70,7 @@ Signed-off-by: Andrew Lunn } static void rtl8168ep_driver_stop(struct rtl8169_private *tp) -@@ -1400,7 +1380,8 @@ static void rtl8168ep_driver_stop(struct +@@ -1403,7 +1383,8 @@ static void rtl8168ep_driver_stop(struct rtl8168ep_stop_cmac(tp); r8168ep_ocp_write(tp, 0x01, 0x180, OOB_CMD_DRIVER_STOP); r8168ep_ocp_write(tp, 0x01, 0x30, r8168ep_ocp_read(tp, 0x30) | 0x01); diff --git a/lede/target/linux/generic/backport-6.12/781-01-v6.13-net-phy-realtek-read-duplex-and-gbit-master-from-PHY.patch b/lede/target/linux/generic/backport-6.12/781-01-v6.13-net-phy-realtek-read-duplex-and-gbit-master-from-PHY.patch index 2a1726ac80..31b8aabf7a 100644 --- a/lede/target/linux/generic/backport-6.12/781-01-v6.13-net-phy-realtek-read-duplex-and-gbit-master-from-PHY.patch +++ b/lede/target/linux/generic/backport-6.12/781-01-v6.13-net-phy-realtek-read-duplex-and-gbit-master-from-PHY.patch @@ -40,7 +40,7 @@ Signed-off-by: Paolo Abeni #define RTL_GENERIC_PHYID 0x001cc800 #define RTL_8211FVD_PHYID 0x001cc878 -@@ -660,9 +663,18 @@ static int rtl8366rb_config_init(struct +@@ -661,9 +664,18 @@ static int rtl8366rb_config_init(struct } /* get actual speed to cover the downshift case */ @@ -61,7 +61,7 @@ Signed-off-by: Paolo Abeni case 0x0000: phydev->speed = SPEED_10; break; -@@ -684,6 +696,19 @@ static void rtlgen_decode_speed(struct p +@@ -685,6 +697,19 @@ static void rtlgen_decode_speed(struct p default: break; } @@ -81,7 +81,7 @@ Signed-off-by: Paolo Abeni } static int rtlgen_read_status(struct phy_device *phydev) -@@ -701,7 +726,7 @@ static int rtlgen_read_status(struct phy +@@ -702,7 +727,7 @@ static int rtlgen_read_status(struct phy if (val < 0) return val; @@ -90,7 +90,7 @@ Signed-off-by: Paolo Abeni return 0; } -@@ -1007,11 +1032,11 @@ static int rtl822x_c45_read_status(struc +@@ -1008,11 +1033,11 @@ static int rtl822x_c45_read_status(struc return 0; /* Read actual speed from vendor register. */ diff --git a/lede/target/linux/generic/backport-6.12/781-02-v6.13-net-phy-realtek-change-order-of-calls-in-C22-read_st.patch b/lede/target/linux/generic/backport-6.12/781-02-v6.13-net-phy-realtek-change-order-of-calls-in-C22-read_st.patch index 4341adb878..2e5d7bb3b4 100644 --- a/lede/target/linux/generic/backport-6.12/781-02-v6.13-net-phy-realtek-change-order-of-calls-in-C22-read_st.patch +++ b/lede/target/linux/generic/backport-6.12/781-02-v6.13-net-phy-realtek-change-order-of-calls-in-C22-read_st.patch @@ -18,7 +18,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c -@@ -949,17 +949,25 @@ static void rtl822xb_update_interface(st +@@ -950,17 +950,25 @@ static void rtl822xb_update_interface(st static int rtl822x_read_status(struct phy_device *phydev) { diff --git a/lede/target/linux/generic/backport-6.12/781-03-v6.13-net-phy-realtek-clear-1000Base-T-link-partner-advert.patch b/lede/target/linux/generic/backport-6.12/781-03-v6.13-net-phy-realtek-clear-1000Base-T-link-partner-advert.patch index 60cd125a22..f7d8a5aa16 100644 --- a/lede/target/linux/generic/backport-6.12/781-03-v6.13-net-phy-realtek-clear-1000Base-T-link-partner-advert.patch +++ b/lede/target/linux/generic/backport-6.12/781-03-v6.13-net-phy-realtek-clear-1000Base-T-link-partner-advert.patch @@ -17,7 +17,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c -@@ -1026,6 +1026,10 @@ static int rtl822x_c45_read_status(struc +@@ -1027,6 +1027,10 @@ static int rtl822x_c45_read_status(struc if (ret < 0) return ret; diff --git a/lede/target/linux/generic/backport-6.12/792-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch b/lede/target/linux/generic/backport-6.12/792-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch index e231bc8d49..48d03f15e7 100644 --- a/lede/target/linux/generic/backport-6.12/792-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch +++ b/lede/target/linux/generic/backport-6.12/792-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch @@ -20,7 +20,7 @@ Signed-off-by: Rui Salvaterra --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c -@@ -7066,6 +7066,9 @@ static int igc_probe(struct pci_dev *pde +@@ -7070,6 +7070,9 @@ static int igc_probe(struct pci_dev *pde netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT | NETDEV_XDP_ACT_XSK_ZEROCOPY; diff --git a/lede/target/linux/generic/hack-6.12/902-debloat_proc.patch b/lede/target/linux/generic/hack-6.12/902-debloat_proc.patch index 2bc77873fd..ce89e4ba13 100644 --- a/lede/target/linux/generic/hack-6.12/902-debloat_proc.patch +++ b/lede/target/linux/generic/hack-6.12/902-debloat_proc.patch @@ -235,15 +235,16 @@ Signed-off-by: Felix Fietkau if (!pe) --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -5054,6 +5054,8 @@ static int __init proc_vmalloc_init(void - { - void *priv_data = NULL; +@@ -5066,6 +5066,9 @@ static int vmalloc_info_show(struct seq_ + static int __init proc_vmalloc_init(void) + { + if (IS_ENABLED(CONFIG_PROC_STRIPPED)) + return 0; - if (IS_ENABLED(CONFIG_NUMA)) - priv_data = kmalloc(nr_node_ids * sizeof(unsigned int), GFP_KERNEL); - ++ + proc_create_single("vmallocinfo", 0400, NULL, vmalloc_info_show); + return 0; + } --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -2195,10 +2195,12 @@ void __init init_mm_internals(void) diff --git a/lede/target/linux/generic/pending-5.10/270-platform-mikrotik-build-bits.patch b/lede/target/linux/generic/pending-5.10/270-platform-mikrotik-build-bits.patch index 1d888fa909..c6f6f448de 100644 --- a/lede/target/linux/generic/pending-5.10/270-platform-mikrotik-build-bits.patch +++ b/lede/target/linux/generic/pending-5.10/270-platform-mikrotik-build-bits.patch @@ -1,4 +1,3 @@ - From c2deb5ef01a0ef09088832744cbace9e239a6ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibaut=20VAR=C3=88NE?= Date: Sat, 28 Mar 2020 12:11:50 +0100 diff --git a/lede/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch b/lede/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch index 1d888fa909..c6f6f448de 100644 --- a/lede/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch +++ b/lede/target/linux/generic/pending-5.4/270-platform-mikrotik-build-bits.patch @@ -1,4 +1,3 @@ - From c2deb5ef01a0ef09088832744cbace9e239a6ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibaut=20VAR=C3=88NE?= Date: Sat, 28 Mar 2020 12:11:50 +0100 diff --git a/lede/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch b/lede/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch index 9788ded24c..34e7a44beb 100644 --- a/lede/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch +++ b/lede/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau if (sk_can_gso(sk)) { --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -2012,7 +2012,7 @@ void ieee80211_color_collision_detection +@@ -2021,7 +2021,7 @@ void ieee80211_color_collision_detection /* interface handling */ #define MAC80211_SUPPORTED_FEATURES_TX (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | \ NETIF_F_HW_CSUM | NETIF_F_SG | \ diff --git a/lede/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch b/lede/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch index 270e447a81..1578b72bf1 100644 --- a/lede/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch +++ b/lede/target/linux/mediatek/patches-6.12/330-snand-mtk-bmt-support.patch @@ -8,7 +8,7 @@ static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) { -@@ -1525,6 +1526,7 @@ static int spinand_probe(struct spi_mem +@@ -1526,6 +1527,7 @@ static int spinand_probe(struct spi_mem if (ret) return ret; @@ -16,7 +16,7 @@ ret = mtd_device_register(mtd, NULL, 0); if (ret) goto err_spinand_cleanup; -@@ -1532,6 +1534,7 @@ static int spinand_probe(struct spi_mem +@@ -1533,6 +1535,7 @@ static int spinand_probe(struct spi_mem return 0; err_spinand_cleanup: @@ -24,7 +24,7 @@ spinand_cleanup(spinand); return ret; -@@ -1550,6 +1553,7 @@ static int spinand_remove(struct spi_mem +@@ -1551,6 +1554,7 @@ static int spinand_remove(struct spi_mem if (ret) return ret; diff --git a/nodepass/README.md b/nodepass/README.md index 760a91e802..9acc561e73 100644 --- a/nodepass/README.md +++ b/nodepass/README.md @@ -1,7 +1,7 @@
nodepass -[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go) +[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go#networking) [![GitHub release](https://img.shields.io/github/v/release/yosebyte/nodepass)](https://github.com/yosebyte/nodepass/releases) [![GitHub downloads](https://img.shields.io/github/downloads/yosebyte/nodepass/total.svg)](https://github.com/yosebyte/nodepass/releases) [![Go Report Card](https://goreportcard.com/badge/github.com/yosebyte/nodepass)](https://goreportcard.com/report/github.com/yosebyte/nodepass) @@ -18,7 +18,7 @@ English | [简体中文](README_zh.md) ## 💎 Key Features - **🌐 Universal Functionality** - - Supports TCP/UDP tunneling and protocol conversion across diverse networks. + - Basic TCP/UDP tunneling and protocol conversion across diverse networks. - Compatible with port mapping, NAT traversal, and traffic relay. - Cross-platform, multi-architecture, single binary or container. @@ -27,20 +27,20 @@ English | [简体中文](README_zh.md) - Eliminates handshake delays, boosts performance. - Auto-scaling with real-time capacity adjustment. -- **⚙️ Zero-Config** - - No config files required, ready to use via CLI. - - Optimized for CI/CD and containers. - - Flexible tuning via environment variables. +- **🧬 Innovative Architecture** + - Integrated S/C/M architecture, flexible mode switching. + - Full decoupling of control/data channels. + - API-instance management, multi-instance collaboration. - **🔐 Multi-level Security** - Three TLS modes: plaintext, self-signed, strict validation. - Covers development to enterprise security needs. - Hot-reload certificates with zero downtime. -- **🧠 Innovative Architecture** - - Integrated S/C/M architecture, flexible mode switching. - - Full decoupling of control/data channels. - - API-instance management, multi-instance collaboration. +- **⚙️ Minimal Configuration** + - No config files required, ready to use via CLI. + - Optimized for CI/CD and containers. + - Flexible tuning via environment variables. - **📈 Performance** - Intelligent scheduling, auto-tuning, ultra-low resource usage. @@ -88,7 +88,7 @@ Explore the complete documentation to learn more about NodePass: - [How It Works](/docs/en/how-it-works.md) - [Troubleshooting](/docs/en/troubleshooting.md) -## 🌐 Ecosystem +## 🌱 Ecosystem The [NodePassProject](https://github.com/NodePassProject) organization develops various frontend applications and auxiliary tools to enhance the NodePass experience: diff --git a/nodepass/README_zh.md b/nodepass/README_zh.md index 406506708d..f108c848c7 100644 --- a/nodepass/README_zh.md +++ b/nodepass/README_zh.md @@ -1,7 +1,7 @@
nodepass -[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go) +[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go#networking) [![GitHub release](https://img.shields.io/github/v/release/yosebyte/nodepass)](https://github.com/yosebyte/nodepass/releases) [![GitHub downloads](https://img.shields.io/github/downloads/yosebyte/nodepass/total.svg)](https://github.com/yosebyte/nodepass/releases) [![Go Report Card](https://goreportcard.com/badge/github.com/yosebyte/nodepass)](https://goreportcard.com/report/github.com/yosebyte/nodepass) @@ -18,7 +18,7 @@ ## 💎 核心功能 - **🌐 通用网络隧道** - - 支持 TCP/UDP 隧道,具备协议转换能力,适配多种网络结构。 + - 基础 TCP/UDP 隧道,具备协议转换能力,适配多种网络结构。 - 完整适配端口映射、内网穿透、流量中转等多场景应用需求。 - 多平台、多架构支持,支持独立二进制文件、容器灵活部署。 @@ -27,27 +27,27 @@ - 消除连接的握手等待,显著提升了性能体验。 - 支持实时容量自适应,动态调整连接池规模。 -- **⚙️ 零配置启动** - - 无需配置文件,仅命令行参数即可运行,适合自动化和快速迭代。 - - 适配 CI/CD 流程与容器环境,极大提升部署和运维效率。 - - 支持环境变量性能调优,灵活适应不同运行环境。 +- **🧬 创新架构设计** + - Server-Client-Master 多模式整合架构设计,灵活切换。 + - 将 S/C 控制通道与数据通道完全解耦,相互独立、各司其职。 + - 主控-实例的管理方式,支持动态扩容、多实例协作和集中控制。 - **🔐 多级安全策略** - 三种 TLS 模式:明文、自签名、严格验证,适配不同安全等级。 - 满足从开发测试到企业级高安全部署的全场景需求。 - 支持证书文件的热重载,免停运、无缝处理证书更新问题。 -- **🧠 创新架构设计** - - Server-Client-Master 多模式整合架构设计,灵活切换。 - - 将 S/C 控制通道与数据通道完全解耦,相互独立、各司其职。 - - 主控-实例的管理方式,支持动态扩容、多实例协作和集中控制。 +- **⚙️ 极简配置方式** + - 无需配置文件,仅命令行参数即可运行,适合自动化和快速迭代。 + - 适配 CI/CD 流程与容器环境,极大提升部署和运维效率。 + - 支持环境变量性能调优,灵活适应不同运行环境。 - **📈 高性能优化** - 智能流量调度与自动连接调优,极低资源占用。 - 高并发、高负载状态下卓越的系统稳定性能。 - 健康检查、断线重连、故障自愈,确保持续高可用。 -- **💡 可视化生态** +- **💡 可视化管理** - 配套跨平台、多样化的管理前端应用,具备可视化配置能力。 - 主流平台支持一键部署脚本,支撑灵活配置和辅助管理。 - 具备实时隧道监控、实例管理、主控管理、流量统计等丰富功能。 @@ -88,7 +88,7 @@ nodepass "master://:10101/api?log=debug&tls=1" - [工作原理](/docs/zh/how-it-works.md) - [故障排除](/docs/zh/troubleshooting.md) -## 🌐 生态系统 +## 🌱 生态系统 [NodePassProject](https://github.com/NodePassProject) 组织开发了各种前端应用和辅助工具来增强 NodePass 体验: diff --git a/nodepass/go.mod b/nodepass/go.mod index 57a7199dc3..7ee3952692 100644 --- a/nodepass/go.mod +++ b/nodepass/go.mod @@ -6,5 +6,5 @@ require ( github.com/NodePassProject/cert v1.0.0 github.com/NodePassProject/conn v1.0.1 github.com/NodePassProject/logs v1.0.1 - github.com/NodePassProject/pool v1.0.8 + github.com/NodePassProject/pool v1.0.9 ) diff --git a/nodepass/go.sum b/nodepass/go.sum index 36b649b851..14b8b13af2 100644 --- a/nodepass/go.sum +++ b/nodepass/go.sum @@ -4,5 +4,5 @@ github.com/NodePassProject/conn v1.0.1 h1:vuzcQQj+cqENagzEYPwse9Vvlj/8vfkyNZCp5R github.com/NodePassProject/conn v1.0.1/go.mod h1:mWe3Rylunp6Sx4v6pkSGgYZe2R+I/O+7nZ2od0yJ3aQ= github.com/NodePassProject/logs v1.0.1 h1:WDHY1DcTO+7NydBzuRpxhEw6pWYayBdDjjZzU1uDKac= github.com/NodePassProject/logs v1.0.1/go.mod h1:ocFTMNXBTnQFJFAhF+qobAzu7+y+wYPik7D+a1jPfis= -github.com/NodePassProject/pool v1.0.8 h1:zuqVdQj0OBarIo/P/BdpTxXk8kbjU2GYJJaVA5T+LwQ= -github.com/NodePassProject/pool v1.0.8/go.mod h1:kdRAEDK45j/+iHH4kRTpXt/wI28NIguJ13n/5NDXxkw= +github.com/NodePassProject/pool v1.0.9 h1:8VKKv8kJqg1FX9Odx9Vu2eTUOpO2G84uSfiyDTuHvvA= +github.com/NodePassProject/pool v1.0.9/go.mod h1:kdRAEDK45j/+iHH4kRTpXt/wI28NIguJ13n/5NDXxkw= diff --git a/nodepass/internal/common.go b/nodepass/internal/common.go index b4d2ab3e84..a973c009c2 100644 --- a/nodepass/internal/common.go +++ b/nodepass/internal/common.go @@ -401,12 +401,6 @@ func (c *Common) commonTCPLoop() { continue } - defer func() { - if targetConn != nil { - targetConn.Close() - } - }() - c.targetTCPConn = targetConn.(*net.TCPConn) c.logger.Debug("Target connection: %v <-> %v", targetConn.LocalAddr(), targetConn.RemoteAddr()) @@ -414,7 +408,12 @@ func (c *Common) commonTCPLoop() { c.semaphore <- struct{}{} go func(targetConn net.Conn) { - defer func() { <-c.semaphore }() + defer func() { + if targetConn != nil { + targetConn.Close() + } + <-c.semaphore + }() // 从连接池获取连接 id, remoteConn := c.tunnelPool.ServerGet() @@ -448,7 +447,7 @@ func (c *Common) commonTCPLoop() { return } - c.logger.Debug("TCP launch signal: %v -> %v", id, c.tunnelTCPConn.RemoteAddr()) + c.logger.Debug("TCP launch signal: pid %v -> %v", id, c.tunnelTCPConn.RemoteAddr()) c.logger.Debug("Starting exchange: %v <-> %v", remoteConn.LocalAddr(), targetConn.LocalAddr()) // 交换数据 @@ -468,8 +467,9 @@ func (c *Common) commonUDPLoop() { case <-c.ctx.Done(): return default: - // 读取来自目标的UDP数据 buffer := make([]byte, udpDataBufSize) + + // 读取来自目标的UDP数据 n, clientAddr, err := c.targetUDPConn.ReadFromUDP(buffer) if err != nil { continue @@ -477,7 +477,7 @@ func (c *Common) commonUDPLoop() { c.logger.Debug("Target connection: %v <-> %v", c.targetUDPConn.LocalAddr(), clientAddr) - // 从连接池获取连接 + // 获取池连接 id, remoteConn := c.tunnelPool.ServerGet() if remoteConn == nil { c.logger.Error("Get failed: %v not found", id) @@ -486,51 +486,84 @@ func (c *Common) commonUDPLoop() { } c.logger.Debug("Tunnel connection: get %v <- pool active %v", id, c.tunnelPool.Active()) - - defer func() { - c.tunnelPool.Put(id, remoteConn) - c.logger.Debug("Tunnel connection: put %v -> pool active %v", id, c.tunnelPool.Active()) - }() - c.logger.Debug("Tunnel connection: %v <-> %v", remoteConn.LocalAddr(), remoteConn.RemoteAddr()) // 使用信号量限制并发数 c.semaphore <- struct{}{} - go func(buffer []byte, n int, clientAddr *net.UDPAddr, remoteConn net.Conn) { - defer func() { <-c.semaphore }() + go func(remoteConn net.Conn, clientAddr *net.UDPAddr, id string) { + defer func() { + c.tunnelPool.Put(id, remoteConn) + c.logger.Debug("Tunnel connection: put %v -> pool active %v", id, c.tunnelPool.Active()) + <-c.semaphore + }() - // 构建并发送启动URL到客户端 - launchURL := &url.URL{ - Host: id, - Fragment: "2", // UDP模式 + buffer := make([]byte, udpDataBufSize) + + for { + select { + case <-c.ctx.Done(): + return + default: + // 设置TCP读取超时 + if err := remoteConn.SetReadDeadline(time.Now().Add(tcpReadTimeout)); err != nil { + c.logger.Error("SetReadDeadline failed: %v", err) + return + } + + // 从池连接读取数据 + x, err := remoteConn.Read(buffer) + if err != nil { + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + c.logger.Debug("UDP session abort: %v", err) + } else if strings.Contains(err.Error(), "use of closed network connection") { + c.logger.Debug("Read closed: %v", err) + } else { + c.logger.Error("Read failed: %v", err) + } + return + } + + // 将数据写入目标UDP连接 + tx, err := c.targetUDPConn.WriteToUDP(buffer[:x], clientAddr) + if err != nil { + c.logger.Error("WriteToUDP failed: %v", err) + return + } + // 传输完成,广播统计信息 + c.logger.Event("Transfer complete: TRAFFIC_STATS|TCP_RX=0|TCP_TX=0|UDP_RX=0|UDP_TX=%v", tx) + } } + }(remoteConn, clientAddr, id) - c.mu.Lock() - _, err = c.tunnelTCPConn.Write(append(c.xor([]byte(launchURL.String())), '\n')) - c.mu.Unlock() + // 构建并发送启动URL到客户端 + launchURL := &url.URL{ + Host: clientAddr.String(), + Path: id, + Fragment: "2", // UDP模式 + } - if err != nil { - c.logger.Error("Write failed: %v", err) - return - } + c.mu.Lock() + _, err = c.tunnelTCPConn.Write(append(c.xor([]byte(launchURL.String())), '\n')) + c.mu.Unlock() + if err != nil { + c.logger.Error("Write failed: %v", err) + continue + } - c.logger.Debug("UDP launch signal: %v -> %v", id, c.tunnelTCPConn.RemoteAddr()) - c.logger.Debug("Starting transfer: %v <-> %v", remoteConn.LocalAddr(), c.targetUDPConn.LocalAddr()) + c.logger.Debug("UDP launch signal: pid %v -> %v", id, c.tunnelTCPConn.RemoteAddr()) + c.logger.Debug("Starting transfer: %v <-> %v", remoteConn.LocalAddr(), c.targetUDPConn.LocalAddr()) - // 处理UDP/TCP数据传输 - rx, tx, _ := conn.DataTransfer( - c.targetUDPConn, - remoteConn, - clientAddr, - buffer[:n], - udpDataBufSize, - tcpReadTimeout, - ) + // 将原始数据写入池连接 + rx, err := remoteConn.Write(buffer[:n]) + if err != nil { + c.logger.Error("Write failed: %v", err) + remoteConn.Close() + continue + } - // 传输完成,广播统计信息 - c.logger.Event("Transfer complete: TRAFFIC_STATS|TCP_RX=0|TCP_TX=0|UDP_RX=%v|UDP_TX=%v", rx, tx) - }(buffer, n, clientAddr, remoteConn) + // 传输完成,广播统计信息 + c.logger.Event("Transfer complete: TRAFFIC_STATS|TCP_RX=0|TCP_TX=0|UDP_RX=%v|UDP_TX=0", rx) } } } @@ -566,7 +599,7 @@ func (c *Common) commonOnce() { case "1": // TCP go c.commonTCPOnce(signalURL.Host) case "2": // UDP - go c.commonUDPOnce(signalURL.Host) + go c.commonUDPOnce(signalURL) default: // 健康检查或无效信号 } @@ -576,7 +609,7 @@ func (c *Common) commonOnce() { // commonTCPOnce 共用处理单个TCP请求 func (c *Common) commonTCPOnce(id string) { - c.logger.Debug("TCP launch signal: %v <- %v", id, c.tunnelTCPConn.RemoteAddr()) + c.logger.Debug("TCP launch signal: pid %v <- %v", id, c.tunnelTCPConn.RemoteAddr()) // 从连接池获取连接 remoteConn := c.tunnelPool.ClientGet(id) @@ -619,54 +652,125 @@ func (c *Common) commonTCPOnce(id string) { } // commonUDPOnce 共用处理单个UDP请求 -func (c *Common) commonUDPOnce(id string) { - c.logger.Debug("UDP launch signal: %v <- %v", id, c.tunnelTCPConn.RemoteAddr()) +func (c *Common) commonUDPOnce(signalURL *url.URL) { + id := strings.TrimPrefix(signalURL.Path, "/") + c.logger.Debug("UDP launch signal: pid %v <- %v", id, c.tunnelTCPConn.RemoteAddr()) - // 从连接池获取连接 + // 获取池连接 remoteConn := c.tunnelPool.ClientGet(id) if remoteConn == nil { c.logger.Error("Get failed: %v not found", id) return } - c.logger.Debug("Tunnel connection: get %v <- pool active %v", id, c.tunnelPool.Active()) - - defer func() { - c.tunnelPool.Put(id, remoteConn) - c.logger.Debug("Tunnel connection: put %v -> pool active %v", id, c.tunnelPool.Active()) - }() - c.logger.Debug("Tunnel connection: %v <-> %v", remoteConn.LocalAddr(), remoteConn.RemoteAddr()) - // 连接到目标UDP地址 - targetConn, err := net.DialTimeout("udp", c.targetUDPAddr.String(), udpDialTimeout) - if err != nil { - c.logger.Error("Dial failed: %v", err) - return + var targetConn *net.UDPConn + sessionKey := signalURL.Host + + // 获取或创建目标UDP会话 + if session, ok := c.targetUDPSession.Load(sessionKey); ok { + targetConn = session.(*net.UDPConn) + c.logger.Debug("Using UDP session: %v <-> %v", targetConn.LocalAddr(), targetConn.RemoteAddr()) + } else { + // 创建新的会话 + session, err := net.DialTimeout("udp", c.targetUDPAddr.String(), udpDialTimeout) + if err != nil { + c.logger.Error("Dial failed: %v", err) + return + } + c.targetUDPSession.Store(sessionKey, session) + + targetConn = session.(*net.UDPConn) + c.logger.Debug("Target connection: %v <-> %v", targetConn.LocalAddr(), targetConn.RemoteAddr()) } - defer func() { - if targetConn != nil { - targetConn.Close() + done := make(chan struct{}, 2) + + go func() { + defer func() { done <- struct{}{} }() + buffer := make([]byte, udpDataBufSize) + for { + select { + case <-c.ctx.Done(): + return + default: + // 设置TCP读取超时 + if err := remoteConn.SetReadDeadline(time.Now().Add(tcpReadTimeout)); err != nil { + c.logger.Error("SetReadDeadline failed: %v", err) + return + } + + // 从隧道连接读取数据 + x, err := remoteConn.Read(buffer) + if err != nil { + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + c.logger.Debug("Read timeout: %v", err) + } else if strings.Contains(err.Error(), "use of closed network connection") { + c.logger.Debug("Read closed: %v", err) + } else { + c.logger.Error("Read failed: %v", err) + } + return + } + + // 将数据写入目标UDP连接 + rx, err := targetConn.Write(buffer[:x]) + if err != nil { + c.logger.Error("Write failed: %v", err) + return + } + + // 传输完成,广播统计信息 + c.logger.Event("Transfer complete: TRAFFIC_STATS|TCP_RX=0|TCP_TX=0|UDP_RX=%v|UDP_TX=0", rx) + } } }() - c.targetUDPConn = targetConn.(*net.UDPConn) - c.logger.Debug("Target connection: %v <-> %v", targetConn.LocalAddr(), targetConn.RemoteAddr()) - c.logger.Debug("Starting transfer: %v <-> %v", remoteConn.LocalAddr(), targetConn.LocalAddr()) + go func() { + defer func() { done <- struct{}{} }() + buffer := make([]byte, udpDataBufSize) + for { + select { + case <-c.ctx.Done(): + return + default: + // 设置UDP读取超时 + if err := targetConn.SetReadDeadline(time.Now().Add(udpReadTimeout)); err != nil { + c.logger.Error("SetReadDeadline failed: %v", err) + return + } - // 处理UDP/TCP数据传输 - rx, tx, _ := conn.DataTransfer( - c.targetUDPConn, - remoteConn, - nil, - nil, - udpDataBufSize, - udpReadTimeout, - ) + // 从目标UDP连接读取数据 + x, err := targetConn.Read(buffer) + if err != nil { + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + c.logger.Debug("Read timeout: %v", err) + } else if strings.Contains(err.Error(), "use of closed network connection") { + c.logger.Debug("Read closed: %v", err) + } else { + c.logger.Error("Read failed: %v", err) + } + return + } - // 传输完成,广播统计信息 - c.logger.Event("Transfer complete: TRAFFIC_STATS|TCP_RX=0|TCP_TX=0|UDP_RX=%v|UDP_TX=%v", rx, tx) + // 将数据写回隧道连接 + tx, err := remoteConn.Write(buffer[:x]) + if err != nil { + c.logger.Error("Write failed: %v", err) + return + } + + // 传输完成,广播统计信息 + c.logger.Event("Transfer complete: TRAFFIC_STATS|TCP_RX=0|TCP_TX=0|UDP_RX=0|UDP_TX=%v", tx) + } + } + }() + + // 等待任一协程完成 + <-done + c.tunnelPool.Put(id, remoteConn) + c.logger.Debug("Tunnel connection: put %v -> pool active %v", id, c.tunnelPool.Active()) } // singleLoop 单端转发处理循环 @@ -700,12 +804,6 @@ func (c *Common) singleTCPLoop() error { continue } - defer func() { - if tunnelConn != nil { - tunnelConn.Close() - } - }() - c.tunnelTCPConn = tunnelConn.(*net.TCPConn) c.logger.Debug("Tunnel connection: %v <-> %v", tunnelConn.LocalAddr(), tunnelConn.RemoteAddr()) @@ -713,21 +811,26 @@ func (c *Common) singleTCPLoop() error { c.semaphore <- struct{}{} go func(tunnelConn net.Conn) { - defer func() { <-c.semaphore }() + defer func() { + if tunnelConn != nil { + tunnelConn.Close() + } + <-c.semaphore + }() // 从连接池中获取连接 targetConn := c.tunnelPool.ClientGet("") if targetConn == nil { c.logger.Error("Get failed: no target connection available") + time.Sleep(100 * time.Millisecond) return } - c.logger.Debug("Target connection: pool active %v / %v per %v", c.tunnelPool.Active(), c.tunnelPool.Capacity(), c.tunnelPool.Interval()) + c.logger.Debug("Target connection: get relay-id <- pool active %v", c.tunnelPool.Active()) defer func() { - if targetConn != nil { - targetConn.Close() - } + c.tunnelPool.Put("", targetConn) + c.logger.Debug("Tunnel connection: put relay-id -> pool active %v", c.tunnelPool.Active()) }() c.targetTCPConn = targetConn.(*net.TCPConn) @@ -785,7 +888,12 @@ func (c *Common) singleUDPLoop() error { c.semaphore <- struct{}{} go func(targetConn *net.UDPConn, clientAddr *net.UDPAddr, sessionKey string) { - defer func() { <-c.semaphore }() + defer func() { + if targetConn != nil { + targetConn.Close() + } + <-c.semaphore + }() buffer := make([]byte, udpDataBufSize) @@ -805,9 +913,10 @@ func (c *Common) singleUDPLoop() error { // 从UDP读取响应 n, err := targetConn.Read(buffer) if err != nil { - // 检查是否为超时错误 if netErr, ok := err.(net.Error); ok && netErr.Timeout() { c.logger.Debug("UDP session abort: %v", err) + } else if strings.Contains(err.Error(), "use of closed network connection") { + c.logger.Debug("Read closed: %v", err) } else { c.logger.Error("Read failed: %v", err) } diff --git a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua index f1f1e7df58..7e45acbd91 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua @@ -1700,7 +1700,8 @@ function gen_config(var) if remote_dns_fake then table.insert(dns.rules, { query_type = { "A", "AAAA" }, - server = fakedns_tag + server = fakedns_tag, + disable_cache = true }) end end diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua index d43603f911..f53085a940 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua @@ -184,7 +184,6 @@ function add_rule(var) local list1 = {} local excluded_domain = {} - local excluded_domain_str = "!" local function log(...) if NO_LOGIC_LOG == "1" then @@ -283,7 +282,6 @@ function add_rule(var) return end table.insert(excluded_domain, domain) - excluded_domain_str = excluded_domain_str .. "|" .. domain end local function check_excluded_domain(domain) @@ -291,7 +289,7 @@ function add_rule(var) return false end for k,v in ipairs(excluded_domain) do - if domain:find(v) then + if domain == v or domain:sub(-#("."..v)) == "."..v then return true end end @@ -471,9 +469,8 @@ function add_rule(var) if REMOTE_FAKEDNS == "1" then sets = {} end - local gfwlist_str = sys.exec('cat /usr/share/passwall/rules/gfwlist | grep -v -E "^#" | grep -v -E "' .. excluded_domain_str .. '"') - for line in string.gmatch(gfwlist_str, "[^\r\n]+") do - if line ~= "" then + for line in io.lines("/usr/share/passwall/rules/gfwlist") do + if line ~= "" and not line:find("#") and not check_excluded_domain(line) then if NO_PROXY_IPV6 == "1" then set_domain_address(line, "::") end @@ -518,9 +515,8 @@ function add_rule(var) sets = {} end end - local chnlist_str = sys.exec('cat /usr/share/passwall/rules/chnlist | grep -v -E "^#" | grep -v -E "' .. excluded_domain_str .. '"') - for line in string.gmatch(chnlist_str, "[^\r\n]+") do - if line ~= "" then + for line in io.lines("/usr/share/passwall/rules/chnlist") do + if line ~= "" and not line:find("#") and not check_excluded_domain(line) then if CHN_LIST == "proxy" and NO_PROXY_IPV6 == "1" then set_domain_address(line, "::") end diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js index 33f49af39b..4a52d6cfc1 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js @@ -203,6 +203,7 @@ const rules_type = [ ['DOMAIN'], ['DOMAIN-SUFFIX'], ['DOMAIN-KEYWORD'], + ['DOMAIN-WILDCARD'], ['DOMAIN-REGEX'], ['GEOSITE'], diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js index 6cfef93d77..3459b7d69b 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js @@ -299,7 +299,9 @@ return view.extend({ ss = o.subsection; if (!res_ver_geoip || !res_ver_geosite) { - so = ss.option(form.Button, '_upload_initia', _('Upload initial package')); + so = ss.option(form.Button, '_upload_initia', _('Upload initial package'), + _('Click here to download the latest initial package.') + .format('https://raw.githubusercontent.com/fcshark-org/openwrt-fchomo/refs/heads/initialpack/initial.tgz')); so.inputstyle = 'action'; so.inputtitle = _('Upload...'); so.onclick = L.bind(hm.uploadInitialPack, so); diff --git a/small/luci-app-fchomo/po/templates/fchomo.pot b/small/luci-app-fchomo/po/templates/fchomo.pot index d6022855ee..cb7e19b3fc 100644 --- a/small/luci-app-fchomo/po/templates/fchomo.pot +++ b/small/luci-app-fchomo/po/templates/fchomo.pot @@ -355,6 +355,12 @@ msgstr "" msgid "Clean log" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/global.js:303 +msgid "" +"Click here " +"to download the latest initial package." +msgstr "" + #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "" diff --git a/small/luci-app-fchomo/po/zh_Hans/fchomo.po b/small/luci-app-fchomo/po/zh_Hans/fchomo.po index 114a8e679d..63cc1579dd 100644 --- a/small/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/small/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -363,6 +363,14 @@ msgstr "加密方法" msgid "Clean log" msgstr "清空日志" +#: htdocs/luci-static/resources/view/fchomo/global.js:303 +msgid "" +"Click here " +"to download the latest initial package." +msgstr "" +"点击此处下载" +"最新的初始包。" + #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "客户端" diff --git a/small/luci-app-fchomo/po/zh_Hant/fchomo.po b/small/luci-app-fchomo/po/zh_Hant/fchomo.po index 9069f98616..50ec1bc61a 100644 --- a/small/luci-app-fchomo/po/zh_Hant/fchomo.po +++ b/small/luci-app-fchomo/po/zh_Hant/fchomo.po @@ -363,6 +363,14 @@ msgstr "加密方法" msgid "Clean log" msgstr "清空日誌" +#: htdocs/luci-static/resources/view/fchomo/global.js:303 +msgid "" +"Click here " +"to download the latest initial package." +msgstr "" +"點擊此處下載" +"最新的初始包。" + #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "客戶端" diff --git a/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua index f1f1e7df58..7e45acbd91 100644 --- a/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ b/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua @@ -1700,7 +1700,8 @@ function gen_config(var) if remote_dns_fake then table.insert(dns.rules, { query_type = { "A", "AAAA" }, - server = fakedns_tag + server = fakedns_tag, + disable_cache = true }) end end diff --git a/small/luci-app-passwall2/Makefile b/small/luci-app-passwall2/Makefile index 525ddf5dac..61863c8415 100644 --- a/small/luci-app-passwall2/Makefile +++ b/small/luci-app-passwall2/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall2 -PKG_VERSION:=25.7.11 +PKG_VERSION:=25.7.15 PKG_RELEASE:=1 PKG_CONFIG_DEPENDS:= \ diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua index b79348ddef..da2d67805e 100644 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua +++ b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua @@ -303,7 +303,7 @@ o:depends("remote_dns_protocol", "tcp") o:depends("remote_dns_protocol", "doh") o:depends("remote_dns_protocol", "udp") -o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) +o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy.")) o.default = "0" o.rmempty = false o:depends("remote_dns_protocol", "tcp") diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua index 4d69d1d1ba..f72d7f3c56 100644 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua +++ b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua @@ -322,7 +322,7 @@ o.default = "remote" o:value("remote", translate("Remote")) o:value("direct", translate("Direct")) -o = s:taboption("DNS", Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) +o = s:taboption("DNS", Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy.")) o.default = "0" o.rmempty = false diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua index 154fe5e9e1..192ce96eb5 100644 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua +++ b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua @@ -24,7 +24,7 @@ local ss_method_list = { local security_list = { "none", "auto", "aes-128-gcm", "chacha20-poly1305", "zero" } local header_type_list = { - "none", "srtp", "utp", "wechat-video", "dtls", "wireguard" + "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", "dns" } local xray_version = api.get_app_version("xray") @@ -468,10 +468,13 @@ o:depends({ [_n("tcp_guise")] = "http" }) -- [[ mKCP部分 ]]-- -o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)')) +o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests.')) for a, t in ipairs(header_type_list) do o:value(t) end o:depends({ [_n("transport")] = "mkcp" }) +o = s:option(Value, _n("mkcp_domain"), translate("Camouflage Domain"), translate("Use it together with the DNS disguised type. You can fill in any domain.")) +o:depends({ [_n("mkcp_guise")] = "dns" }) + o = s:option(Value, _n("mkcp_mtu"), translate("KCP MTU")) o.default = "1350" o:depends({ [_n("transport")] = "mkcp" }) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua index 7e8d23e4f2..ff93af46d2 100644 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua +++ b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua @@ -19,7 +19,7 @@ local x_ss_method_list = { } local header_type_list = { - "none", "srtp", "utp", "wechat-video", "dtls", "wireguard" + "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", "dns" } -- [[ Xray ]] @@ -294,10 +294,14 @@ o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) o:depends({ [_n("tcp_guise")] = "http" }) -- [[ mKCP部分 ]]-- -o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)')) + +o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests.')) for a, t in ipairs(header_type_list) do o:value(t) end o:depends({ [_n("transport")] = "mkcp" }) +o = s:option(Value, _n("mkcp_domain"), translate("Camouflage Domain"), translate("Use it together with the DNS disguised type. You can fill in any domain.")) +o:depends({ [_n("mkcp_guise")] = "dns" }) + o = s:option(Value, _n("mkcp_mtu"), translate("KCP MTU")) o.default = "1350" o:depends({ [_n("transport")] = "mkcp" }) diff --git a/small/luci-app-passwall2/luasrc/passwall2/api.lua b/small/luci-app-passwall2/luasrc/passwall2/api.lua index f0de7e6328..1bcbedd8b0 100644 --- a/small/luci-app-passwall2/luasrc/passwall2/api.lua +++ b/small/luci-app-passwall2/luasrc/passwall2/api.lua @@ -194,11 +194,16 @@ function curl_direct(url, file, args) end function curl_auto(url, file, args) - local return_code, result = curl_proxy(url, file, args) - if not return_code or return_code ~= 0 then - return_code, result = curl_direct(url, file, args) + local localhost_proxy = uci:get(appname, "@global[0]", "localhost_proxy") or "1" + if localhost_proxy == "1" then + return curl_base(url, file, args) + else + local return_code, result = curl_proxy(url, file, args) + if not return_code or return_code ~= 0 then + return_code, result = curl_direct(url, file, args) + end + return return_code, result end - return return_code, result end function url(...) @@ -212,8 +217,9 @@ function url(...) return require "luci.dispatcher".build_url(url) end -function trim(s) - return (s:gsub("^%s*(.-)%s*$", "%1")) +function trim(text) + if not text or text == "" then return "" end + return text:match("^%s*(.-)%s*$") end -- 分割字符串 @@ -854,7 +860,7 @@ local function auto_get_arch() end end - return util.trim(arch) + return trim(arch) end local default_file_tree = { @@ -980,7 +986,7 @@ function to_download(app_name, url, size) sys.call("/bin/rm -f /tmp/".. app_name .."_download.*") - local tmp_file = util.trim(util.exec("mktemp -u -t ".. app_name .."_download.XXXXXX")) + local tmp_file = trim(util.exec("mktemp -u -t ".. app_name .."_download.XXXXXX")) if size then local kb1 = get_free_space("/tmp") @@ -1043,7 +1049,7 @@ function to_extract(app_name, file, subfix) return {code = 1, error = i18n.translatef("%s not enough space.", "/tmp")} end - local tmp_dir = util.trim(util.exec("mktemp -d -t ".. app_name .."_extract.XXXXXX")) + local tmp_dir = trim(util.exec("mktemp -d -t ".. app_name .."_extract.XXXXXX")) local output = {} diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua b/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua index 85558f5e73..9ce22bf5a2 100644 --- a/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua +++ b/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua @@ -1523,6 +1523,18 @@ function gen_config(var) end end end + + if remote_dns_fake and default_dns_flag == "remote" then + -- When default is not direct and enable fakedns, default DNS use FakeDNS. + local fakedns_dns_rule = { + query_type = { + "A", "AAAA" + }, + server = fakedns_tag, + disable_cache = true + } + table.insert(dns.rules, fakedns_dns_rule) + end table.insert(inbounds, { type = "direct", diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua b/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua index a8570ef036..ae27871fbb 100644 --- a/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua +++ b/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua @@ -38,7 +38,7 @@ local function get_domain_excluded() if not content then return nil end local hosts = {} string.gsub(content, '[^' .. "\n" .. ']+', function(w) - local s = w:gsub("^%s*(.-)%s*$", "%1") -- Trim + local s = api.trim(w) if s == "" then return end if s:find("#") and s:find("#") == 1 then return end if not s:find("#") or s:find("#") ~= 1 then table.insert(hosts, s) end @@ -183,7 +183,10 @@ function gen_outbound(flag, node, tag, proxy_table) readBufferSize = tonumber(node.mkcp_readBufferSize), writeBufferSize = tonumber(node.mkcp_writeBufferSize), seed = (node.mkcp_seed and node.mkcp_seed ~= "") and node.mkcp_seed or nil, - header = {type = node.mkcp_guise} + header = { + type = node.mkcp_guise, + domain = node.mkcp_domain + } } or nil, wsSettings = (node.transport == "ws") and { path = node.ws_path or "/", @@ -479,7 +482,10 @@ function gen_config_server(node) readBufferSize = tonumber(node.mkcp_readBufferSize), writeBufferSize = tonumber(node.mkcp_writeBufferSize), seed = (node.mkcp_seed and node.mkcp_seed ~= "") and node.mkcp_seed or nil, - header = {type = node.mkcp_guise} + header = { + type = node.mkcp_guise, + domain = node.mkcp_domain + } } or nil, wsSettings = (node.transport == "ws") and { host = node.ws_host or nil, @@ -1374,8 +1380,13 @@ function gen_config(var) default_dns_server = api.clone(value) default_dns_server.server.tag = default_dns_tag if value.server.tag == remote_dns_tag then - default_dns_server.outboundTag = value.outboundTag or COMMON.default_outbound_tag - default_dns_server.balancerTag = COMMON.default_balancer_tag + if remote_dns_fake then + default_dns_server.server = api.clone(_remote_fakedns) + default_dns_server.server.tag = default_dns_tag + else + default_dns_server.outboundTag = value.outboundTag or COMMON.default_outbound_tag + default_dns_server.balancerTag = COMMON.default_balancer_tag + end end table.insert(dns_servers, 1, default_dns_server) break diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm b/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm index ea37c28a33..39f37d82dd 100644 --- a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm +++ b/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm @@ -257,6 +257,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin } else if (v_transport === "mkcp") { v_transport = "kcp"; params += opt.query("headerType", dom_prefix + "mkcp_guise"); + params += opt.query("seed", dom_prefix + "mkcp_seed"); } else if (v_transport === "quic") { params += opt.query("headerType", dom_prefix + "quic_guise"); params += opt.query("key", dom_prefix + "quic_key"); @@ -368,6 +369,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin } else if (v_transport === "mkcp") { v_transport = "kcp"; info.type = opt.get(dom_prefix + "mkcp_guise").value; + info.seed = opt.get(dom_prefix + "mkcp_seed").value; } else if (v_transport === "quic") { info.type = opt.get(dom_prefix + "quic_guise")?.value; info.key = opt.get(dom_prefix + "quic_key")?.value; @@ -415,6 +417,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin } else if (v_transport === "mkcp") { v_transport = "kcp"; params += opt.query("headerType", dom_prefix + "mkcp_guise"); + params += opt.query("seed", dom_prefix + "mkcp_seed"); } else if (v_transport === "quic") { params += opt.query("headerType", dom_prefix + "quic_guise"); params += opt.query("key", dom_prefix + "quic_key"); @@ -492,6 +495,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin } else if (v_transport === "mkcp") { v_transport = "kcp"; params += opt.query("headerType", dom_prefix + "mkcp_guise"); + params += opt.query("seed", dom_prefix + "mkcp_seed"); } else if (v_transport === "quic") { params += opt.query("headerType", dom_prefix + "quic_guise"); params += opt.query("key", dom_prefix + "quic_key"); @@ -1031,6 +1035,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin opt.set(dom_prefix + 'quic_key', queryParam.key); } else if (queryParam.type === "mkcp") { opt.set(dom_prefix + 'mkcp_guise', queryParam.headerType || "none"); + opt.set(dom_prefix + 'mkcp_seed', queryParam.seed || ""); } else if (queryParam.type === "grpc") { opt.set(dom_prefix + 'grpc_serviceName', (queryParam.serviceName || queryParam.path) || ""); opt.set(dom_prefix + 'grpc_mode', queryParam.mode || "gun"); @@ -1167,6 +1172,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin opt.set(dom_prefix + 'quic_key', queryParam.key); } else if (queryParam.type === "kcp" || queryParam.type === "mkcp") { opt.set(dom_prefix + 'mkcp_guise', queryParam.headerType || "none"); + opt.set(dom_prefix + 'mkcp_seed', queryParam.seed || ""); } else if (queryParam.type === "grpc") { opt.set(dom_prefix + 'grpc_serviceName', (queryParam.serviceName || queryParam.path) || ""); opt.set(dom_prefix + 'grpc_mode', queryParam.mode || "gun"); @@ -1277,7 +1283,8 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin opt.set(dom_prefix + 'quic_security', ssm.securty); opt.set(dom_prefix + 'quic_key', ssm.key); } else if (ssm.net === "kcp" || ssm.net === "mkcp") { - opt.set(dom_prefix + 'mkcp_guise', ssm.type); + opt.set(dom_prefix + 'mkcp_guise', ssm.type || "none"); + opt.set(dom_prefix + 'mkcp_seed', ssm.seed || ""); } else if (ssm.net === "grpc") { opt.set(dom_prefix + 'grpc_serviceName', ssm.path); } @@ -1406,6 +1413,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin opt.set(dom_prefix + 'quic_key', queryParam.key); } else if (queryParam.type === "kcp" || queryParam.type === "mkcp") { opt.set(dom_prefix + 'mkcp_guise', queryParam.headerType || "none"); + opt.set(dom_prefix + 'mkcp_seed', queryParam.seed || ""); } else if (queryParam.type === "grpc") { opt.set(dom_prefix + 'grpc_serviceName', (queryParam.serviceName || queryParam.path) || ""); opt.set(dom_prefix + 'grpc_mode', queryParam.mode || "gun"); diff --git a/small/luci-app-passwall2/po/zh-cn/passwall2.po b/small/luci-app-passwall2/po/zh-cn/passwall2.po index 9c0a33b080..750a52e3d2 100644 --- a/small/luci-app-passwall2/po/zh-cn/passwall2.po +++ b/small/luci-app-passwall2/po/zh-cn/passwall2.po @@ -160,8 +160,8 @@ msgstr "直连查询策略" msgid "Remote Query Strategy" msgstr "远程查询策略" -msgid "Use FakeDNS work in the shunt domain that proxy." -msgstr "需要代理的分流规则域名使用 FakeDNS。" +msgid "Use FakeDNS work in the domain that proxy." +msgstr "需要代理的域名使用 FakeDNS。" msgid "Domain Override" msgstr "域名重写" @@ -1177,6 +1177,9 @@ msgstr "系统接口名称" msgid "Decimal numbers separated by \",\" or Base64-encoded strings." msgstr "用“,”隔开的十进制数字或 Base64 编码字符串。" +msgid "Camouflage Domain" +msgstr "伪装域名" + msgid "Camouflage Type" msgstr "伪装类型" @@ -1255,8 +1258,11 @@ msgstr "TUIC socks5 服务器可以从外部接收的最大数据包大小(以 msgid "Set if the listening socket should be dual-stack" msgstr "设置监听套接字为双栈" -msgid "
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)" -msgstr "
none:默认值,不进行伪装,发送的数据是没有特征的数据包。
srtp:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
utp:伪装成 uTP 数据包,会被识别为 BT 下载数据。
wechat-video:伪装成微信视频通话的数据包。
dtls:伪装成 DTLS 1.2 数据包。
wireguard:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)" +msgid "
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests." +msgstr "
none:默认值,不进行伪装,发送的数据是没有特征的数据包。
srtp:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
utp:伪装成 uTP 数据包,会被识别为 BT 下载数据。
wechat-video:伪装成微信视频通话的数据包。
dtls:伪装成 DTLS 1.2 数据包。
wireguard:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)
dns:把流量伪装成 DNS 请求。" + +msgid "Use it together with the DNS disguised type. You can fill in any domain." +msgstr "配合伪装类型 DNS 使用,可随便填一个域名。" msgid "A legal file path. This file must not exist before running." msgstr "一个合法的文件路径。在运行之前,这个文件必须不存在。" diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua b/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua index f69c22e2b4..a309eb905a 100755 --- a/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua +++ b/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua @@ -412,12 +412,6 @@ local function UrlDecode(szText) end) or nil end --- trim -local function trim(text) - if not text or text == "" then return "" end - return (sgsub(text, "^%s*(.-)%s*$", "%1")) -end - -- 取机场信息(剩余流量、到期时间) local subscribe_info = {} local function get_subscribe_info(cfgid, value) @@ -1769,7 +1763,7 @@ local function parse_link(raw, add_mode, add_from, cfgid) if szType == 'ssd' then result = processData(szType, v, add_mode, add_from) elseif not szType then - local node = trim(v) + local node = api.trim(v) local dat = split(node, "://") if dat and dat[1] and dat[2] then if dat[1] == 'ss' or dat[1] == 'trojan' then @@ -1896,7 +1890,7 @@ local execute = function() local f = io.open(tmp_file, "r") local stdout = f:read("*all") f:close() - local raw_data = trim(stdout) + local raw_data = api.trim(stdout) local old_md5 = value.md5 or "" local new_md5 = luci.sys.exec("md5sum " .. tmp_file .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "") os.remove(tmp_file) diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx index 0d1d50d4b9..27240b8094 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx @@ -703,7 +703,7 @@ 例外:对于下列字符开头的地址,不使用代理配置文件。使用分号 (;) 分隔。 - 显示实时速度(需重启) + 显示实时速度 (需重启) 去重时保留序号较小的项 @@ -739,7 +739,7 @@ 开机启动 (可能会不成功) - 启用流量统计(需重启) + 启用流量统计 (需重启) 订阅转换网址 (可选) @@ -886,7 +886,7 @@ 仅限路由 (routeOnly) - 请勿将代理服务器用于本地(Intranet)地址 + 请勿将代理服务器用于本地 (Intranet) 地址 一键多线程测试延迟和速度 (Ctrl+E) @@ -919,7 +919,7 @@ 移至订阅分组 - 启用配置文件拖放排序(需重启) + 启用配置文件拖放排序 (需重启) 自动刷新 @@ -946,10 +946,10 @@ 仅对 tcp/http、ws 协议生效 - 当前字体(需重启) + 当前字体 (需重启) - 拷贝字体 TTF/TTC 文件到目录 guiFonts,重启设置 + 拷贝字体 TTF/TTC 文件到目录 guiFonts,重启生效 Pac 端口 = +3;Xray API 端口 = +4;mihomo API 端口 = +5; @@ -979,10 +979,10 @@ SpiderX - 启用硬件加速(需重启) + 启用硬件加速 (需重启) - 等待测试中(按 ESC 终止)... + 等待测试中 (按 ESC 终止)... 当有异常断流时请关闭 @@ -1075,7 +1075,7 @@ Reserved (2,3,4) - Address (Ipv4,Ipv6) + Address (IPv4,IPv6) 混淆密码 (obfs password) @@ -1105,10 +1105,10 @@ 使用 Xray 且非 Tun 模式启用,和分组前置代理冲突 - 启用分片(Fragment) + 启用分片 (Fragment) - 启用 sing-box(规则集文件)的缓存文件 + 启用 sing-box (规则集文件) 的缓存文件 自定义 sing-box rule-set @@ -1201,7 +1201,7 @@ Outbound 默认解析策略 - 主界面布局方向(需重启) + 主界面布局方向 (需重启) Outbound 域名解析地址 @@ -1303,7 +1303,7 @@ 请不要使用不安全的 HTTP 协议订阅地址 - 安装字体到系统中,选择或填入字体名称,重启设置 + 安装字体到系统中,选择或填入字体名称,重启生效 是否确定退出? @@ -1318,7 +1318,7 @@ 输入的密码无法校验,所以请确保输入正确。如果因为输入错误导致无法正常运行时,请重启本应用。 密码不会存储,每次重启后都需要再次输入。 - *xhttp 模式 + *XHTTP 模式 XHTTP Extra 原始 JSON,格式: { XHTTPObject } @@ -1339,7 +1339,7 @@ 开启第二个本地监听端口 - socks:本地端口,socks2:第二个本地端口,socks3:局域网端口 + Socks:本地端口,Socks2:第二个本地端口,Socks3:局域网端口 主题 @@ -1372,13 +1372,13 @@ 多配置文件随机 Xray - 多配置文件负载均衡  Xray + 多配置文件负载均衡 Xray - 多配置文件最低延迟  Xray + 多配置文件最低延迟 Xray - 多配置文件最稳定  Xray + 多配置文件最稳定 Xray 多配置文件最低延迟 sing-box