Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfgsfds <4870330+fgsfds@users.noreply.github.com>2025-08-05 13:10:14 +0300
committerGitHub <noreply@github.com>2025-08-05 13:10:14 +0300
commit419ea63dd0f7f2a693dbf674e411782301e06dc6 (patch)
tree062e7194ba32d04729f0da3df0aa11557c5c34c4 /web/controller
parent6a17285935cad302286d1aed0bb2357b56cf173f (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.go43
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)
}