@@ -13,83 +13,14 @@ import (
1313 "net/http"
1414 "net/url"
1515 "os"
16- "strconv"
1716 "strings"
1817 "time"
1918
2019 "ConfigProbe/pkg/v2rayprobe/litespeedtest/config"
2120 "ConfigProbe/pkg/v2rayprobe/litespeedtest/utils"
2221 "ConfigProbe/pkg/v2rayprobe/litespeedtest/web/render"
23- "github.com/gorilla/websocket"
2422)
2523
26- var upgrader = websocket.Upgrader {}
27-
28- func ServeFile (port int ) error {
29- http .HandleFunc ("/test" , updateTest )
30- http .HandleFunc ("/getSubscriptionLink" , getSubscriptionLink )
31- http .HandleFunc ("/getSubscription" , getSubscription )
32- log .Printf ("Start server at http://127.0.0.1:%d\n " , port )
33- if ipAddr , err := localIP (); err == nil {
34- log .Printf ("Start server at http://%s" , net .JoinHostPort (ipAddr .String (), strconv .Itoa (port )))
35- }
36- err := http .ListenAndServe (fmt .Sprintf (":%d" , port ), nil )
37- return err
38- }
39-
40- func updateTest (w http.ResponseWriter , r * http.Request ) {
41- c , err := upgrader .Upgrade (w , r , nil )
42- if err != nil {
43- log .Print ("upgrade:" , err )
44- return
45- }
46- defer c .Close ()
47- ctx , cancel := context .WithCancel (context .Background ())
48- defer cancel ()
49- for {
50- mt , message , err := c .ReadMessage ()
51- if err != nil {
52- log .Println ("read:" , err )
53- break
54- }
55- // log.Printf("recv: %s", message)
56- links , options , err := parseMessage (message )
57- if err != nil {
58- msg := `{"info": "error", "reason": "invalidsub"}`
59- c .WriteMessage (mt , []byte (msg ))
60- continue
61- }
62- if options .Unique {
63- uniqueLinks := []string {}
64- uniqueMap := map [string ]struct {}{}
65- for _ , link := range links {
66- cfg , err := config .Link2Config (link )
67- if err != nil {
68- continue
69- }
70- key := fmt .Sprintf ("%s%d%s%s%s" , cfg .Server , cfg .Port , cfg .Password , cfg .Protocol , cfg .SNI )
71- if _ , ok := uniqueMap [key ]; ! ok {
72- uniqueLinks = append (uniqueLinks , link )
73- uniqueMap [key ] = struct {}{}
74- }
75- }
76- links = uniqueLinks
77- }
78- p := ProfileTest {
79- Writer : c ,
80- MessageType : mt ,
81- Links : links ,
82- Options : options ,
83- }
84- go p .testAll (ctx )
85- // err = c.WriteMessage(mt, getMsgByte(0, "gotspeed"))
86- // if err != nil {
87- // log.Println("write:", err)
88- // break
89- // }
90- }
91- }
92-
9324func readConfig (configPath string ) (* ProfileTestOptions , error ) {
9425 data , err := os .ReadFile (configPath )
9526 if err != nil {
@@ -200,7 +131,6 @@ type TestResult struct {
200131 Nodes render.Nodes `json:"nodes"`
201132}
202133
203-
204134func isPrivateIP (ip net.IP ) bool {
205135 var privateIPBlocks []* net.IPNet
206136 for _ , cidr := range []string {
0 commit comments