mirror of
https://github.com/wyx2685/V2bX.git
synced 2026-02-04 12:40:11 +00:00
调整设备数限制实现方式
This commit is contained in:
@@ -19,6 +19,7 @@ type Controller struct {
|
||||
limiter *limiter.Limiter
|
||||
traffic map[string]int64
|
||||
userList []panel.UserInfo
|
||||
aliveMap map[int]int
|
||||
info *panel.NodeInfo
|
||||
nodeInfoMonitorPeriodic *task.Task
|
||||
userReportPeriodic *task.Task
|
||||
@@ -54,6 +55,10 @@ func (c *Controller) Start() error {
|
||||
if len(c.userList) == 0 {
|
||||
return errors.New("add users error: not have any user")
|
||||
}
|
||||
c.aliveMap, err = c.apiClient.GetUserAlive()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get user alive list: %s", err)
|
||||
}
|
||||
if len(c.Options.Name) == 0 {
|
||||
c.tag = c.buildNodeTag(node)
|
||||
} else {
|
||||
@@ -61,7 +66,7 @@ func (c *Controller) Start() error {
|
||||
}
|
||||
|
||||
// add limiter
|
||||
l := limiter.AddLimiter(c.tag, &c.LimitConfig, c.userList)
|
||||
l := limiter.AddLimiter(c.tag, &c.LimitConfig, c.userList, c.aliveMap)
|
||||
// add rule limiter
|
||||
if err = l.UpdateRule(&node.Rules); err != nil {
|
||||
return fmt.Errorf("update rule error: %s", err)
|
||||
|
||||
12
node/task.go
12
node/task.go
@@ -68,6 +68,11 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
||||
}).Error("Get user list failed")
|
||||
return nil
|
||||
}
|
||||
// get user alive
|
||||
newA, err := c.apiClient.GetUserAlive()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if newN != nil {
|
||||
c.info = newN
|
||||
// nodeInfo changed
|
||||
@@ -92,7 +97,7 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
||||
// Remove Old limiter
|
||||
limiter.DeleteLimiter(c.tag)
|
||||
// Add new Limiter
|
||||
l := limiter.AddLimiter(c.tag, &c.LimitConfig, c.userList)
|
||||
l := limiter.AddLimiter(c.tag, &c.LimitConfig, c.userList, newA)
|
||||
c.limiter = l
|
||||
}
|
||||
// Update rule
|
||||
@@ -154,7 +159,10 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
||||
// exit
|
||||
return nil
|
||||
}
|
||||
|
||||
// update alive list
|
||||
if newA != nil {
|
||||
c.limiter.AliveList = newA
|
||||
}
|
||||
// node no changed, check users
|
||||
if len(newU) == 0 {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user