- 增加设置总流量功能,流量超出后自动禁用
 - 优化部分 ui 细节
 - 修复监听 ip 不为空导致无法启动 xray 的问题
 - 修复二维码链接没有包含 address 的问题
This commit is contained in:
sprov
2021-06-12 11:26:35 +08:00
parent f6eb413597
commit 214b217f12
14 changed files with 149 additions and 36 deletions

View File

@@ -21,7 +21,6 @@ import (
"time"
"x-ui/config"
"x-ui/logger"
"x-ui/util"
"x-ui/util/common"
"x-ui/web/controller"
"x-ui/web/service"
@@ -244,6 +243,7 @@ func (s *Server) startTask() {
logger.Warning("start xray failed:", err)
}
var checkTime = 0
// 每 30 秒检查一次 xray 是否在运行
s.cron.AddFunc("@every 30s", func() {
if s.xrayService.IsXrayRunning() {
checkTime = 0
@@ -255,9 +255,10 @@ func (s *Server) startTask() {
}
s.xrayService.SetIsNeedRestart(true)
})
go func() {
time.Sleep(time.Second * 5)
// 与重启 xray 的时间错开
// 每 10 秒统计一次流量,首次启动延迟 5 秒,与重启 xray 的时间错开
s.cron.AddFunc("@every 10s", func() {
if !s.xrayService.IsXrayRunning() {
return
@@ -273,6 +274,16 @@ func (s *Server) startTask() {
}
})
}()
// 每分钟检查一次 inbound 流量超出情况
s.cron.AddFunc("@every 1m", func() {
needRestart, err := s.inboundService.DisableInvalidInbounds()
if err != nil {
logger.Warning("disable invalid inbounds err:", err)
} else if needRestart {
s.xrayService.SetIsNeedRestart(true)
}
})
}
func (s *Server) Start() (err error) {
@@ -343,11 +354,8 @@ func (s *Server) Start() (err error) {
}
func (s *Server) Stop() error {
if util.IsDone(s.ctx) {
// 防止 gc 后调用第二次 Stop
s.xrayService.StopXray()
}
s.cancel()
s.xrayService.StopXray()
if s.cron != nil {
s.cron.Stop()
}