diff options
| author | fgsfds <4870330+fgsfds@users.noreply.github.com> | 2025-08-05 13:10:14 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-05 13:10:14 +0300 |
| commit | 419ea63dd0f7f2a693dbf674e411782301e06dc6 (patch) | |
| tree | 062e7194ba32d04729f0da3df0aa11557c5c34c4 /web/controller | |
| parent | 6a17285935cad302286d1aed0bb2357b56cf173f (diff) | |
Added filters to the xray logs viewer (#3314)
* added filters to xray logs viewer
* better freedom/blackhole tags handling
* better freedom/blackhole tags handling 2
* fix comments
* fix comments 2
Diffstat (limited to 'web/controller')
| -rw-r--r-- | web/controller/server.go | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/web/controller/server.go b/web/controller/server.go index dd001f5e..17b25cdc 100644 --- a/web/controller/server.go +++ b/web/controller/server.go @@ -17,7 +17,8 @@ var filenameRegex = regexp.MustCompile(`^[a-zA-Z0-9_\-.]+$`) type ServerController struct { BaseController - serverService service.ServerService + serverService service.ServerService + settingService service.SettingService lastStatus *service.Status lastGetStatusTime time.Time @@ -137,7 +138,45 @@ func (a *ServerController) getLogs(c *gin.Context) { func (a *ServerController) getXrayLogs(c *gin.Context) { count := c.Param("count") - logs := a.serverService.GetXrayLogs(count) + filter := c.PostForm("filter") + showDirect := c.PostForm("showDirect") + showBlocked := c.PostForm("showBlocked") + showProxy := c.PostForm("showProxy") + + var freedoms []string + var blackholes []string + + //getting tags for freedom and blackhole outbounds + config, err := a.settingService.GetDefaultXrayConfig() + if err == nil && config != nil { + if cfgMap, ok := config.(map[string]interface{}); ok { + if outbounds, ok := cfgMap["outbounds"].([]interface{}); ok { + for _, outbound := range outbounds { + if obMap, ok := outbound.(map[string]interface{}); ok { + switch obMap["protocol"] { + case "freedom": + if tag, ok := obMap["tag"].(string); ok { + freedoms = append(freedoms, tag) + } + case "blackhole": + if tag, ok := obMap["tag"].(string); ok { + blackholes = append(blackholes, tag) + } + } + } + } + } + } + } + + if len(freedoms) == 0 { + freedoms = []string{"direct"} + } + if len(blackholes) == 0 { + blackholes = []string{"blocked"} + } + + logs := a.serverService.GetXrayLogs(count, filter, showDirect, showBlocked, showProxy, freedoms, blackholes) jsonObj(c, logs, nil) } |
