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
diff options
context:
space:
mode:
authorAlireza Ahmadi <alireza7@gmail.com>2025-09-15 00:08:09 +0300
committerAlireza Ahmadi <alireza7@gmail.com>2025-09-15 00:08:09 +0300
commitbc0518391ef06d3d6b9f826085b73d1f1e35c913 (patch)
treee4a98ec1bcdf10b7d557b0626abb6fa2ec5bf59d /sub/subService.go
parent5408a2f82c3723d465345b216227548996a1f24f (diff)
sub template enhancements
Diffstat (limited to 'sub/subService.go')
-rw-r--r--sub/subService.go62
1 files changed, 15 insertions, 47 deletions
diff --git a/sub/subService.go b/sub/subService.go
index a47cb6be..ffad23a2 100644
--- a/sub/subService.go
+++ b/sub/subService.go
@@ -37,20 +37,19 @@ func NewSubService(showInfo bool, remarkModel string) *SubService {
}
}
-func (s *SubService) GetSubs(subId string, host string) ([]string, string, int64, error) {
+func (s *SubService) GetSubs(subId string, host string) ([]string, int64, xray.ClientTraffic, error) {
s.address = host
var result []string
- var header string
var traffic xray.ClientTraffic
var lastOnline int64
var clientTraffics []xray.ClientTraffic
inbounds, err := s.getInboundsBySubId(subId)
if err != nil {
- return nil, "", 0, err
+ return nil, 0, traffic, err
}
if len(inbounds) == 0 {
- return nil, "", 0, common.NewError("No inbounds found with ", subId)
+ return nil, 0, traffic, common.NewError("No inbounds found with ", subId)
}
s.datepicker, err = s.settingService.GetDatepicker()
@@ -108,8 +107,7 @@ func (s *SubService) GetSubs(subId string, host string) ([]string, string, int64
}
}
}
- header = fmt.Sprintf("upload=%d; download=%d; total=%d; expire=%d", traffic.Up, traffic.Down, traffic.Total, traffic.ExpiryTime/1000)
- return result, header, lastOnline, nil
+ return result, lastOnline, traffic, nil
}
func (s *SubService) getInboundsBySubId(subId string) ([]*model.Inbound, error) {
@@ -1090,45 +1088,15 @@ func (s *SubService) BuildURLs(scheme, hostWithPort, subPath, subJsonPath, subId
}
// BuildPageData parses header and prepares the template view model.
-func (s *SubService) BuildPageData(subId, hostHeader, header string, lastOnline int64, subs []string, subURL, subJsonURL string) PageData {
- // Parse header values
- var uploadByte, downloadByte, totalByte, expire int64
- parts := strings.Split(header, ";")
- for _, p := range parts {
- kv := strings.Split(strings.TrimSpace(p), "=")
- if len(kv) != 2 {
- continue
- }
- key := strings.ToLower(strings.TrimSpace(kv[0]))
- val := strings.TrimSpace(kv[1])
- switch key {
- case "upload":
- if v, err := parseInt64(val); err == nil {
- uploadByte = v
- }
- case "download":
- if v, err := parseInt64(val); err == nil {
- downloadByte = v
- }
- case "total":
- if v, err := parseInt64(val); err == nil {
- totalByte = v
- }
- case "expire":
- if v, err := parseInt64(val); err == nil {
- expire = v
- }
- }
- }
-
- download := common.FormatTraffic(downloadByte)
- upload := common.FormatTraffic(uploadByte)
+func (s *SubService) BuildPageData(subId string, hostHeader string, traffic xray.ClientTraffic, lastOnline int64, subs []string, subURL, subJsonURL string) PageData {
+ download := common.FormatTraffic(traffic.Down)
+ upload := common.FormatTraffic(traffic.Up)
total := "∞"
- used := common.FormatTraffic(uploadByte + downloadByte)
+ used := common.FormatTraffic(traffic.Up + traffic.Down)
remained := ""
- if totalByte > 0 {
- total = common.FormatTraffic(totalByte)
- left := totalByte - (uploadByte + downloadByte)
+ if traffic.Total > 0 {
+ total = common.FormatTraffic(traffic.Total)
+ left := traffic.Total - (traffic.Up + traffic.Down)
if left < 0 {
left = 0
}
@@ -1149,12 +1117,12 @@ func (s *SubService) BuildPageData(subId, hostHeader, header string, lastOnline
Total: total,
Used: used,
Remained: remained,
- Expire: expire,
+ Expire: traffic.ExpiryTime / 1000,
LastOnline: lastOnline,
Datepicker: datepicker,
- DownloadByte: downloadByte,
- UploadByte: uploadByte,
- TotalByte: totalByte,
+ DownloadByte: traffic.Down,
+ UploadByte: traffic.Up,
+ TotalByte: traffic.Total,
SubUrl: subURL,
SubJsonUrl: subJsonURL,
Result: subs,