Fix/Resolve panic issues in proxy-related code (#560)

* fix(proxy): change default port from 5000 to 15721

Port 5000 conflicts with AirPlay Receiver on macOS 12+.
Also adds error handling for proxy toggle and i18n placeholder updates.

* fix(proxy): replace unwrap/expect with graceful error handling

- Handle HTTP client initialization failure with no_proxy fallback
- Fix potential panic on Unicode slicing in API key preview
- Add proper error handling for response body builder
- Handle edge case where SystemTime is before UNIX_EPOCH

* fix(proxy): handle UTF-8 char boundary when truncating request body log

Rust strings are UTF-8 encoded, slicing at a fixed byte index may cut
in the middle of a multi-byte character (e.g., Chinese, emoji), causing
a panic. Use is_char_boundary() to find the nearest safe cut point.

* fix(proxy): improve robustness and prevent panics

- Add reqwest socks feature to support SOCKS proxy environments
- Fix UTF-8 safety in masked_key/masked_access_token (use chars() instead of byte slicing)
- Fix UTF-8 boundary check in usage_script HTTP response truncation
- Add defensive checks for JSON operations in proxy service
- Remove verbose debug logs that could trigger panic-prone code paths
This commit is contained in:
Jason Young
2026-01-09 13:09:19 +08:00
committed by GitHub
parent 2923627b76
commit a268127f1f
15 changed files with 205 additions and 257 deletions
+1 -1
View File
@@ -1058,7 +1058,7 @@
},
"listenPort": {
"label": "Listen Port",
"placeholder": "5000",
"placeholder": "15721",
"description": "Port number the proxy server listens on (1024 ~ 65535)"
},
"maxRetries": {
+1 -1
View File
@@ -1058,7 +1058,7 @@
},
"listenPort": {
"label": "リッスンポート",
"placeholder": "5000",
"placeholder": "15721",
"description": "プロキシサーバーがリッスンするポート番号(1024 ~ 65535"
},
"maxRetries": {
+1 -1
View File
@@ -1058,7 +1058,7 @@
},
"listenPort": {
"label": "监听端口",
"placeholder": "5000",
"placeholder": "15721",
"description": "代理服务器监听的端口号(1024 ~ 65535"
},
"maxRetries": {