Skip to content

Commit b67cbc4

Browse files
author
yiguo
committed
fix: fix wrong extra when generating xhttp share link
1 parent 41fd040 commit b67cbc4

File tree

8 files changed

+40
-25
lines changed

8 files changed

+40
-25
lines changed

dns_wrapper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func NewInitDnsRequest(dns, deviceName string) (string, error) {
2222
DeviceName: deviceName,
2323
}
2424

25-
requestBytes, err := json.Marshal(request)
25+
requestBytes, err := json.Marshal(&request)
2626
if err != nil {
2727
return "", err
2828
}

geo/thin.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func loadXrayConfig(configBytes []byte) ([]string, []string) {
4949
domain := []string{}
5050
ip := []string{}
5151

52-
var xray conf.Config
52+
var xray *conf.Config
5353
err := json.Unmarshal(configBytes, &xray)
5454
if err != nil {
5555
return domain, ip
@@ -66,7 +66,7 @@ func loadXrayConfig(configBytes []byte) ([]string, []string) {
6666
return domain, ip
6767
}
6868

69-
func filterRouting(xray conf.Config) ([]string, []string) {
69+
func filterRouting(xray *conf.Config) ([]string, []string) {
7070
domain := []string{}
7171
ip := []string{}
7272

@@ -101,7 +101,7 @@ func filterRouting(xray conf.Config) ([]string, []string) {
101101
return domain, ip
102102
}
103103

104-
func filterDns(xray conf.Config) ([]string, []string) {
104+
func filterDns(xray *conf.Config) ([]string, []string) {
105105
domain := []string{}
106106
ip := []string{}
107107

nodep/model.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (response CallResponse[T]) EncodeToBase64(data T, err error) string {
2020
response.Success = true
2121
}
2222

23-
jsonData, err := json.Marshal(response)
23+
jsonData, err := json.Marshal(&response)
2424
if err != nil {
2525
return ""
2626
}

share/generate_share.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
// Convert XrayJson to share links.
1515
// VMess will generate VMessAEAD link.
1616
func ConvertXrayJsonToShareLinks(xrayBytes []byte) (string, error) {
17-
var xray conf.Config
17+
var xray *conf.Config
1818

1919
err := json.Unmarshal(xrayBytes, &xray)
2020
if err != nil {
@@ -76,7 +76,7 @@ func shareLink(proxy conf.OutboundDetourConfig) (*url.URL, error) {
7676
}
7777

7878
func shadowsocksLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
79-
var settings conf.ShadowsocksClientConfig
79+
var settings *conf.ShadowsocksClientConfig
8080
err := json.Unmarshal(*proxy.Settings, &settings)
8181
if err != nil {
8282
return err
@@ -96,7 +96,7 @@ func shadowsocksLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
9696
}
9797

9898
func vmessLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
99-
var settings conf.VMessOutboundConfig
99+
var settings *conf.VMessOutboundConfig
100100
err := json.Unmarshal(*proxy.Settings, &settings)
101101
if err != nil {
102102
return err
@@ -110,7 +110,7 @@ func vmessLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
110110
link.Host = fmt.Sprintf("%s:%d", vnext.Address, vnext.Port)
111111
if len(vnext.Users) > 0 {
112112
user := vnext.Users[0]
113-
var account conf.VMessAccount
113+
var account *conf.VMessAccount
114114
err := json.Unmarshal(user, &account)
115115
if err != nil {
116116
return err
@@ -123,7 +123,7 @@ func vmessLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
123123
}
124124

125125
func vlessLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
126-
var settings conf.VLessOutboundConfig
126+
var settings *conf.VLessOutboundConfig
127127
err := json.Unmarshal(*proxy.Settings, &settings)
128128
if err != nil {
129129
return err
@@ -137,7 +137,7 @@ func vlessLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
137137
link.Host = fmt.Sprintf("%s:%d", vnext.Address, vnext.Port)
138138
if len(vnext.Users) > 0 {
139139
user := vnext.Users[0]
140-
var account vless.Account
140+
var account *vless.Account
141141
err := json.Unmarshal(user, &account)
142142
if err != nil {
143143
return err
@@ -155,7 +155,7 @@ func vlessLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
155155
}
156156

157157
func socksLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
158-
var settings conf.SocksClientConfig
158+
var settings *conf.SocksClientConfig
159159
err := json.Unmarshal(*proxy.Settings, &settings)
160160
if err != nil {
161161
return err
@@ -172,7 +172,7 @@ func socksLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
172172
link.User = url.User(username)
173173
} else {
174174
user := server.Users[0]
175-
var account conf.SocksAccount
175+
var account *conf.SocksAccount
176176
err := json.Unmarshal(user, &account)
177177
if err != nil {
178178
return err
@@ -186,7 +186,7 @@ func socksLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
186186
}
187187

188188
func trojanLink(proxy conf.OutboundDetourConfig, link *url.URL) error {
189-
var settings conf.TrojanClientConfig
189+
var settings *conf.TrojanClientConfig
190190
err := json.Unmarshal(*proxy.Settings, &settings)
191191
if err != nil {
192192
return err
@@ -231,7 +231,7 @@ func streamSettingsQuery(proxy conf.OutboundDetourConfig, link *url.URL) {
231231
if headerConfig == nil {
232232
break
233233
}
234-
var header XrayRawSettingsHeader
234+
var header *XrayRawSettingsHeader
235235
err := json.Unmarshal(headerConfig, &header)
236236
if err != nil {
237237
break
@@ -268,7 +268,7 @@ func streamSettingsQuery(proxy conf.OutboundDetourConfig, link *url.URL) {
268268
if headerConfig == nil {
269269
break
270270
}
271-
var header XrayFakeHeader
271+
var header *XrayFakeHeader
272272
err := json.Unmarshal(headerConfig, &header)
273273
if err != nil {
274274
break
@@ -338,7 +338,14 @@ func streamSettingsQuery(proxy conf.OutboundDetourConfig, link *url.URL) {
338338
}
339339
extra := streamSettings.XHTTPSettings.Extra
340340
if extra != nil {
341-
query = addQuery(query, "extra", string(extra))
341+
var extraConfig *conf.SplitHTTPConfig
342+
err := json.Unmarshal(extra, &extraConfig)
343+
if err == nil {
344+
extraBytes, err := json.Marshal(extraConfig)
345+
if err == nil {
346+
query = addQuery(query, "extra", string(extraBytes))
347+
}
348+
}
342349
}
343350
}
344351

@@ -379,7 +386,7 @@ func streamSettingsQuery(proxy conf.OutboundDetourConfig, link *url.URL) {
379386
if len(sni) > 0 {
380387
query = addQuery(query, "sni", sni)
381388
}
382-
pbk := streamSettings.REALITYSettings.PublicKey
389+
pbk := streamSettings.REALITYSettings.Password
383390
if len(pbk) > 0 {
384391
query = addQuery(query, "pbk", pbk)
385392
}

share/parse_share.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
func ConvertShareLinksToXrayJson(links string) (*conf.Config, error) {
1919
text := strings.TrimSpace(links)
2020
if strings.HasPrefix(text, "{") {
21-
var xray conf.Config
21+
var xray *conf.Config
2222
err := json.Unmarshal([]byte(text), &xray)
2323
if err != nil {
2424
return nil, err
@@ -29,7 +29,7 @@ func ConvertShareLinksToXrayJson(links string) (*conf.Config, error) {
2929
return nil, fmt.Errorf("no valid outbounds")
3030
}
3131

32-
return &xray, nil
32+
return xray, nil
3333
}
3434

3535
text = FixWindowsReturn(text)
@@ -494,7 +494,7 @@ func (proxy xrayShareLink) streamSettings(link *url.URL) (*conf.StreamConfig, er
494494

495495
extra := query.Get("extra")
496496
if len(extra) > 0 {
497-
var extraConfig conf.SplitHTTPConfig
497+
var extraConfig *conf.SplitHTTPConfig
498498
err := json.Unmarshal([]byte(extra), &extraConfig)
499499
if err != nil {
500500
return nil, err

share/vmess.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type vmessQrCode struct {
2828

2929
func parseVMessQrCode(text string) (*conf.OutboundDetourConfig, error) {
3030
qrcodeBytes := []byte(text)
31-
qrcode := vmessQrCode{}
31+
var qrcode *vmessQrCode
3232

3333
err := json.Unmarshal(qrcodeBytes, &qrcode)
3434
if err != nil {

share/xray_json.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@ func setOutboundName(outbound *conf.OutboundDetourConfig, name string) {
3131

3232
func getOutboundName(outbound conf.OutboundDetourConfig) string {
3333
if outbound.SendThrough != nil {
34-
return *outbound.SendThrough
34+
if len(*outbound.SendThrough) > 0 {
35+
return *outbound.SendThrough
36+
}
37+
}
38+
if len(outbound.Tag) > 0 {
39+
return outbound.Tag
40+
}
41+
if len(outbound.Protocol) > 0 {
42+
return outbound.Protocol
3543
}
3644
return ""
3745
}

xray_wrapper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func NewXrayRunRequest(datDir, configPath string) (string, error) {
149149
DatDir: datDir,
150150
ConfigPath: configPath,
151151
}
152-
requestBytes, err := json.Marshal(request)
152+
requestBytes, err := json.Marshal(&request)
153153
if err != nil {
154154
return "", err
155155
}
@@ -164,7 +164,7 @@ func NewXrayRunFromJSONRequest(datDir, configJSON string) (string, error) {
164164
DatDir: datDir,
165165
ConfigJSON: configJSON,
166166
}
167-
requestBytes, err := json.Marshal(request)
167+
requestBytes, err := json.Marshal(&request)
168168
if err != nil {
169169
return "", err
170170
}

0 commit comments

Comments
 (0)