It may take a long time waiting for a new tag, so backport these important bug fixes for now. While at it, added 3 new options provided by upstream, and deprecated the usage of `$(AUTORELEASE)`. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
105 lines
3.2 KiB
Diff
105 lines
3.2 KiB
Diff
From 5db722b22b39642280572a62b149d4e1efa21ce3 Mon Sep 17 00:00:00 2001
|
|
From: mzz2017 <mzz@tuta.io>
|
|
Date: Mon, 8 Aug 2022 22:30:36 +0800
|
|
Subject: [PATCH] fix: seed cannot be read from vless sharing-link and add
|
|
missing sni field. #616
|
|
|
|
---
|
|
service/core/serverObj/v2ray.go | 24 +++++++++++-------------
|
|
1 file changed, 11 insertions(+), 13 deletions(-)
|
|
|
|
--- a/core/serverObj/v2ray.go
|
|
+++ b/core/serverObj/v2ray.go
|
|
@@ -12,7 +12,6 @@ import (
|
|
"time"
|
|
|
|
jsoniter "github.com/json-iterator/go"
|
|
- "github.com/tidwall/gjson"
|
|
"github.com/v2rayA/v2rayA/common"
|
|
"github.com/v2rayA/v2rayA/core/coreObj"
|
|
"github.com/v2rayA/v2rayA/core/v2ray/service"
|
|
@@ -39,6 +38,7 @@ type V2Ray struct {
|
|
Net string `json:"net"`
|
|
Type string `json:"type"`
|
|
Host string `json:"host"`
|
|
+ SNI string `json:"sni"`
|
|
Path string `json:"path"`
|
|
TLS string `json:"tls"`
|
|
Flow string `json:"flow,omitempty"`
|
|
@@ -69,7 +69,8 @@ func ParseVlessURL(vless string) (data *
|
|
ID: u.User.String(),
|
|
Net: u.Query().Get("type"),
|
|
Type: u.Query().Get("headerType"),
|
|
- Host: u.Query().Get("sni"),
|
|
+ Host: u.Query().Get("host"),
|
|
+ SNI: u.Query().Get("sni"),
|
|
Path: u.Query().Get("path"),
|
|
TLS: u.Query().Get("security"),
|
|
Flow: u.Query().Get("flow"),
|
|
@@ -86,16 +87,13 @@ func ParseVlessURL(vless string) (data *
|
|
if data.Type == "" {
|
|
data.Type = "none"
|
|
}
|
|
- if data.Host == "" {
|
|
- data.Host = u.Query().Get("host")
|
|
- }
|
|
if data.TLS == "" {
|
|
data.TLS = "none"
|
|
}
|
|
if data.Flow == "" {
|
|
data.Flow = "xtls-rprx-direct"
|
|
}
|
|
- if data.Type == "mkcp" || data.Type == "kcp" {
|
|
+ if data.Net == "mkcp" || data.Net == "kcp" {
|
|
data.Path = u.Query().Get("seed")
|
|
}
|
|
return data, nil
|
|
@@ -145,6 +143,7 @@ func ParseVmessURL(vmess string) (data *
|
|
if aid == "" {
|
|
aid = q.Get("aid")
|
|
}
|
|
+ sni := q.Get("sni")
|
|
info = V2Ray{
|
|
ID: subMatch[1],
|
|
Add: subMatch[2],
|
|
@@ -152,6 +151,7 @@ func ParseVmessURL(vmess string) (data *
|
|
Ps: ps,
|
|
Host: obfsParam,
|
|
Path: path,
|
|
+ SNI: sni,
|
|
Net: obfs,
|
|
Aid: aid,
|
|
TLS: map[string]string{"1": "tls"}[q.Get("tls")],
|
|
@@ -165,12 +165,6 @@ func ParseVmessURL(vmess string) (data *
|
|
if err != nil {
|
|
return
|
|
}
|
|
- if info.Host == "" {
|
|
- sni := gjson.Get(raw, "sni")
|
|
- if sni.Exists() {
|
|
- info.Host = sni.String()
|
|
- }
|
|
- }
|
|
}
|
|
// correct the wrong vmess as much as possible
|
|
if strings.HasPrefix(info.Host, "/") && info.Path == "" {
|
|
@@ -328,7 +322,9 @@ func (v *V2Ray) Configuration(info Prior
|
|
core.StreamSettings.TLSSettings.AllowInsecure = true
|
|
}
|
|
// SNI
|
|
- if v.Host != "" {
|
|
+ if v.SNI != "" {
|
|
+ core.StreamSettings.TLSSettings.ServerName = v.SNI
|
|
+ } else if v.Host != "" {
|
|
core.StreamSettings.TLSSettings.ServerName = v.Host
|
|
}
|
|
// Alpn
|
|
@@ -345,6 +341,8 @@ func (v *V2Ray) Configuration(info Prior
|
|
// SNI
|
|
if v.Host != "" {
|
|
core.StreamSettings.XTLSSettings.ServerName = v.Host
|
|
+ } else if v.Host != "" {
|
|
+ core.StreamSettings.TLSSettings.ServerName = v.Host
|
|
}
|
|
if v.AllowInsecure {
|
|
core.StreamSettings.XTLSSettings.AllowInsecure = true
|