fix(admin): stop console Intl errors and log websocket drops

Use raw i18n for push template hints so ICU does not parse
{{placeholders}}. Pass total into the user list record count.
Allow log websocket origins behind the Next rewrite, skip the
proxy on Upgrade, and do not open a socket after unmount.
This commit is contained in:
ryan
2026-09-02 17:52:57 +08:00
parent 8aa0753b12
commit 1f1f4efec7
7 changed files with 140 additions and 15 deletions
+22 -1
View File
@@ -14,6 +14,7 @@ import (
"errors"
"net/http"
"strconv"
"strings"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
@@ -179,11 +180,31 @@ func GetLogsAnalytics(c *gin.Context) {
func getUpgrader() *websocket.Upgrader {
return &websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return service.IsAllowedLogOrigin(r.Context(), r.Header.Get("Origin"), r.Host)
return service.IsAllowedLogOrigin(
r.Context(),
r.Header.Get("Origin"),
r.Host,
forwardedHosts(r)...,
)
},
}
}
func forwardedHosts(r *http.Request) []string {
raw := r.Header.Get("X-Forwarded-Host")
if raw == "" {
return nil
}
parts := strings.Split(raw, ",")
hosts := make([]string, 0, len(parts))
for _, part := range parts {
if h := strings.TrimSpace(part); h != "" {
hosts = append(hosts, h)
}
}
return hosts
}
// errNegativeParam 表示查询参数解析出了负数。
var errNegativeParam = errors.New("parameter must not be negative")