|
@@ -3,6 +3,7 @@ package cachefile
|
|
|
import (
|
|
|
"net/netip"
|
|
|
"os"
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/sagernet/sing-box/adapter"
|
|
|
"github.com/sagernet/sing/common/logger"
|
|
@@ -57,6 +58,15 @@ func (c *CacheFile) FakeIPSaveMetadata(metadata *adapter.FakeIPMetadata) error {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+func (c *CacheFile) FakeIPSaveMetadataAsync(metadata *adapter.FakeIPMetadata) {
|
|
|
+ if timer := c.saveMetadataTimer; timer != nil {
|
|
|
+ timer.Stop()
|
|
|
+ }
|
|
|
+ c.saveMetadataTimer = time.AfterFunc(10*time.Second, func() {
|
|
|
+ _ = c.FakeIPSaveMetadata(metadata)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
func (c *CacheFile) FakeIPStore(address netip.Addr, domain string) error {
|
|
|
return c.DB.Batch(func(tx *bbolt.Tx) error {
|
|
|
bucket, err := tx.CreateBucketIfNotExists(bucketFakeIP)
|