From 817d997263e7d53293424c83b54861352100fd0b Mon Sep 17 00:00:00 2001 From: jbergner Date: Mon, 9 Jun 2025 23:17:39 +0200 Subject: [PATCH] vor Instanzumbau --- compose.yml | 12 +++++++++++- main.go | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/compose.yml b/compose.yml index 17ee612..13bea24 100644 --- a/compose.yml +++ b/compose.yml @@ -23,7 +23,17 @@ services: container_name: ipblock-redis networks: - flod_nw - command: ["redis-server", "--save", "", "--appendonly", "no"] # reine In-Memory-Instanz + command: + - redis-server + - --bind + - 0.0.0.0 + - --protected-mode + - "no" # nur nötig, wenn Port 6379 veröffentlicht wird + - --save # leere save-Liste = kein RDB-Snapshot + - "/data/dump.rdb" # ^^^ + - --appendonly + - "no" + volumes: - redis-data:/data # falls du doch Persistence willst restart: unless-stopped diff --git a/main.go b/main.go index 258e202..b075e38 100644 --- a/main.go +++ b/main.go @@ -180,6 +180,18 @@ func syncOnce(ctx context.Context, cfg Config, rdb *redis.Client, ranger *Ranger return nil } +func loadWhites(ctx context.Context, rdb *redis.Client, ranger *Ranger) error { + iter := rdb.Scan(ctx, 0, "wl:*", 0).Iterator() + for iter.Next(ctx) { + key := iter.Val() // "wl:1.2.3.4" + ipStr := strings.TrimPrefix(key, "wl:") + if ip, err := netip.ParseAddr(ipStr); err == nil { + ranger.addWhite(ip) + } + } + return iter.Err() +} + func processURL(ctx context.Context, url string, cb func(netip.Prefix)) error { fmt.Println("Process URL:", url) req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) @@ -309,6 +321,10 @@ func main() { log.Println("initial sync:", err) } + if err := loadWhites(ctx, rdb, ranger); err != nil { + log.Println("loadWhites:", err) + } + go func() { ticker := time.NewTicker(2 * time.Hour) defer ticker.Stop()