diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-02-12 00:21:09 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-02-12 00:21:09 +0300 |
| commit | e5c0fe3edf3bc8ee44c13503cc39d4caba735ae9 (patch) | |
| tree | 87d72b513ebf0a34774b95e11d0598047c71fa95 /web/service/inbound.go | |
| parent | f4057989f520daaef30b9d1cc0b0b0f12dbd7edc (diff) | |
bug fix #3785
Diffstat (limited to 'web/service/inbound.go')
| -rw-r--r-- | web/service/inbound.go | 37 |
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 } |
