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
path: root/sub
diff options
context:
space:
mode:
authorSanaei <ho3ein.sanaei@gmail.com>2025-09-07 23:35:38 +0300
committerGitHub <noreply@github.com>2025-09-07 23:35:38 +0300
commitb008ff4ad236f20f0937dd02e747ca6581e776f3 (patch)
treeefcb43872da9f46f3e6a307424fb5e309e0e7737 /sub
parentda6b89fdcd2270aa116297d9ff620b6331f39df9 (diff)
Vlessenc (#3426)
* mlkem768 * VlessEnc
Diffstat (limited to 'sub')
-rw-r--r--sub/subController.go5
-rw-r--r--sub/subJsonService.go14
-rw-r--r--sub/subService.go6
3 files changed, 18 insertions, 7 deletions
diff --git a/sub/subController.go b/sub/subController.go
index 2f22ecab..3f053740 100644
--- a/sub/subController.go
+++ b/sub/subController.go
@@ -53,7 +53,6 @@ func (a *SUBController) initRouter(g *gin.RouterGroup) {
gJson := g.Group(a.subJsonPath)
gLink.GET(":subid", a.subs)
-
gJson.GET(":subid", a.subJsons)
}
@@ -85,7 +84,7 @@ func (a *SUBController) subs(c *gin.Context) {
// Add headers
c.Writer.Header().Set("Subscription-Userinfo", header)
c.Writer.Header().Set("Profile-Update-Interval", a.updateInterval)
- c.Writer.Header().Set("Profile-Title", "base64:" + base64.StdEncoding.EncodeToString([]byte(a.subTitle)))
+ c.Writer.Header().Set("Profile-Title", "base64:"+base64.StdEncoding.EncodeToString([]byte(a.subTitle)))
if a.subEncrypt {
c.String(200, base64.StdEncoding.EncodeToString([]byte(result)))
@@ -119,7 +118,7 @@ func (a *SUBController) subJsons(c *gin.Context) {
// Add headers
c.Writer.Header().Set("Subscription-Userinfo", header)
c.Writer.Header().Set("Profile-Update-Interval", a.updateInterval)
- c.Writer.Header().Set("Profile-Title", "base64:" + base64.StdEncoding.EncodeToString([]byte(a.subTitle)))
+ c.Writer.Header().Set("Profile-Title", "base64:"+base64.StdEncoding.EncodeToString([]byte(a.subTitle)))
c.String(200, jsonSub)
}
diff --git a/sub/subJsonService.go b/sub/subJsonService.go
index 680a01c0..def8b855 100644
--- a/sub/subJsonService.go
+++ b/sub/subJsonService.go
@@ -184,8 +184,14 @@ func (s *SubJsonService) getConfig(inbound *model.Inbound, client model.Client,
var newOutbounds []json_util.RawMessage
switch inbound.Protocol {
- case "vmess", "vless":
- newOutbounds = append(newOutbounds, s.genVnext(inbound, streamSettings, client))
+ case "vmess":
+ newOutbounds = append(newOutbounds, s.genVnext(inbound, streamSettings, client, ""))
+ case "vless":
+ var vlessSettings model.VLESSSettings
+ _ = json.Unmarshal([]byte(inbound.Settings), &vlessSettings)
+
+ newOutbounds = append(newOutbounds,
+ s.genVnext(inbound, streamSettings, client, vlessSettings.Encryption))
case "trojan", "shadowsocks":
newOutbounds = append(newOutbounds, s.genServer(inbound, streamSettings, client))
}
@@ -284,7 +290,7 @@ func (s *SubJsonService) realityData(rData map[string]any) map[string]any {
return rltyData
}
-func (s *SubJsonService) genVnext(inbound *model.Inbound, streamSettings json_util.RawMessage, client model.Client) json_util.RawMessage {
+func (s *SubJsonService) genVnext(inbound *model.Inbound, streamSettings json_util.RawMessage, client model.Client, encryption string) json_util.RawMessage {
outbound := Outbound{}
usersData := make([]UserVnext, 1)
@@ -295,7 +301,7 @@ func (s *SubJsonService) genVnext(inbound *model.Inbound, streamSettings json_ut
}
if inbound.Protocol == model.VLESS {
usersData[0].Flow = client.Flow
- usersData[0].Encryption = "none"
+ usersData[0].Encryption = encryption
}
vnextData := make([]VnextSetting, 1)
diff --git a/sub/subService.go b/sub/subService.go
index dfb0863e..e6e25e3a 100644
--- a/sub/subService.go
+++ b/sub/subService.go
@@ -313,6 +313,9 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
if inbound.Protocol != model.VLESS {
return ""
}
+ var vlessSettings model.VLESSSettings
+ _ = json.Unmarshal([]byte(inbound.Settings), &vlessSettings)
+
var stream map[string]any
json.Unmarshal([]byte(inbound.StreamSettings), &stream)
clients, _ := s.inboundService.GetClients(inbound)
@@ -327,6 +330,9 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
port := inbound.Port
streamNetwork := stream["network"].(string)
params := make(map[string]string)
+ if vlessSettings.Encryption != "" {
+ params["encryption"] = vlessSettings.Encryption
+ }
params["type"] = streamNetwork
switch streamNetwork {