This commit is contained in:
12
compose.yml
12
compose.yml
@@ -23,7 +23,17 @@ services:
|
|||||||
container_name: ipblock-redis
|
container_name: ipblock-redis
|
||||||
networks:
|
networks:
|
||||||
- flod_nw
|
- 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:
|
volumes:
|
||||||
- redis-data:/data # falls du doch Persistence willst
|
- redis-data:/data # falls du doch Persistence willst
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
16
main.go
16
main.go
@@ -180,6 +180,18 @@ func syncOnce(ctx context.Context, cfg Config, rdb *redis.Client, ranger *Ranger
|
|||||||
return nil
|
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 {
|
func processURL(ctx context.Context, url string, cb func(netip.Prefix)) error {
|
||||||
fmt.Println("Process URL:", url)
|
fmt.Println("Process URL:", url)
|
||||||
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
||||||
@@ -309,6 +321,10 @@ func main() {
|
|||||||
log.Println("initial sync:", err)
|
log.Println("initial sync:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := loadWhites(ctx, rdb, ranger); err != nil {
|
||||||
|
log.Println("loadWhites:", err)
|
||||||
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
ticker := time.NewTicker(2 * time.Hour)
|
ticker := time.NewTicker(2 * time.Hour)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
Reference in New Issue
Block a user