mirror of
https://github.com/wyx2685/V2bX.git
synced 2025-01-22 09:58:14 -05:00
尝试优化代码
This commit is contained in:
parent
e292b3b0e7
commit
91e78fbc20
@ -134,8 +134,18 @@ func (c *Client) GetNodeInfo() (node *NodeInfo, err error) {
|
||||
if err = c.checkResponse(r, path, err); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if r.StatusCode() == 304 {
|
||||
return nil, nil
|
||||
|
||||
if r != nil {
|
||||
defer func() {
|
||||
if r.RawBody() != nil {
|
||||
r.RawBody().Close()
|
||||
}
|
||||
}()
|
||||
if r.StatusCode() == 304 {
|
||||
return nil, nil
|
||||
}
|
||||
} else {
|
||||
return nil, fmt.Errorf("received nil response")
|
||||
}
|
||||
node = &NodeInfo{
|
||||
Id: c.NodeId,
|
||||
|
@ -30,13 +30,21 @@ func (c *Client) GetUserList() (UserList []UserInfo, err error) {
|
||||
r, err := c.client.R().
|
||||
SetHeader("If-None-Match", c.userEtag).
|
||||
Get(path)
|
||||
err = c.checkResponse(r, path, err)
|
||||
if err != nil {
|
||||
if err = c.checkResponse(r, path, err); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if r.StatusCode() == 304 {
|
||||
return nil, nil
|
||||
if r != nil {
|
||||
defer func() {
|
||||
if r.RawBody() != nil {
|
||||
r.RawBody().Close()
|
||||
}
|
||||
}()
|
||||
if r.StatusCode() == 304 {
|
||||
return nil, nil
|
||||
}
|
||||
} else {
|
||||
return nil, fmt.Errorf("received nil response")
|
||||
}
|
||||
var userList *UserListBody
|
||||
err = json.Unmarshal(r.Body(), &userList)
|
||||
|
18
conf/conf.go
18
conf/conf.go
@ -2,9 +2,11 @@ package conf
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/InazumaV/V2bX/common/json5"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/InazumaV/V2bX/common/json5"
|
||||
|
||||
"github.com/goccy/go-json"
|
||||
)
|
||||
|
||||
@ -29,5 +31,17 @@ func (p *Conf) LoadFromPath(filePath string) error {
|
||||
return fmt.Errorf("open config file error: %s", err)
|
||||
}
|
||||
defer f.Close()
|
||||
return json.NewDecoder(json5.NewTrimNodeReader(f)).Decode(p)
|
||||
|
||||
reader := json5.NewTrimNodeReader(f)
|
||||
data, err := io.ReadAll(reader)
|
||||
if err != nil {
|
||||
return fmt.Errorf("read config file error: %s", err)
|
||||
}
|
||||
|
||||
err = json.Unmarshal(data, p)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unmarshal config error: %s", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package sing
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/sagernet/sing-box/log"
|
||||
@ -38,14 +39,13 @@ func init() {
|
||||
func New(c *conf.CoreConfig) (vCore.Core, error) {
|
||||
options := option.Options{}
|
||||
if len(c.SingConfig.OriginalPath) != 0 {
|
||||
f, err := os.Open(c.SingConfig.OriginalPath)
|
||||
data, err := os.ReadFile(c.SingConfig.OriginalPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("open original config error: %s", err)
|
||||
return nil, fmt.Errorf("read original config error: %s", err)
|
||||
}
|
||||
defer f.Close()
|
||||
err = json.NewDecoder(f).Decode(&options)
|
||||
err = json.Unmarshal(data, &options)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("decode original config error: %s", err)
|
||||
return nil, fmt.Errorf("unmarshal original config error: %s", err)
|
||||
}
|
||||
}
|
||||
options.Log = &option.LogOptions{
|
||||
@ -68,11 +68,19 @@ func New(c *conf.CoreConfig) (vCore.Core, error) {
|
||||
return nil, fmt.Errorf("failed to open or create sing dns config file: %s", err)
|
||||
}
|
||||
defer f.Close()
|
||||
if err := json.NewDecoder(f).Decode(options.DNS); err != nil {
|
||||
data, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
log.Warn(fmt.Sprintf(
|
||||
"Failed to unmarshal sing dns config from file '%v': %v. Using default DNS options",
|
||||
"Failed to read sing dns config from file '%v': %v. Using default DNS options",
|
||||
f.Name(), err))
|
||||
options.DNS = &option.DNSOptions{}
|
||||
} else {
|
||||
if err := json.Unmarshal(data, options.DNS); err != nil {
|
||||
log.Warn(fmt.Sprintf(
|
||||
"Failed to unmarshal sing dns config from file '%v': %v. Using default DNS options",
|
||||
f.Name(), err))
|
||||
options.DNS = &option.DNSOptions{}
|
||||
}
|
||||
}
|
||||
os.Setenv("SING_DNS_PATH", c.SingConfig.DnsConfigPath)
|
||||
}
|
||||
|
@ -2,14 +2,15 @@ package xray
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/InazumaV/V2bX/api/panel"
|
||||
"github.com/goccy/go-json"
|
||||
log "github.com/sirupsen/logrus"
|
||||
coreConf "github.com/xtls/xray-core/infra/conf"
|
||||
"net"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/InazumaV/V2bX/api/panel"
|
||||
"github.com/goccy/go-json"
|
||||
log "github.com/sirupsen/logrus"
|
||||
coreConf "github.com/xtls/xray-core/infra/conf"
|
||||
)
|
||||
|
||||
func updateDNSConfig(node *panel.NodeInfo) (err error) {
|
||||
@ -62,7 +63,7 @@ func saveDnsConfig(dns []byte, dnsPath string) (err error) {
|
||||
}
|
||||
if !bytes.Equal(currentData, dns) {
|
||||
coreDnsConfig := &coreConf.DNSConfig{}
|
||||
if err = json.NewDecoder(bytes.NewReader(dns)).Decode(coreDnsConfig); err != nil {
|
||||
if err = json.Unmarshal(dns, coreDnsConfig); err != nil {
|
||||
log.WithField("err", err).Error("Failed to unmarshal DNS config")
|
||||
}
|
||||
_, err := coreDnsConfig.Build()
|
||||
|
3
main.go
3
main.go
@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "net/http"
|
||||
_ "net/http/pprof"
|
||||
|
||||
"github.com/InazumaV/V2bX/cmd"
|
||||
@ -10,7 +9,7 @@ import (
|
||||
func main() {
|
||||
//内存泄漏排查
|
||||
// go func() {
|
||||
// http.ListenAndServe("0.0.0.0:6060", nil)
|
||||
// http.ListenAndServe("127.0.0.1:6060", nil)
|
||||
// }()
|
||||
cmd.Run()
|
||||
}
|
||||
|
@ -262,12 +262,14 @@ func (u *User) DecodePrivate(pemEncodedPriv string) (*ecdsa.PrivateKey, error) {
|
||||
privateKey, err := x509.ParseECPrivateKey(x509EncodedPriv)
|
||||
return privateKey, err
|
||||
}
|
||||
|
||||
func (u *User) Load(path string) error {
|
||||
f, err := os.Open(path)
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("open file error: %s", err)
|
||||
}
|
||||
err = json.NewDecoder(f).Decode(u)
|
||||
|
||||
err = json.Unmarshal(data, u)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unmarshal json error: %s", err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user