feat(middleware): enhance user agent handling by querying client list in PanDomainMiddleware
This commit is contained in:
parent
f3c73a5224
commit
b9ef8f4572
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/perfect-panel/server/internal/logic/subscribe"
|
"github.com/perfect-panel/server/internal/logic/subscribe"
|
||||||
"github.com/perfect-panel/server/internal/svc"
|
"github.com/perfect-panel/server/internal/svc"
|
||||||
"github.com/perfect-panel/server/internal/types"
|
"github.com/perfect-panel/server/internal/types"
|
||||||
|
"github.com/perfect-panel/server/pkg/logger"
|
||||||
"github.com/perfect-panel/server/pkg/tool"
|
"github.com/perfect-panel/server/pkg/tool"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,6 +31,18 @@ func SubscribeHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
clientUserAgents := tool.RemoveDuplicateElements(strings.Split(svcCtx.Config.Subscribe.UserAgentList, "\n")...)
|
clientUserAgents := tool.RemoveDuplicateElements(strings.Split(svcCtx.Config.Subscribe.UserAgentList, "\n")...)
|
||||||
|
|
||||||
|
// query client list
|
||||||
|
clients, err := svcCtx.ClientModel.List(c.Request.Context())
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorw("[PanDomainMiddleware] Query client list failed", logger.Field("error", err.Error()))
|
||||||
|
}
|
||||||
|
for _, item := range clients {
|
||||||
|
u := strings.ToLower(item.UserAgent)
|
||||||
|
u = strings.Trim(u, " ")
|
||||||
|
clientUserAgents = append(clientUserAgents, u)
|
||||||
|
}
|
||||||
|
|
||||||
var allow = false
|
var allow = false
|
||||||
for _, keyword := range clientUserAgents {
|
for _, keyword := range clientUserAgents {
|
||||||
keyword = strings.Trim(keyword, " ")
|
keyword = strings.Trim(keyword, " ")
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/perfect-panel/server/internal/logic/subscribe"
|
"github.com/perfect-panel/server/internal/logic/subscribe"
|
||||||
"github.com/perfect-panel/server/internal/svc"
|
"github.com/perfect-panel/server/internal/svc"
|
||||||
"github.com/perfect-panel/server/internal/types"
|
"github.com/perfect-panel/server/internal/types"
|
||||||
|
"github.com/perfect-panel/server/pkg/logger"
|
||||||
"github.com/perfect-panel/server/pkg/tool"
|
"github.com/perfect-panel/server/pkg/tool"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,6 +27,18 @@ func PanDomainMiddleware(svc *svc.ServiceContext) func(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
browserKeywords := tool.RemoveDuplicateElements(strings.Split(svc.Config.Subscribe.UserAgentList, "\n")...)
|
browserKeywords := tool.RemoveDuplicateElements(strings.Split(svc.Config.Subscribe.UserAgentList, "\n")...)
|
||||||
var allow = false
|
var allow = false
|
||||||
|
|
||||||
|
// query client list
|
||||||
|
clients, err := svc.ClientModel.List(c.Request.Context())
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorw("[PanDomainMiddleware] Query client list failed", logger.Field("error", err.Error()))
|
||||||
|
}
|
||||||
|
for _, item := range clients {
|
||||||
|
u := strings.ToLower(item.UserAgent)
|
||||||
|
u = strings.Trim(u, " ")
|
||||||
|
browserKeywords = append(browserKeywords, u)
|
||||||
|
}
|
||||||
|
|
||||||
for _, keyword := range browserKeywords {
|
for _, keyword := range browserKeywords {
|
||||||
keyword = strings.ToLower(strings.Trim(keyword, " "))
|
keyword = strings.ToLower(strings.Trim(keyword, " "))
|
||||||
if keyword == "" {
|
if keyword == "" {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user