mirror of
https://github.com/wyx2685/V2bX.git
synced 2025-01-22 18:08:14 -05:00
move extra to NetworkSettings
This commit is contained in:
parent
b3a8b27c2f
commit
15efffba0d
@ -2,13 +2,16 @@ package panel
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Yuzuki616/V2bX/conf"
|
|
||||||
"github.com/goccy/go-json"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/Yuzuki616/V2bX/common/crypt"
|
||||||
|
|
||||||
|
"github.com/Yuzuki616/V2bX/conf"
|
||||||
|
"github.com/goccy/go-json"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CommonNodeRsp struct {
|
type CommonNodeRsp struct {
|
||||||
@ -97,7 +100,6 @@ func (c *Client) GetNodeInfo() (node *NodeInfo, err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("decode common params error: %s", err)
|
return nil, fmt.Errorf("decode common params error: %s", err)
|
||||||
}
|
}
|
||||||
var extra []byte
|
|
||||||
for i := range common.Routes { // parse rules from routes
|
for i := range common.Routes { // parse rules from routes
|
||||||
var matchs []string
|
var matchs []string
|
||||||
if _, ok := common.Routes[i].Match.(string); ok {
|
if _, ok := common.Routes[i].Match.(string); ok {
|
||||||
@ -117,10 +119,6 @@ func (c *Client) GetNodeInfo() (node *NodeInfo, err error) {
|
|||||||
node.Rules = append(node.Rules, regexp.MustCompile(v))
|
node.Rules = append(node.Rules, regexp.MustCompile(v))
|
||||||
}
|
}
|
||||||
case "dns":
|
case "dns":
|
||||||
if matchs[0] != "extra" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
extra = []byte(strings.Join(matchs[1:], ""))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
node.ServerName = common.ServerName
|
node.ServerName = common.ServerName
|
||||||
@ -142,11 +140,14 @@ func (c *Client) GetNodeInfo() (node *NodeInfo, err error) {
|
|||||||
if rsp.Tls == 1 {
|
if rsp.Tls == 1 {
|
||||||
node.Tls = true
|
node.Tls = true
|
||||||
}
|
}
|
||||||
if len(extra) != 0 {
|
err = json.Unmarshal(rsp.NetworkSettings, &node.ExtraConfig)
|
||||||
err = json.Unmarshal(extra, &node.ExtraConfig)
|
if err != nil {
|
||||||
if err != nil {
|
return nil, fmt.Errorf("decode v2ray extra error: %s", err)
|
||||||
return nil, fmt.Errorf("decode v2ray extra error: %s", err)
|
}
|
||||||
}
|
if node.ExtraConfig.RealityConfig.PrivateKey != "" {
|
||||||
|
temp := crypt.GenShaHash([]byte(c.APIHost + c.Token))
|
||||||
|
temp, err = crypt.AesDecrypt(node.ExtraConfig.RealityConfig.PrivateKey, []byte(temp))
|
||||||
|
node.ExtraConfig.RealityConfig.PrivateKey = temp
|
||||||
}
|
}
|
||||||
case "shadowsocks":
|
case "shadowsocks":
|
||||||
rsp := ShadowsocksNodeRsp{}
|
rsp := ShadowsocksNodeRsp{}
|
||||||
|
@ -3,14 +3,15 @@ package panel
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Yuzuki616/V2bX/conf"
|
|
||||||
"github.com/go-resty/resty/v2"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/Yuzuki616/V2bX/conf"
|
||||||
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Panel is the interface for different panel's api.
|
// Panel is the interface for different panel's api.
|
||||||
@ -18,7 +19,7 @@ import (
|
|||||||
type Client struct {
|
type Client struct {
|
||||||
client *resty.Client
|
client *resty.Client
|
||||||
APIHost string
|
APIHost string
|
||||||
Key string
|
Token string
|
||||||
NodeType string
|
NodeType string
|
||||||
NodeId int
|
NodeId int
|
||||||
LocalRuleList []*regexp.Regexp
|
LocalRuleList []*regexp.Regexp
|
||||||
@ -48,7 +49,7 @@ func New(c *conf.ApiConfig) (*Client, error) {
|
|||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType)
|
return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType)
|
||||||
}
|
}
|
||||||
// Create Key for each requests
|
// set params
|
||||||
client.SetQueryParams(map[string]string{
|
client.SetQueryParams(map[string]string{
|
||||||
"node_type": c.NodeType,
|
"node_type": c.NodeType,
|
||||||
"node_id": strconv.Itoa(c.NodeID),
|
"node_id": strconv.Itoa(c.NodeID),
|
||||||
@ -58,7 +59,7 @@ func New(c *conf.ApiConfig) (*Client, error) {
|
|||||||
localRuleList := readLocalRuleList(c.RuleListPath)
|
localRuleList := readLocalRuleList(c.RuleListPath)
|
||||||
return &Client{
|
return &Client{
|
||||||
client: client,
|
client: client,
|
||||||
Key: c.Key,
|
Token: c.Key,
|
||||||
APIHost: c.APIHost,
|
APIHost: c.APIHost,
|
||||||
NodeType: c.NodeType,
|
NodeType: c.NodeType,
|
||||||
NodeId: c.NodeID,
|
NodeId: c.NodeID,
|
||||||
|
30
common/crypt/aes.go
Normal file
30
common/crypt/aes.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package crypt
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/aes"
|
||||||
|
"encoding/base64"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AesEncrypt(data []byte, key []byte) (string, error) {
|
||||||
|
a, err := aes.NewCipher(key)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
en := make([]byte, 0, len(data))
|
||||||
|
a.Encrypt(en, data)
|
||||||
|
return base64.StdEncoding.EncodeToString(en), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func AesDecrypt(data string, key []byte) (string, error) {
|
||||||
|
d, err := base64.StdEncoding.DecodeString(data)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
a, err := aes.NewCipher(key)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
de := make([]byte, 0, len(data))
|
||||||
|
a.Decrypt(de, d)
|
||||||
|
return string(de), nil
|
||||||
|
}
|
11
common/crypt/sha.go
Normal file
11
common/crypt/sha.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package crypt
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha256"
|
||||||
|
"encoding/hex"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GenShaHash(data []byte) string {
|
||||||
|
d := sha256.Sum256(data)
|
||||||
|
return hex.EncodeToString(d[:])
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user