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:
authorMHSanaei <ho3ein.sanaei@gmail.com>2026-02-12 00:21:09 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2026-02-12 00:21:09 +0300
commite5c0fe3edf3bc8ee44c13503cc39d4caba735ae9 (patch)
tree87d72b513ebf0a34774b95e11d0598047c71fa95 /web/service/inbound.go
parentf4057989f520daaef30b9d1cc0b0b0f12dbd7edc (diff)
bug fix #3785
Diffstat (limited to 'web/service/inbound.go')
-rw-r--r--web/service/inbound.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/web/service/inbound.go b/web/service/inbound.go
index 469fa561..ec51bc27 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -2141,6 +2141,43 @@ func (s *InboundService) GetInboundClientIps(clientEmail string) (string, error)
if err != nil {
return "", err
}
+
+ if InboundClientIps.Ips == "" {
+ return "", nil
+ }
+
+ // Try to parse as new format (with timestamps)
+ type IPWithTimestamp struct {
+ IP string `json:"ip"`
+ Timestamp int64 `json:"timestamp"`
+ }
+
+ var ipsWithTime []IPWithTimestamp
+ err = json.Unmarshal([]byte(InboundClientIps.Ips), &ipsWithTime)
+
+ // If successfully parsed as new format, return with timestamps
+ if err == nil && len(ipsWithTime) > 0 {
+ return InboundClientIps.Ips, nil
+ }
+
+ // Otherwise, assume it's old format (simple string array)
+ // Try to parse as simple array and convert to new format
+ var oldIps []string
+ err = json.Unmarshal([]byte(InboundClientIps.Ips), &oldIps)
+ if err == nil && len(oldIps) > 0 {
+ // Convert old format to new format with current timestamp
+ newIpsWithTime := make([]IPWithTimestamp, len(oldIps))
+ for i, ip := range oldIps {
+ newIpsWithTime[i] = IPWithTimestamp{
+ IP: ip,
+ Timestamp: time.Now().Unix(),
+ }
+ }
+ result, _ := json.Marshal(newIpsWithTime)
+ return string(result), nil
+ }
+
+ // Return as-is if parsing fails
return InboundClientIps.Ips, nil
}