Преглед изворни кода

vless: use Inbound Listen address in Subscription service (#3610)

* vless: use Inbound Listen address in Subscription service

vless manual connection link and subscription produced connection link are aligned.
subscription service now returns an IP address configured on Inbound, instead of subscription service IP,
which is consistent when the address, returned by QR code for manual vless link distribution.
Igor Kamyshnikov пре 5 дана
родитељ
комит
b747730211
1 измењених фајлова са 26 додато и 4 уклоњено
  1. 26 4
      sub/subService.go

+ 26 - 4
sub/subService.go

@@ -179,9 +179,15 @@ func (s *SubService) genVmessLink(inbound *model.Inbound, email string) string {
 	if inbound.Protocol != model.VMESS {
 	if inbound.Protocol != model.VMESS {
 		return ""
 		return ""
 	}
 	}
+	var address string
+	if inbound.Listen == "" || inbound.Listen == "0.0.0.0" || inbound.Listen == "::" || inbound.Listen == "::0" {
+		address = s.address
+	} else {
+		address = inbound.Listen
+	}
 	obj := map[string]any{
 	obj := map[string]any{
 		"v":    "2",
 		"v":    "2",
-		"add":  s.address,
+		"add":  address,
 		"port": inbound.Port,
 		"port": inbound.Port,
 		"type": "none",
 		"type": "none",
 	}
 	}
@@ -317,7 +323,13 @@ func (s *SubService) genVmessLink(inbound *model.Inbound, email string) string {
 }
 }
 
 
 func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
 func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
-	address := s.address
+	var address string
+	if inbound.Listen == "" || inbound.Listen == "0.0.0.0" || inbound.Listen == "::" || inbound.Listen == "::0" {
+		address = s.address
+	} else {
+		address = inbound.Listen
+	}
+
 	if inbound.Protocol != model.VLESS {
 	if inbound.Protocol != model.VLESS {
 		return ""
 		return ""
 	}
 	}
@@ -523,7 +535,12 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
 }
 }
 
 
 func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string {
 func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string {
-	address := s.address
+	var address string
+	if inbound.Listen == "" || inbound.Listen == "0.0.0.0" || inbound.Listen == "::" || inbound.Listen == "::0" {
+		address = s.address
+	} else {
+		address = inbound.Listen
+	}
 	if inbound.Protocol != model.Trojan {
 	if inbound.Protocol != model.Trojan {
 		return ""
 		return ""
 	}
 	}
@@ -719,7 +736,12 @@ func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string
 }
 }
 
 
 func (s *SubService) genShadowsocksLink(inbound *model.Inbound, email string) string {
 func (s *SubService) genShadowsocksLink(inbound *model.Inbound, email string) string {
-	address := s.address
+	var address string
+	if inbound.Listen == "" || inbound.Listen == "0.0.0.0" || inbound.Listen == "::" || inbound.Listen == "::0" {
+		address = s.address
+	} else {
+		address = inbound.Listen
+	}
 	if inbound.Protocol != model.Shadowsocks {
 	if inbound.Protocol != model.Shadowsocks {
 		return ""
 		return ""
 	}
 	}