api: newV2board: add Vless support (#534)

This commit is contained in:
betaxab 2023-11-28 20:08:44 +08:00 committed by GitHub
parent fa7fb7087f
commit 911b0c2ff5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 3 deletions

View File

@ -35,6 +35,21 @@ type v2ray struct {
ServiceName string `json:"serviceName"` ServiceName string `json:"serviceName"`
Header *json.RawMessage `json:"header"` Header *json.RawMessage `json:"header"`
} `json:"networkSettings"` } `json:"networkSettings"`
VlessNetworkSettings struct {
Path string `json:"path"`
Headers *json.RawMessage `json:"headers"`
ServiceName string `json:"serviceName"`
Header *json.RawMessage `json:"header"`
} `json:"network_settings"`
VlessFlow string `json:"flow"`
VlessTlsSettings struct {
ServerPort string `json:"server_port"`
Dest string `json:"dest"`
xVer uint64 `json:"xver"`
Sni string `json:"server_name"`
PrivateKey string `json:"private_key"`
ShortId string `json:"short_id"`
} `json:"tls_settings"`
Tls int `json:"tls"` Tls int `json:"tls"`
} }

View File

@ -54,10 +54,18 @@ func New(apiConfig *api.Config) *APIClient {
} }
}) })
client.SetBaseURL(apiConfig.APIHost) client.SetBaseURL(apiConfig.APIHost)
var nodeType string
if apiConfig.NodeType =="V2ray" && apiConfig.EnableVless {
nodeType = "vless"
} else {
nodeType = "vmess"
}
// Create Key for each requests // Create Key for each requests
client.SetQueryParams(map[string]string{ client.SetQueryParams(map[string]string{
"node_id": strconv.Itoa(apiConfig.NodeID), "node_id": strconv.Itoa(apiConfig.NodeID),
"node_type": strings.ToLower(apiConfig.NodeType), "node_type": nodeType,
"token": apiConfig.Key, "token": apiConfig.Key,
}) })
// Read local rule list // Read local rule list
@ -358,8 +366,34 @@ func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, erro
host string host string
header json.RawMessage header json.RawMessage
enableTLS bool enableTLS bool
enableREALITY bool
dest string
xVer uint64
) )
if s.VlessTlsSettings.Dest != "" {
dest = s.VlessTlsSettings.Dest
} else {
dest = s.VlessTlsSettings.Sni
}
if s.VlessTlsSettings.xVer != 0 {
xVer = s.VlessTlsSettings.xVer
} else {
xVer = 0
}
realityConfig := api.REALITYConfig{
Dest: dest + ":" + s.VlessTlsSettings.ServerPort,
ProxyProtocolVer: xVer,
ServerNames: []string{s.VlessTlsSettings.Sni},
PrivateKey: s.VlessTlsSettings.PrivateKey,
ShortIds: []string{s.VlessTlsSettings.ShortId},
}
if c.EnableVless {
s.NetworkSettings = s.VlessNetworkSettings
}
switch s.Network { switch s.Network {
case "ws": case "ws":
if s.NetworkSettings.Headers != nil { if s.NetworkSettings.Headers != nil {
@ -380,8 +414,16 @@ func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, erro
} }
} }
if s.Tls == 1 { switch s.Tls {
case 0:
enableTLS = false
enableREALITY = false
case 1:
enableTLS = true enableTLS = true
enableREALITY = false
case 2:
enableTLS = true
enableREALITY = true
} }
// Create GeneralNodeInfo // Create GeneralNodeInfo
@ -395,9 +437,11 @@ func (c *APIClient) parseV2rayNodeResponse(s *serverConfig) (*api.NodeInfo, erro
Path: s.NetworkSettings.Path, Path: s.NetworkSettings.Path,
Host: host, Host: host,
EnableVless: c.EnableVless, EnableVless: c.EnableVless,
VlessFlow: c.VlessFlow, VlessFlow: s.VlessFlow,
ServiceName: s.NetworkSettings.ServiceName, ServiceName: s.NetworkSettings.ServiceName,
Header: header, Header: header,
EnableREALITY: enableREALITY,
REALITYConfig: &realityConfig,
NameServerConfig: s.parseDNSConfig(), NameServerConfig: s.parseDNSConfig(),
}, nil }, nil
} }