diff options
Diffstat (limited to 'web/job')
| -rw-r--r-- | web/job/xray_traffic_job.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/web/job/xray_traffic_job.go b/web/job/xray_traffic_job.go index dbbbb059..12c64092 100644 --- a/web/job/xray_traffic_job.go +++ b/web/job/xray_traffic_job.go @@ -1,11 +1,16 @@ package job import ( + "encoding/json" "x-ui/logger" "x-ui/web/service" + "x-ui/xray" + + "github.com/valyala/fasthttp" ) type XrayTrafficJob struct { + settingService service.SettingService xrayService service.XrayService inboundService service.InboundService outboundService service.OutboundService @@ -31,7 +36,36 @@ func (j *XrayTrafficJob) Run() { if err != nil { logger.Warning("add outbound traffic failed:", err) } + if ExternalTrafficInformEnable, err := j.settingService.GetExternalTrafficInformEnable(); ExternalTrafficInformEnable { + j.informTrafficToExternalAPI(traffics, clientTraffics) + } else if err != nil { + logger.Warning("get ExternalTrafficInformEnable failed:", err) + } if needRestart0 || needRestart1 { j.xrayService.SetToNeedRestart() } } + +func (j *XrayTrafficJob) informTrafficToExternalAPI(inboundTraffics []*xray.Traffic, clientTraffics []*xray.ClientTraffic) { + informURL, err := j.settingService.GetExternalTrafficInformURI() + if err != nil { + logger.Warning("get ExternalTrafficInformURI failed:", err) + return + } + requestBody, err := json.Marshal(map[string]interface{}{"clientTraffics": clientTraffics, "inboundTraffics": inboundTraffics}) + if err != nil { + logger.Warning("parse client/inbound traffic failed:", err) + return + } + request := fasthttp.AcquireRequest() + defer fasthttp.ReleaseRequest(request) + request.Header.SetMethod("POST") + request.Header.SetContentType("application/json; charset=UTF-8") + request.SetBody([]byte(requestBody)) + request.SetRequestURI(informURL) + response := fasthttp.AcquireResponse() + defer fasthttp.ReleaseResponse(response) + if err := fasthttp.Do(request, response); err != nil { + logger.Warning("POST ExternalTrafficInformURI failed:", err) + } +} |
