mirror of
https://github.com/InazumaV/Ratte.git
synced 2026-02-04 04:30:09 +00:00
fix: bugs
This commit is contained in:
@@ -3,6 +3,9 @@ package handler
|
||||
import "fmt"
|
||||
|
||||
func (h *Handler) RenewCertHandle() error {
|
||||
if !h.needTls {
|
||||
return nil
|
||||
}
|
||||
err := h.acme.RenewCert(h.Options.Cert.CertPath, h.Options.Cert.KeyPath, h.Options.Cert.Domain)
|
||||
if err != nil {
|
||||
return fmt.Errorf("renew cert error: %w", err)
|
||||
|
||||
@@ -18,6 +18,7 @@ type Handler struct {
|
||||
userList []panel.UserInfo
|
||||
userHash map[string]struct{}
|
||||
nodeAdded atomic.Bool
|
||||
needTls bool
|
||||
*conf.Options
|
||||
}
|
||||
|
||||
|
||||
@@ -15,9 +15,12 @@ func (h *Handler) PullNodeHandle(n *panel.NodeInfo) error {
|
||||
return fmt.Errorf("del node error: %w", err)
|
||||
}
|
||||
} else {
|
||||
err := h.acme.CreateCert(h.Cert.CertPath, h.Cert.KeyPath, h.Cert.Domain)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create cert error: %w", err)
|
||||
if n.TlsType() != panel.NoTls {
|
||||
h.needTls = true
|
||||
err := h.acme.CreateCert(h.Cert.CertPath, h.Cert.KeyPath, h.Cert.Domain)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create cert error: %w", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
var protocol, port string
|
||||
@@ -38,15 +41,18 @@ func (h *Handler) PullNodeHandle(n *panel.NodeInfo) error {
|
||||
protocol = "other"
|
||||
port = n.Other.Port
|
||||
}
|
||||
err := h.execHookCmd(h.Hook.BeforeAddNode, h.nodeName, protocol, port)
|
||||
if err != nil {
|
||||
h.l.WithError(err).Error("Exec before add node hook failed")
|
||||
if h.Hook.BeforeAddNode != "" {
|
||||
err := h.execHookCmd(h.Hook.BeforeAddNode, h.nodeName, protocol, port)
|
||||
if err != nil {
|
||||
h.l.WithError(err).Error("Exec before add node hook failed")
|
||||
}
|
||||
}
|
||||
|
||||
ni := (*core.NodeInfo)(n)
|
||||
ni.OtherOptions = maps.Merge[string, any](ni.OtherOptions, h.Options.Expand)
|
||||
ni.Limit.IPLimit = number.SelectBigger(ni.Limit.IPLimit, h.Limit.IPLimit)
|
||||
ni.Limit.SpeedLimit = number.SelectBigger(ni.Limit.SpeedLimit, uint64(h.Limit.SpeedLimit))
|
||||
err = h.c.AddNode(&core.AddNodeParams{
|
||||
err := h.c.AddNode(&core.AddNodeParams{
|
||||
NodeInfo: ni,
|
||||
TlsOptions: core.TlsOptions{
|
||||
CertPath: h.Cert.CertPath,
|
||||
@@ -56,9 +62,11 @@ func (h *Handler) PullNodeHandle(n *panel.NodeInfo) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("add node error: %w", err)
|
||||
}
|
||||
err = h.execHookCmd(h.Hook.AfterAddNode, h.nodeName, protocol, port)
|
||||
if err != nil {
|
||||
h.l.WithError(err).Warn("Exec after add node hook failed")
|
||||
if h.Hook.AfterAddNode != "" {
|
||||
err = h.execHookCmd(h.Hook.AfterAddNode, h.nodeName, protocol, port)
|
||||
if err != nil {
|
||||
h.l.WithError(err).Warn("Exec after add node hook failed")
|
||||
}
|
||||
}
|
||||
if h.nodeAdded.Load() {
|
||||
h.nodeAdded.Store(true)
|
||||
|
||||
@@ -36,6 +36,9 @@ func compareUserList(old, new []panel.UserInfo) (deleted []string, added []panel
|
||||
}
|
||||
|
||||
func (h *Handler) PullUserHandle(users []panel.UserInfo) error {
|
||||
if !h.nodeAdded.Load() {
|
||||
return nil
|
||||
}
|
||||
del, add := compareUserList(h.userList, users)
|
||||
cas := slices.RangeToNew[panel.UserInfo, core.UserInfo](add, func(_ int, v panel.UserInfo) core.UserInfo {
|
||||
return core.UserInfo(v.UserInfo)
|
||||
@@ -61,6 +64,9 @@ func (h *Handler) PullUserHandle(users []panel.UserInfo) error {
|
||||
}
|
||||
|
||||
func (h *Handler) ReportUserHandle(id int) error {
|
||||
if !h.nodeAdded.Load() {
|
||||
return nil
|
||||
}
|
||||
var err error
|
||||
req := &core.GetUserTrafficParams{NodeName: h.nodeName}
|
||||
var users []panel.UserTrafficInfo
|
||||
|
||||
Reference in New Issue
Block a user