From 8041950c29d1351b73a618c65d0b6ccd23b54c5a Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Fri, 16 Feb 2024 11:57:17 +0100 Subject: [PATCH] [sub] random reality params --- sub/subService.go | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/sub/subService.go b/sub/subService.go index d5d48040..5b75935a 100644 --- a/sub/subService.go +++ b/sub/subService.go @@ -10,6 +10,7 @@ import ( "x-ui/database/model" "x-ui/logger" "x-ui/util/common" + "x-ui/util/random" "x-ui/web/service" "x-ui/xray" @@ -382,25 +383,21 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string { if realitySetting != nil { if sniValue, ok := searchKey(realitySetting, "serverNames"); ok { sNames, _ := sniValue.([]interface{}) - params["sni"], _ = sNames[0].(string) + params["sni"] = sNames[random.Num(len(sNames))].(string) } if pbkValue, ok := searchKey(realitySettings, "publicKey"); ok { params["pbk"], _ = pbkValue.(string) } if sidValue, ok := searchKey(realitySetting, "shortIds"); ok { shortIds, _ := sidValue.([]interface{}) - params["sid"], _ = shortIds[0].(string) + params["sid"] = shortIds[random.Num(len(shortIds))].(string) } if fpValue, ok := searchKey(realitySettings, "fingerprint"); ok { if fp, ok := fpValue.(string); ok && len(fp) > 0 { params["fp"] = fp } } - if spxValue, ok := searchKey(realitySettings, "spiderX"); ok { - if spx, ok := spxValue.(string); ok && len(spx) > 0 { - params["spx"] = spx - } - } + params["spx"] = "/" + random.Seq(15) } if streamNetwork == "tcp" && len(clients[clientIndex].Flow) > 0 { @@ -563,25 +560,21 @@ func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string if realitySetting != nil { if sniValue, ok := searchKey(realitySetting, "serverNames"); ok { sNames, _ := sniValue.([]interface{}) - params["sni"], _ = sNames[0].(string) + params["sni"] = sNames[random.Num(len(sNames))].(string) } if pbkValue, ok := searchKey(realitySettings, "publicKey"); ok { params["pbk"], _ = pbkValue.(string) } if sidValue, ok := searchKey(realitySetting, "shortIds"); ok { shortIds, _ := sidValue.([]interface{}) - params["sid"], _ = shortIds[0].(string) + params["sid"] = shortIds[random.Num(len(shortIds))].(string) } if fpValue, ok := searchKey(realitySettings, "fingerprint"); ok { if fp, ok := fpValue.(string); ok && len(fp) > 0 { params["fp"] = fp } } - if spxValue, ok := searchKey(realitySettings, "spiderX"); ok { - if spx, ok := spxValue.(string); ok && len(spx) > 0 { - params["spx"] = spx - } - } + params["spx"] = "/" + random.Seq(15) } }