1
0

xray_traffic_job.go 886 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. outboundService service.OutboundService
  10. }
  11. func NewXrayTrafficJob() *XrayTrafficJob {
  12. return new(XrayTrafficJob)
  13. }
  14. func (j *XrayTrafficJob) Run() {
  15. if !j.xrayService.IsXrayRunning() {
  16. return
  17. }
  18. traffics, clientTraffics, err := j.xrayService.GetXrayTraffic()
  19. if err != nil {
  20. logger.Warning("get xray traffic failed:", err)
  21. return
  22. }
  23. err, needRestart0 := j.inboundService.AddTraffic(traffics, clientTraffics)
  24. if err != nil {
  25. logger.Warning("add inbound traffic failed:", err)
  26. }
  27. err, needRestart1 := j.outboundService.AddTraffic(traffics, clientTraffics)
  28. if err != nil {
  29. logger.Warning("add outbound traffic failed:", err)
  30. }
  31. if needRestart0 || needRestart1 {
  32. j.xrayService.SetToNeedRestart()
  33. }
  34. }