@@ -264,39 +264,87 @@ func DoReplaceCDNIpSet(inputNode string, ipResult []string) ([]string, error) {
264
264
//vless协议
265
265
if strings .HasPrefix (sampleNode , vlessPre ) {
266
266
//vless: vless://[email protected] :539?type=tcp&security=tls&sni=b.a.tk&flow=xtls-rprx-direct#abc-vless-1
267
+ //vless://[email protected] :2083?encryption=none&security=tls&type=ws&host=&path=/4TLoIulw/#xray.wefuckgfw.tk%3A2083
267
268
re := regexp .MustCompile (`@(.*?):` )
269
+
268
270
nodeHost := re .FindStringSubmatch (sampleNode )[1 ]
269
271
270
272
if strings .Index (sampleNode , "host=" ) != - 1 {
271
273
re = regexp .MustCompile (`(host=)(.*?)(&)` )
272
- sampleNode = re .ReplaceAllString (sampleNode , "$1" + nodeHost + "$3" )
274
+
275
+ subStrPart1 := re .FindStringSubmatch (sampleNode )[1 ]
276
+ subStrPart3 := re .FindStringSubmatch (sampleNode )[3 ]
277
+ sampleNode = re .ReplaceAllString (sampleNode , subStrPart1 + nodeHost + subStrPart3 )
273
278
} else {
274
- re = regexp .MustCompile (`(@)(.*?)(:)(.*?)(\?)` )
275
- sampleNode = re .ReplaceAllString (sampleNode , "$1$2$3$4$5host=" + nodeHost + "&" )
279
+ var subStrPart5 string
280
+ if strings .Contains (sampleNode , "?" ) {
281
+ re = regexp .MustCompile (`(@)(.*?)(:)(.*?)(\?)` )
282
+ subStrPart5 = re .FindStringSubmatch (sampleNode )[5 ]
283
+
284
+ } else {
285
+ re = regexp .MustCompile (`(@)(.*?)(:)(\d+)(.*?)` )
286
+ subStrPart5 = re .FindStringSubmatch (sampleNode )[5 ] + "?"
287
+ }
288
+ subStrPart1 := re .FindStringSubmatch (sampleNode )[1 ]
289
+ subStrPart2 := re .FindStringSubmatch (sampleNode )[2 ]
290
+
291
+ subStrPart3 := re .FindStringSubmatch (sampleNode )[3 ]
292
+
293
+ subStrPart4 := re .FindStringSubmatch (sampleNode )[4 ]
294
+
295
+ //subStrPart5 := re.FindStringSubmatch(sampleNode)[5]
296
+ sampleNode = re .ReplaceAllString (sampleNode , subStrPart1 + subStrPart2 + subStrPart3 + subStrPart4 + subStrPart5 + "host=" + nodeHost + "&" )
297
+
276
298
}
277
299
278
300
for _ , ip := range ipResult {
279
301
re = regexp .MustCompile (`(@)(.*?)(:)` )
280
- nodes = append (nodes , re .ReplaceAllString (sampleNode , "$1" + ip + "$3" )+ "\n " )
302
+ subStrPart1 := re .FindStringSubmatch (sampleNode )[1 ]
303
+ subStrPart3 := re .FindStringSubmatch (sampleNode )[3 ]
304
+ nodes = append (nodes , re .ReplaceAllString (sampleNode , subStrPart1 + ip + subStrPart3 )+ "\r " )
281
305
}
282
306
return nodes , nil
283
307
}
284
308
if strings .HasPrefix (sampleNode , trojanPre ) {
285
309
//trojan trojan://[email protected] :48857?type=tcp&security=tls&sni=a.b.tk&flow=xtls-rprx-direct#a.b.tk-trojan-2
286
310
re := regexp .MustCompile (`@(.*?):` )
311
+
287
312
nodeHost := re .FindStringSubmatch (sampleNode )[1 ]
288
313
289
314
if strings .Index (sampleNode , "host=" ) != - 1 {
290
315
re = regexp .MustCompile (`(host=)(.*?)(&)` )
291
- sampleNode = re .ReplaceAllString (sampleNode , "$1" + nodeHost + "$3" )
316
+
317
+ subStrPart1 := re .FindStringSubmatch (sampleNode )[1 ]
318
+ subStrPart3 := re .FindStringSubmatch (sampleNode )[3 ]
319
+ sampleNode = re .ReplaceAllString (sampleNode , subStrPart1 + nodeHost + subStrPart3 )
292
320
} else {
293
- re = regexp .MustCompile (`(@)(.*?)(:)(.*?)(\?)` )
294
- sampleNode = re .ReplaceAllString (sampleNode , "$1$2$3$4$5host=" + nodeHost + "&" )
321
+ //是否有额外参数
322
+ var subStrPart5 string
323
+ if strings .Contains (sampleNode , "?" ) {
324
+ re = regexp .MustCompile (`(@)(.*?)(:)(.*?)(\?)` )
325
+ subStrPart5 = re .FindStringSubmatch (sampleNode )[5 ]
326
+
327
+ } else {
328
+ re = regexp .MustCompile (`(@)(.*?)(:)(\d+)(.*?)` )
329
+ subStrPart5 = re .FindStringSubmatch (sampleNode )[5 ] + "?"
330
+
331
+ }
332
+ subStrPart1 := re .FindStringSubmatch (sampleNode )[1 ]
333
+ subStrPart2 := re .FindStringSubmatch (sampleNode )[2 ]
334
+
335
+ subStrPart3 := re .FindStringSubmatch (sampleNode )[3 ]
336
+
337
+ subStrPart4 := re .FindStringSubmatch (sampleNode )[4 ]
338
+ //subStrPart5 := re.FindStringSubmatch(sampleNode)[5]
339
+
340
+ sampleNode = re .ReplaceAllString (sampleNode , subStrPart1 + subStrPart2 + subStrPart3 + subStrPart4 + subStrPart5 + "host=" + nodeHost + "&" )
295
341
}
296
342
297
343
for _ , ip := range ipResult {
298
344
re = regexp .MustCompile (`(@)(.*?)(:)` )
299
- nodes = append (nodes , re .ReplaceAllString (sampleNode , "$1" + ip + "$3" )+ "\n " )
345
+ subStrPart1 := re .FindStringSubmatch (sampleNode )[1 ]
346
+ subStrPart3 := re .FindStringSubmatch (sampleNode )[3 ]
347
+ nodes = append (nodes , re .ReplaceAllString (sampleNode , subStrPart1 + ip + subStrPart3 )+ "\r " )
300
348
}
301
349
return nodes , nil
302
350
}
0 commit comments