github.com/igoogolx/clash@v1.19.8/component/fakeip/cachefile.go (about) 1 package fakeip 2 3 import ( 4 "net" 5 6 "github.com/igoogolx/clash/component/profile/cachefile" 7 ) 8 9 type cachefileStore struct { 10 cache *cachefile.CacheFile 11 } 12 13 // GetByHost implements store.GetByHost 14 func (c *cachefileStore) GetByHost(host string) (net.IP, bool) { 15 elm := c.cache.GetFakeip([]byte(host)) 16 if elm == nil { 17 return nil, false 18 } 19 return net.IP(elm), true 20 } 21 22 // PutByHost implements store.PutByHost 23 func (c *cachefileStore) PutByHost(host string, ip net.IP) { 24 c.cache.PutFakeip([]byte(host), ip) 25 } 26 27 // GetByIP implements store.GetByIP 28 func (c *cachefileStore) GetByIP(ip net.IP) (string, bool) { 29 elm := c.cache.GetFakeip(ip.To4()) 30 if elm == nil { 31 return "", false 32 } 33 return string(elm), true 34 } 35 36 // PutByIP implements store.PutByIP 37 func (c *cachefileStore) PutByIP(ip net.IP, host string) { 38 c.cache.PutFakeip(ip.To4(), []byte(host)) 39 } 40 41 // DelByIP implements store.DelByIP 42 func (c *cachefileStore) DelByIP(ip net.IP) { 43 ip = ip.To4() 44 c.cache.DelFakeipPair(ip, c.cache.GetFakeip(ip.To4())) 45 } 46 47 // Exist implements store.Exist 48 func (c *cachefileStore) Exist(ip net.IP) bool { 49 _, exist := c.GetByIP(ip) 50 return exist 51 } 52 53 // CloneTo implements store.CloneTo 54 // already persistence 55 func (c *cachefileStore) CloneTo(store store) {}