Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web/job
diff options
context:
space:
mode:
authorAAA <theakhgar@gmail.com>2025-02-22 12:45:14 +0300
committerGitHub <noreply@github.com>2025-02-22 12:45:14 +0300
commit1bbf31df9f61d92c5343e7867567171b6655c4de (patch)
tree02d4b2c02a94a146e53d90e38e052df99dd4052c /web/job
parent49bfff9fa5a6acb50c8f51710a3e4005daf0ca32 (diff)
feat(externalTrafficJob): External Traffic Inform (#2660)
* Add Setting entity + GUI field in panel settings * Add a missing 'Traffic' in InformEnabale field * Add ExternalTrafficURL Post request call * Add translation + cleanup * Move options to General tab --------- Co-authored-by: root <root@vm3562019.stark-industries.solutions> Co-authored-by: root <root@vm3688062.stark-industries.solutions>
Diffstat (limited to 'web/job')
-rw-r--r--web/job/xray_traffic_job.go34
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)
+ }
+}