diff --git a/api/v2board/model.go b/api/v2board/model.go deleted file mode 100644 index d50d8254..00000000 --- a/api/v2board/model.go +++ /dev/null @@ -1,8 +0,0 @@ -// Deprecated: after 2023.6.1 -package v2board - -type UserTraffic struct { - UID int `json:"user_id"` - Upload int64 `json:"u"` - Download int64 `json:"d"` -} diff --git a/api/v2board/v2board.go b/api/v2board/v2board.go deleted file mode 100644 index 424c9f3e..00000000 --- a/api/v2board/v2board.go +++ /dev/null @@ -1,416 +0,0 @@ -package v2board - -import ( - "bufio" - "encoding/json" - "errors" - "fmt" - "log" - "os" - "regexp" - "strconv" - "strings" - "sync" - "time" - - "github.com/bitly/go-simplejson" - "github.com/go-resty/resty/v2" - - "github.com/XrayR-project/XrayR/api" -) - -// APIClient create an api client to the panel. -type APIClient struct { - client *resty.Client - APIHost string - NodeID int - Key string - NodeType string - EnableVless bool - VlessFlow string - SpeedLimit float64 - DeviceLimit int - LocalRuleList []api.DetectRule - ConfigResp *simplejson.Json - access sync.Mutex -} - -// New create an api instance -func New(apiConfig *api.Config) *APIClient { - - client := resty.New() - client.SetRetryCount(3) - if apiConfig.Timeout > 0 { - client.SetTimeout(time.Duration(apiConfig.Timeout) * time.Second) - } else { - client.SetTimeout(5 * time.Second) - } - client.OnError(func(req *resty.Request, err error) { - if v, ok := err.(*resty.ResponseError); ok { - // v.Response contains the last response from the server - // v.Err contains the original error - log.Print(v.Err) - } - }) - client.SetBaseURL(apiConfig.APIHost) - // Create Key for each requests - client.SetQueryParams(map[string]string{ - "node_id": strconv.Itoa(apiConfig.NodeID), - "token": apiConfig.Key, - }) - // Read local rule list - localRuleList := readLocalRuleList(apiConfig.RuleListPath) - apiClient := &APIClient{ - client: client, - NodeID: apiConfig.NodeID, - Key: apiConfig.Key, - APIHost: apiConfig.APIHost, - NodeType: apiConfig.NodeType, - EnableVless: apiConfig.EnableVless, - VlessFlow: apiConfig.VlessFlow, - SpeedLimit: apiConfig.SpeedLimit, - DeviceLimit: apiConfig.DeviceLimit, - LocalRuleList: localRuleList, - } - return apiClient -} - -// readLocalRuleList reads the local rule list file -func readLocalRuleList(path string) (LocalRuleList []api.DetectRule) { - - LocalRuleList = make([]api.DetectRule, 0) - if path != "" { - // open the file - file, err := os.Open(path) - - // handle errors while opening - if err != nil { - log.Printf("Error when opening file: %s", err) - return LocalRuleList - } - - fileScanner := bufio.NewScanner(file) - - // read line by line - for fileScanner.Scan() { - LocalRuleList = append(LocalRuleList, api.DetectRule{ - ID: -1, - Pattern: regexp.MustCompile(fileScanner.Text()), - }) - } - // handle first encountered error while reading - if err := fileScanner.Err(); err != nil { - log.Fatalf("Error while reading file: %s", err) - return - } - - file.Close() - } - - return LocalRuleList -} - -// Describe return a description of the client -func (c *APIClient) Describe() api.ClientInfo { - return api.ClientInfo{APIHost: c.APIHost, NodeID: c.NodeID, Key: c.Key, NodeType: c.NodeType} -} - -// Debug set the client debug for client -func (c *APIClient) Debug() { - c.client.SetDebug(true) -} - -func (c *APIClient) assembleURL(path string) string { - return c.APIHost + path -} - -func (c *APIClient) parseResponse(res *resty.Response, path string, err error) (*simplejson.Json, error) { - if err != nil { - return nil, fmt.Errorf("request %s failed: %s", c.assembleURL(path), err) - } - - if res.StatusCode() > 400 { - body := res.Body() - return nil, fmt.Errorf("request %s failed: %s, %s", c.assembleURL(path), string(body), err) - } - rtn, err := simplejson.NewJson(res.Body()) - if err != nil { - return nil, fmt.Errorf("ret %s invalid", res.String()) - } - return rtn, nil -} - -// GetNodeInfo will pull NodeInfo Config from sspanel -func (c *APIClient) GetNodeInfo() (nodeInfo *api.NodeInfo, err error) { - var path string - switch c.NodeType { - case "V2ray": - path = "/api/v1/server/Deepbwork/config" - case "Trojan": - path = "/api/v1/server/TrojanTidalab/config" - case "Shadowsocks": - if nodeInfo, err = c.ParseSSNodeResponse(); err == nil { - return nodeInfo, nil - } else { - return nil, err - } - default: - return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType) - } - res, err := c.client.R(). - SetQueryParam("local_port", "1"). - ForceContentType("application/json"). - Get(path) - - response, err := c.parseResponse(res, path, err) - c.access.Lock() - defer c.access.Unlock() - c.ConfigResp = response - if err != nil { - return nil, err - } - - switch c.NodeType { - case "V2ray": - nodeInfo, err = c.ParseV2rayNodeResponse(response) - case "Trojan": - nodeInfo, err = c.ParseTrojanNodeResponse(response) - case "Shadowsocks": - nodeInfo, err = c.ParseSSNodeResponse() - default: - return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType) - } - - if err != nil { - res, _ := response.MarshalJSON() - return nil, fmt.Errorf("Parse node info failed: %s, \nError: %s", string(res), err) - } - - return nodeInfo, nil -} - -// GetUserList will pull user form sspanel -func (c *APIClient) GetUserList() (UserList *[]api.UserInfo, err error) { - var path string - switch c.NodeType { - case "V2ray": - path = "/api/v1/server/Deepbwork/user" - case "Trojan": - path = "/api/v1/server/TrojanTidalab/user" - case "Shadowsocks": - path = "/api/v1/server/ShadowsocksTidalab/user" - default: - return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType) - } - res, err := c.client.R(). - ForceContentType("application/json"). - Get(path) - - response, err := c.parseResponse(res, path, err) - if err != nil { - return nil, err - } - numOfUsers := len(response.Get("data").MustArray()) - userList := make([]api.UserInfo, numOfUsers) - for i := 0; i < numOfUsers; i++ { - user := api.UserInfo{} - user.UID = response.Get("data").GetIndex(i).Get("id").MustInt() - user.SpeedLimit = uint64(c.SpeedLimit * 1000000 / 8) - user.DeviceLimit = c.DeviceLimit - switch c.NodeType { - case "Shadowsocks": - user.Email = response.Get("data").GetIndex(i).Get("secret").MustString() - user.Passwd = response.Get("data").GetIndex(i).Get("secret").MustString() - user.Method = response.Get("data").GetIndex(i).Get("cipher").MustString() - user.Port = uint32(response.Get("data").GetIndex(i).Get("port").MustUint64()) - case "Trojan": - user.UUID = response.Get("data").GetIndex(i).Get("trojan_user").Get("password").MustString() - user.Email = response.Get("data").GetIndex(i).Get("trojan_user").Get("password").MustString() - case "V2ray": - user.UUID = response.Get("data").GetIndex(i).Get("v2ray_user").Get("uuid").MustString() - user.Email = response.Get("data").GetIndex(i).Get("v2ray_user").Get("email").MustString() - user.AlterID = uint16(response.Get("data").GetIndex(i).Get("v2ray_user").Get("alter_id").MustUint64()) - } - userList[i] = user - } - return &userList, nil -} - -// ReportUserTraffic reports the user traffic -func (c *APIClient) ReportUserTraffic(userTraffic *[]api.UserTraffic) error { - var path string - switch c.NodeType { - case "V2ray": - path = "/api/v1/server/Deepbwork/submit" - case "Trojan": - path = "/api/v1/server/TrojanTidalab/submit" - case "Shadowsocks": - path = "/api/v1/server/ShadowsocksTidalab/submit" - } - - data := make([]UserTraffic, len(*userTraffic)) - for i, traffic := range *userTraffic { - data[i] = UserTraffic{ - UID: traffic.UID, - Upload: traffic.Upload, - Download: traffic.Download} - } - - res, err := c.client.R(). - SetQueryParam("node_id", strconv.Itoa(c.NodeID)). - SetBody(data). - ForceContentType("application/json"). - Post(path) - _, err = c.parseResponse(res, path, err) - if err != nil { - return err - } - return nil -} - -// GetNodeRule implements the API interface -func (c *APIClient) GetNodeRule() (*[]api.DetectRule, error) { - ruleList := c.LocalRuleList - if c.NodeType != "V2ray" { - return &ruleList, nil - } - - // V2board only support the rule for v2ray - // fix: reuse config response - c.access.Lock() - defer c.access.Unlock() - ruleListResponse := c.ConfigResp.Get("routing").Get("rules").GetIndex(1).Get("domain").MustStringArray() - for i, rule := range ruleListResponse { - rule = strings.TrimPrefix(rule, "regexp:") - ruleListItem := api.DetectRule{ - ID: i, - Pattern: regexp.MustCompile(rule), - } - ruleList = append(ruleList, ruleListItem) - } - return &ruleList, nil -} - -// ReportNodeStatus implements the API interface -func (c *APIClient) ReportNodeStatus(nodeStatus *api.NodeStatus) (err error) { - return nil -} - -// ReportNodeOnlineUsers implements the API interface -func (c *APIClient) ReportNodeOnlineUsers(onlineUserList *[]api.OnlineUser) error { - return nil -} - -// ReportIllegal implements the API interface -func (c *APIClient) ReportIllegal(detectResultList *[]api.DetectResult) error { - return nil -} - -// ParseTrojanNodeResponse parse the response for the given nodeinfor format -func (c *APIClient) ParseTrojanNodeResponse(nodeInfoResponse *simplejson.Json) (*api.NodeInfo, error) { - port := uint32(nodeInfoResponse.Get("local_port").MustUint64()) - host := nodeInfoResponse.Get("ssl").Get("sni").MustString() - - // Create GeneralNodeInfo - nodeinfo := &api.NodeInfo{ - NodeType: c.NodeType, - NodeID: c.NodeID, - Port: port, - TransportProtocol: "tcp", - EnableTLS: true, - Host: host, - } - return nodeinfo, nil -} - -// ParseSSNodeResponse parse the response for the given nodeinfor format -func (c *APIClient) ParseSSNodeResponse() (*api.NodeInfo, error) { - var port uint32 - var method string - userInfo, err := c.GetUserList() - if err != nil { - return nil, err - } - if len(*userInfo) > 0 { - port = (*userInfo)[0].Port - method = (*userInfo)[0].Method - } else { - return nil, errors.New("the number of node users is 0") - } - - // Create GeneralNodeInfo - nodeInfo := &api.NodeInfo{ - NodeType: c.NodeType, - NodeID: c.NodeID, - Port: port, - TransportProtocol: "tcp", - CypherMethod: method, - } - - return nodeInfo, nil -} - -// ParseV2rayNodeResponse parse the response for the given nodeinfor format -func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *simplejson.Json) (*api.NodeInfo, error) { - var path, host, serviceName string - var header json.RawMessage - var enableTLS bool - var alterID uint16 = 0 - - inboundInfo := simplejson.New() - if tmpInboundInfo, ok := nodeInfoResponse.CheckGet("inbound"); ok { - inboundInfo = tmpInboundInfo - // Compatible with v2board 1.5.5-dev - } else if tmpInboundInfo, ok := nodeInfoResponse.CheckGet("inbounds"); ok { - tmpInboundInfo := tmpInboundInfo.MustArray() - marshalByte, _ := json.Marshal(tmpInboundInfo[0].(map[string]interface{})) - inboundInfo, _ = simplejson.NewJson(marshalByte) - } else { - return nil, fmt.Errorf("unable to find inbound(s) in the nodeInfo") - } - - port := uint32(inboundInfo.Get("port").MustUint64()) - transportProtocol := inboundInfo.Get("streamSettings").Get("network").MustString() - - switch transportProtocol { - case "ws": - path = inboundInfo.Get("streamSettings").Get("wsSettings").Get("path").MustString() - host = inboundInfo.Get("streamSettings").Get("wsSettings").Get("headers").Get("Host").MustString() - case "grpc": - if data, ok := inboundInfo.Get("streamSettings").Get("grpcSettings").CheckGet("serviceName"); ok { - serviceName = data.MustString() - } - case "tcp": - if data, ok := inboundInfo.Get("streamSettings").Get("tcpSettings").CheckGet("header"); ok { - if httpHeader, err := data.MarshalJSON(); err != nil { - return nil, err - } else { - header = httpHeader - } - } - - } - if inboundInfo.Get("streamSettings").Get("security").MustString() == "tls" { - enableTLS = true - } else { - enableTLS = false - } - - // Create GeneralNodeInfo - // AlterID will be updated after next sync - nodeInfo := &api.NodeInfo{ - NodeType: c.NodeType, - NodeID: c.NodeID, - Port: port, - AlterID: alterID, - TransportProtocol: transportProtocol, - EnableTLS: enableTLS, - Path: path, - Host: host, - EnableVless: c.EnableVless, - VlessFlow: c.VlessFlow, - ServiceName: serviceName, - Header: header, - } - return nodeInfo, nil -} diff --git a/api/v2board/v2board_test.go b/api/v2board/v2board_test.go deleted file mode 100644 index c3f6ed3b..00000000 --- a/api/v2board/v2board_test.go +++ /dev/null @@ -1,101 +0,0 @@ -package v2board_test - -import ( - "testing" - - "github.com/XrayR-project/XrayR/api" - "github.com/XrayR-project/XrayR/api/v2board" -) - -func CreateClient() api.API { - apiConfig := &api.Config{ - APIHost: "http://localhost:9897", - Key: "qwertyuiopasdfghjkl", - NodeID: 1, - NodeType: "V2ray", - } - client := v2board.New(apiConfig) - return client -} - -func TestGetV2rayNodeinfo(t *testing.T) { - client := CreateClient() - nodeInfo, err := client.GetNodeInfo() - if err != nil { - t.Error(err) - } - t.Log(nodeInfo) -} - -func TestGetSSNodeinfo(t *testing.T) { - apiConfig := &api.Config{ - APIHost: "http://127.0.0.1:668", - Key: "qwertyuiopasdfghjkl", - NodeID: 1, - NodeType: "Shadowsocks", - } - client := v2board.New(apiConfig) - nodeInfo, err := client.GetNodeInfo() - if err != nil { - t.Error(err) - } - t.Log(nodeInfo) -} - -func TestGetTrojanNodeinfo(t *testing.T) { - apiConfig := &api.Config{ - APIHost: "http://127.0.0.1:668", - Key: "qwertyuiopasdfghjkl", - NodeID: 1, - NodeType: "Trojan", - } - client := v2board.New(apiConfig) - nodeInfo, err := client.GetNodeInfo() - if err != nil { - t.Error(err) - } - t.Log(nodeInfo) -} - -func TestGetUserList(t *testing.T) { - client := CreateClient() - - userList, err := client.GetUserList() - if err != nil { - t.Error(err) - } - - t.Log(userList) -} - -func TestReportReportUserTraffic(t *testing.T) { - client := CreateClient() - userList, err := client.GetUserList() - if err != nil { - t.Error(err) - } - generalUserTraffic := make([]api.UserTraffic, len(*userList)) - for i, userInfo := range *userList { - generalUserTraffic[i] = api.UserTraffic{ - UID: userInfo.UID, - Upload: 114514, - Download: 114514, - } - } - // client.Debug() - err = client.ReportUserTraffic(&generalUserTraffic) - if err != nil { - t.Error(err) - } -} - -func TestGetNodeRule(t *testing.T) { - client := CreateClient() - client.Debug() - ruleList, err := client.GetNodeRule() - if err != nil { - t.Error(err) - } - - t.Log(ruleList) -} diff --git a/go.mod b/go.mod index 33401e23..5c8f9947 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/shirou/gopsutil/v3 v3.23.5 github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 - github.com/xtls/xray-core v1.8.1 + github.com/xtls/xray-core v1.8.3 golang.org/x/crypto v0.10.0 golang.org/x/net v0.11.0 golang.org/x/time v0.3.0 @@ -28,7 +28,7 @@ require ( ) require ( - cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go/compute v1.19.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect github.com/Azure/azure-sdk-for-go v32.4.0+incompatible // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect @@ -76,7 +76,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect + github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect github.com/google/s2a-go v0.1.3 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -94,8 +94,8 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect - github.com/klauspost/compress v1.16.5 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/klauspost/compress v1.16.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b // indirect github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect github.com/labbsr0x/goh v1.0.1 // indirect @@ -107,7 +107,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-isatty v0.0.17 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect - github.com/miekg/dns v1.1.53 // indirect + github.com/miekg/dns v1.1.54 // indirect github.com/mimuret/golang-iij-dpf v0.7.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -122,7 +122,7 @@ require ( github.com/nrdcg/namesilo v0.2.1 // indirect github.com/nrdcg/nodion v0.1.0 // indirect github.com/nrdcg/porkbun v0.1.1 // indirect - github.com/onsi/ginkgo/v2 v2.9.2 // indirect + github.com/onsi/ginkgo/v2 v2.11.0 // indirect github.com/oracle/oci-go-sdk v24.3.0+incompatible // indirect github.com/ovh/go-ovh v1.1.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect @@ -138,7 +138,7 @@ require ( github.com/prometheus/procfs v0.8.0 // indirect github.com/quic-go/qtls-go1-19 v0.3.2 // indirect github.com/quic-go/qtls-go1-20 v0.2.2 // indirect - github.com/quic-go/quic-go v0.33.0 // indirect + github.com/quic-go/quic-go v0.35.1 // indirect github.com/refraction-networking/utls v1.3.2 // indirect github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect github.com/sacloud/api-client-go v0.2.1 // indirect @@ -170,24 +170,23 @@ require ( github.com/vinyldns/go-vinyldns v0.9.16 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect - github.com/xtls/reality v0.0.0-20230331223127-176a94313eda // indirect + github.com/xtls/reality v0.0.0-20230613075828-e07c3b04b983 // indirect github.com/yandex-cloud/go-genproto v0.0.0-20220805142335-27b56ddae16f // indirect github.com/yandex-cloud/go-sdk v0.0.0-20220805164847-cf028e604997 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opencensus.io v0.24.0 // indirect - go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 // indirect - go.uber.org/atomic v1.10.0 // indirect + go.uber.org/atomic v1.11.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect - golang.org/x/mod v0.10.0 // indirect + golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect + golang.org/x/mod v0.11.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/text v0.10.0 // indirect - golang.org/x/tools v0.8.0 // indirect + golang.org/x/tools v0.10.0 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.55.0 // indirect + google.golang.org/grpc v1.56.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/ns1/ns1-go.v2 v2.6.5 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 45cd195a..70353901 100644 --- a/go.sum +++ b/go.sum @@ -26,8 +26,8 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= @@ -226,7 +226,7 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= @@ -333,8 +333,8 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= +github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= @@ -440,10 +440,10 @@ github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcM github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= -github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b h1:DzHy0GlWeF0KAglaTMY7Q+khIFoG8toHP+wLFBVBQJc= github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -515,8 +515,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.47/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/dns v1.1.53 h1:ZBkuHr5dxHtB1caEOlZTLPo7D3L3TWckgUUs/RHfDxw= -github.com/miekg/dns v1.1.53/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/miekg/dns v1.1.54 h1:5jon9mWcb0sFJGpnI99tOMhCPyJ+RPVz5b63MQG0VWI= +github.com/miekg/dns v1.1.54/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= github.com/mimuret/golang-iij-dpf v0.7.1 h1:MHEZKx6gNGTvq1+3PYUNfTZ/qtGNNK4+zo+0Rdo4jY4= github.com/mimuret/golang-iij-dpf v0.7.1/go.mod h1:IXWYcQVIHYzuM+W7kDWX0mseHDfUoqMuarxMXHVTir0= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -573,14 +573,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/oracle/oci-go-sdk v24.3.0+incompatible h1:x4mcfb4agelf1O4/1/auGlZ1lr97jXRSSN5MxTgG/zU= github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= @@ -653,8 +653,8 @@ github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc8 github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= -github.com/quic-go/quic-go v0.33.0 h1:ItNoTDN/Fm/zBlq769lLJc8ECe9gYaW40veHCCco7y0= -github.com/quic-go/quic-go v0.33.0/go.mod h1:YMuhaAV9/jIu0XclDXwZPAsP/2Kgr5yMYhe9oxhhOFA= +github.com/quic-go/quic-go v0.35.1 h1:b0kzj6b/cQAf05cT0CkQubHM31wiA+xH3IBkxP62poo= +github.com/quic-go/quic-go v0.35.1/go.mod h1:+4CVgVppm0FNjpG3UcX8Joi/frKOH7/ciD5yGcwOO1g= github.com/r3labs/diff/v2 v2.15.1 h1:EOrVqPUzi+njlumoqJwiS/TgGgmZo83619FNDB9xQUg= github.com/r3labs/diff/v2 v2.15.1/go.mod h1:I8noH9Fc2fjSaMxqF3G2lhDdC0b+JXCfyx85tWFM9kc= github.com/refraction-networking/utls v1.3.2 h1:o+AkWB57mkcoW36ET7uJ002CpBWHu0KPxi6vzxvPnv8= @@ -813,10 +813,10 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xtls/reality v0.0.0-20230331223127-176a94313eda h1:psRJD2RrZbnI0OWyHvXfgYCPqlRM5q5SPDcjDoDBWhE= -github.com/xtls/reality v0.0.0-20230331223127-176a94313eda/go.mod h1:rkuAY1S9F8eI8gDiPDYvACE8e2uwkyg8qoOTuwWov7Y= -github.com/xtls/xray-core v1.8.1 h1:iSTTqXj82ZdwC1ah+eV331X4JTcnrDz+WuKuB/EB3P4= -github.com/xtls/xray-core v1.8.1/go.mod h1:AXxSso0MZwUE4NhRocCfHCg73BtJ+T2dSpQVo1Cg9VM= +github.com/xtls/reality v0.0.0-20230613075828-e07c3b04b983 h1:AMyzgjkh54WocjQSlCnT1LhDc/BKiUqtNOv40AkpURs= +github.com/xtls/reality v0.0.0-20230613075828-e07c3b04b983/go.mod h1:rkuAY1S9F8eI8gDiPDYvACE8e2uwkyg8qoOTuwWov7Y= +github.com/xtls/xray-core v1.8.3 h1:lxaVklPjLKqUU4ua4qH8SBaRcAaNHlH+LmXOx0U/Ejg= +github.com/xtls/xray-core v1.8.3/go.mod h1:i7t4JFnq828P2+XK0XjGQ8W9x78iu+EJ7jI4l3sonIw= github.com/yandex-cloud/go-genproto v0.0.0-20220805142335-27b56ddae16f h1:cG+ehPRJSlqljSufLf1KXeXpUd1dLNjnzA18mZcB/O0= github.com/yandex-cloud/go-genproto v0.0.0-20220805142335-27b56ddae16f/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= github.com/yandex-cloud/go-sdk v0.0.0-20220805164847-cf028e604997 h1:2wzke3JH7OtN20WsNDZx2VH/TCmsbqtDEbXzjF+i05E= @@ -840,12 +840,10 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 h1:Ss6D3hLXTM0KobyBYEAygXzFfGcjnmfEJOBgSbemCtg= -go.starlark.net v0.0.0-20230302034142-4b1e35fe2254/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/ratelimit v0.2.0 h1:UQE2Bgi7p2B85uP5dC2bbRtig0C+OeNRnNEafLjsLPA= go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= @@ -886,8 +884,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -914,8 +912,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -998,7 +996,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1072,19 +1070,17 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1165,8 +1161,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1273,8 +1269,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.0 h1:+y7Bs8rtMd07LeXmL3NxcTLn7mUkbKZqEpPhMNkwJEE= +google.golang.org/grpc v1.56.0/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/main/config.yml.example b/main/config.yml.example index 7b484c9a..120d7c00 100644 --- a/main/config.yml.example +++ b/main/config.yml.example @@ -13,7 +13,7 @@ ConnectionConfig: DownlinkOnly: 4 # Time limit when the connection is closed after the uplink is closed, Second BufferSize: 64 # The internal cache size of each connection, kB Nodes: - - PanelType: "SSpanel" # Panel type: SSpanel, V2board, NewV2board, PMpanel, Proxypanel, V2RaySocks + - PanelType: "SSpanel" # Panel type: SSpanel, NewV2board, PMpanel, Proxypanel, V2RaySocks ApiConfig: ApiHost: "http://127.0.0.1:667" ApiKey: "123" diff --git a/main/distro/all/all.go b/main/distro/all/all.go index c7499f14..79750f04 100644 --- a/main/distro/all/all.go +++ b/main/distro/all/all.go @@ -31,7 +31,6 @@ import ( _ "github.com/xtls/xray-core/proxy/dokodemo" _ "github.com/xtls/xray-core/proxy/freedom" _ "github.com/xtls/xray-core/proxy/http" - _ "github.com/xtls/xray-core/proxy/mtproto" _ "github.com/xtls/xray-core/proxy/shadowsocks" _ "github.com/xtls/xray-core/proxy/socks" _ "github.com/xtls/xray-core/proxy/trojan" diff --git a/panel/panel.go b/panel/panel.go index ec89991e..2a4eab5b 100644 --- a/panel/panel.go +++ b/panel/panel.go @@ -21,7 +21,6 @@ import ( "github.com/XrayR-project/XrayR/api/pmpanel" "github.com/XrayR-project/XrayR/api/proxypanel" "github.com/XrayR-project/XrayR/api/sspanel" - "github.com/XrayR-project/XrayR/api/v2board" "github.com/XrayR-project/XrayR/api/v2raysocks" _ "github.com/XrayR-project/XrayR/main/distro/all" "github.com/XrayR-project/XrayR/service" @@ -177,9 +176,6 @@ func (p *Panel) Start() { switch nodeConfig.PanelType { case "SSpanel": apiClient = sspanel.New(nodeConfig.ApiConfig) - // todo Deprecated after 2023.6.1 - case "V2board": - apiClient = v2board.New(nodeConfig.ApiConfig) case "NewV2board": apiClient = newV2board.New(nodeConfig.ApiConfig) case "PMpanel": diff --git a/service/controller/controller.go b/service/controller/controller.go index e156ff6c..6a888532 100644 --- a/service/controller/controller.go +++ b/service/controller/controller.go @@ -399,18 +399,7 @@ func (c *Controller) addNewUser(userInfo *[]api.UserInfo, nodeInfo *api.NodeInfo users := make([]*protocol.User, 0) switch nodeInfo.NodeType { case "V2ray": - if nodeInfo.EnableVless { - users = c.buildVlessUser(userInfo) - } else { - var alterID uint16 = 0 - if (c.panelType == "V2board" || c.panelType == "V2RaySocks") && len(*userInfo) > 0 { - // use latest userInfo - alterID = (*userInfo)[0].AlterID - } else { - alterID = nodeInfo.AlterID - } - users = c.buildVmessUser(userInfo, alterID) - } + users = c.buildVmessUser(userInfo) case "Trojan": users = c.buildTrojanUser(userInfo) case "Shadowsocks": diff --git a/service/controller/userbuilder.go b/service/controller/userbuilder.go index 88e41ddf..c539d7c2 100644 --- a/service/controller/userbuilder.go +++ b/service/controller/userbuilder.go @@ -25,12 +25,11 @@ var AEADMethod = map[shadowsocks.CipherType]uint8{ shadowsocks.CipherType_XCHACHA20_POLY1305: 0, } -func (c *Controller) buildVmessUser(userInfo *[]api.UserInfo, serverAlterID uint16) (users []*protocol.User) { +func (c *Controller) buildVmessUser(userInfo *[]api.UserInfo) (users []*protocol.User) { users = make([]*protocol.User, len(*userInfo)) for i, user := range *userInfo { vmessAccount := &conf.VMessAccount{ ID: user.UUID, - AlterIds: serverAlterID, Security: "auto", } users[i] = &protocol.User{