xray_traffic_job.go 667 B

1234567891011121314151617181920212223242526272829303132333435
  1. package job
  2. import (
  3. "x-ui/logger"
  4. "x-ui/web/service"
  5. )
  6. type XrayTrafficJob struct {
  7. xrayService service.XrayService
  8. inboundService service.InboundService
  9. }
  10. func NewXrayTrafficJob() *XrayTrafficJob {
  11. return new(XrayTrafficJob)
  12. }
  13. func (j *XrayTrafficJob) Run() {
  14. if !j.xrayService.IsXrayRunning() {
  15. return
  16. }
  17. traffics, clientTraffics, err := j.xrayService.GetXrayTraffic()
  18. if err != nil {
  19. logger.Warning("get xray traffic failed:", err)
  20. return
  21. }
  22. err, needRestart := j.inboundService.AddTraffic(traffics, clientTraffics)
  23. if err != nil {
  24. logger.Warning("add traffic failed:", err)
  25. }
  26. if needRestart {
  27. j.xrayService.SetToNeedRestart()
  28. }
  29. }