|
|
@@ -40,13 +40,13 @@ func (c *OnlineMap) AddIP(ip string) {
|
|
|
if ip == "127.0.0.1" {
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
c.access.Lock()
|
|
|
- if _, ok := c.ipList[ip]; !ok {
|
|
|
- c.ipList[ip] = time.Now()
|
|
|
- }
|
|
|
+ c.ipList[ip] = time.Now()
|
|
|
c.access.Unlock()
|
|
|
+
|
|
|
if time.Since(c.lastCleanup) > c.cleanupPeriod {
|
|
|
- c.RemoveExpiredIPs(c.ipList)
|
|
|
+ c.RemoveExpiredIPs()
|
|
|
c.lastCleanup = time.Now()
|
|
|
}
|
|
|
}
|
|
|
@@ -62,23 +62,22 @@ func (c *OnlineMap) GetKeys() []string {
|
|
|
return keys
|
|
|
}
|
|
|
|
|
|
-func (c *OnlineMap) RemoveExpiredIPs(list map[string]time.Time) map[string]time.Time {
|
|
|
+func (c *OnlineMap) RemoveExpiredIPs() {
|
|
|
c.access.Lock()
|
|
|
defer c.access.Unlock()
|
|
|
|
|
|
now := time.Now()
|
|
|
- for k, t := range list {
|
|
|
+ for k, t := range c.ipList {
|
|
|
diff := now.Sub(t)
|
|
|
if diff.Seconds() > 20 {
|
|
|
- delete(list, k)
|
|
|
+ delete(c.ipList, k)
|
|
|
}
|
|
|
}
|
|
|
- return list
|
|
|
}
|
|
|
|
|
|
func (c *OnlineMap) IpTimeMap() map[string]time.Time {
|
|
|
if time.Since(c.lastCleanup) > c.cleanupPeriod {
|
|
|
- c.RemoveExpiredIPs(c.ipList)
|
|
|
+ c.RemoveExpiredIPs()
|
|
|
c.lastCleanup = time.Now()
|
|
|
}
|
|
|
|