mirror of
https://github.com/wyx2685/V2bX.git
synced 2026-02-04 04:30:08 +00:00
fix bug
This commit is contained in:
68
node/node.go
68
node/node.go
@@ -109,18 +109,16 @@ func (c *Node) Start() error {
|
||||
time.Sleep(time.Duration(c.config.UpdatePeriodic) * time.Second)
|
||||
_ = c.userReportPeriodic.Start()
|
||||
}()
|
||||
if c.config.EnableIpRecorder {
|
||||
c.onlineIpReportPeriodic = &task.Periodic{
|
||||
Interval: time.Duration(c.config.UpdatePeriodic) * 30,
|
||||
Execute: c.onlineIpReport,
|
||||
}
|
||||
log.Printf("[%s: %d] Start report online ip", c.nodeInfo.NodeType, c.nodeInfo.NodeId)
|
||||
// delay to start onlineIpReport
|
||||
go func() {
|
||||
time.Sleep(time.Duration(c.config.UpdatePeriodic) * time.Second)
|
||||
_ = c.onlineIpReportPeriodic.Start()
|
||||
}()
|
||||
c.onlineIpReportPeriodic = &task.Periodic{
|
||||
Interval: time.Duration(c.config.UpdatePeriodic) * 30,
|
||||
Execute: c.onlineIpReport,
|
||||
}
|
||||
log.Printf("[%s: %d] Start report online ip", c.nodeInfo.NodeType, c.nodeInfo.NodeId)
|
||||
// delay to start onlineIpReport
|
||||
go func() {
|
||||
time.Sleep(time.Duration(c.config.UpdatePeriodic) * time.Second)
|
||||
_ = c.onlineIpReportPeriodic.Start()
|
||||
}()
|
||||
runtime.GC()
|
||||
return nil
|
||||
}
|
||||
@@ -389,33 +387,37 @@ func (c *Node) userInfoMonitor() (err error) {
|
||||
}
|
||||
|
||||
func (c *Node) onlineIpReport() (err error) {
|
||||
onlineIp, err := c.server.GetOnlineIps(c.Tag)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return nil
|
||||
}
|
||||
rsp, err := resty.New().SetTimeout(time.Duration(c.config.IpRecorderConfig.Timeout) * time.Second).
|
||||
R().
|
||||
SetBody(onlineIp).
|
||||
Post(c.config.IpRecorderConfig.Url +
|
||||
"/api/v1/SyncOnlineIp?token=" +
|
||||
c.config.IpRecorderConfig.Token)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
c.server.ClearOnlineIps(c.Tag)
|
||||
return nil
|
||||
}
|
||||
log.Printf("[Node: %d] Report %d online ip", c.nodeInfo.NodeId, len(onlineIp))
|
||||
if rsp.StatusCode() == 200 {
|
||||
onlineIp = []limiter.UserIp{}
|
||||
err := json.Unmarshal(rsp.Body(), onlineIp)
|
||||
if c.config.EnableIpRecorder {
|
||||
onlineIp, err := c.server.GetOnlineIps(c.Tag)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return nil
|
||||
}
|
||||
rsp, err := resty.New().SetTimeout(time.Duration(c.config.IpRecorderConfig.Timeout) * time.Second).
|
||||
R().
|
||||
SetBody(onlineIp).
|
||||
Post(c.config.IpRecorderConfig.Url +
|
||||
"/api/v1/SyncOnlineIp?token=" +
|
||||
c.config.IpRecorderConfig.Token)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
c.server.ClearOnlineIps(c.Tag)
|
||||
return nil
|
||||
}
|
||||
c.server.UpdateOnlineIps(c.Tag, onlineIp)
|
||||
log.Printf("[Node: %d] Updated %d online ip", c.nodeInfo.NodeId, len(onlineIp))
|
||||
log.Printf("[Node: %d] Report %d online ip", c.nodeInfo.NodeId, len(onlineIp))
|
||||
if rsp.StatusCode() == 200 {
|
||||
onlineIp = []limiter.UserIp{}
|
||||
err := json.Unmarshal(rsp.Body(), onlineIp)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
c.server.ClearOnlineIps(c.Tag)
|
||||
return nil
|
||||
}
|
||||
c.server.UpdateOnlineIps(c.Tag, onlineIp)
|
||||
log.Printf("[Node: %d] Updated %d online ip", c.nodeInfo.NodeId, len(onlineIp))
|
||||
} else {
|
||||
c.server.ClearOnlineIps(c.Tag)
|
||||
}
|
||||
} else {
|
||||
c.server.ClearOnlineIps(c.Tag)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user