fix: https://github.com/komari-monitor/komari/issues/248 使用中文域名进行自动发现无法链接面板

This commit is contained in:
Akizon77
2025-11-04 14:55:48 +08:00
parent 3f945ea1e3
commit 77dbb9e487
5 changed files with 84 additions and 5 deletions

View File

@@ -14,6 +14,7 @@ import (
"github.com/komari-monitor/komari-agent/dnsresolver"
"github.com/komari-monitor/komari-agent/monitoring"
"github.com/komari-monitor/komari-agent/terminal"
"github.com/komari-monitor/komari-agent/utils"
"github.com/komari-monitor/komari-agent/ws"
)
@@ -22,6 +23,13 @@ func EstablishWebSocketConnection() {
websocketEndpoint := strings.TrimSuffix(flags.Endpoint, "/") + "/api/clients/report?token=" + flags.Token
websocketEndpoint = "ws" + strings.TrimPrefix(websocketEndpoint, "http")
// 转换中文域名为 ASCII 兼容编码
if convertedEndpoint, err := utils.ConvertIDNToASCII(websocketEndpoint); err == nil {
websocketEndpoint = convertedEndpoint
} else {
log.Printf("Warning: Failed to convert WebSocket IDN to ASCII: %v", err)
}
var conn *ws.SafeConn
defer func() {
if conn != nil {
@@ -155,6 +163,13 @@ func establishTerminalConnection(token, id, endpoint string) {
endpoint = strings.TrimSuffix(endpoint, "/") + "/api/clients/terminal?token=" + token + "&id=" + id
endpoint = "ws" + strings.TrimPrefix(endpoint, "http")
// 转换中文域名为 ASCII 兼容编码
if convertedEndpoint, err := utils.ConvertIDNToASCII(endpoint); err == nil {
endpoint = convertedEndpoint
} else {
log.Printf("Warning: Failed to convert Terminal WebSocket IDN to ASCII: %v", err)
}
// 使用与主 WS 相同的拨号策略
dialer := newWSDialer()