First version not working, unsafe library

This commit is contained in:
MathieuHa
2022-10-16 23:08:21 +02:00
parent 59268ee33d
commit 395c80dccf
4 changed files with 50 additions and 2 deletions
+32 -2
View File
@@ -1,17 +1,20 @@
package cache
import (
"context"
"fmt"
ttl_map "github.com/leprosus/golang-ttl-map"
logger "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin/pkg/logger"
)
const (
cacheBannedValue = "t"
cacheNoBannedValue = "f"
cacheBannedValue = "t"
cacheNoBannedValue = "f"
)
var ctx = context.Background()
var cache = ttl_map.New()
// Get Decision check in the cache if the IP has the banned / not banned value.
@@ -25,6 +28,33 @@ func GetDecision(clientIP string) (bool, error) {
return false, fmt.Errorf("no cache data")
}
func getDecisionLocalCache(clientIP string) (bool, error) {
banned, isCached := cache.Get(clientIP)
bannedString, isValid := banned.(string)
if isCached && isValid && len(bannedString) > 0 {
return bannedString == cacheBannedValue, nil
}
return false, fmt.Errorf("no cache data")
}
func getDecisionRedisCache(clientIP string) (bool, error) {
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
banned, err := rdb.Get(ctx, "key").Result()
if err != nil {
panic(err)
}
banned, isCached := cache.Get(clientIP)
bannedString, isValid := banned.(string)
if isCached && isValid && len(bannedString) > 0 {
return bannedString == cacheBannedValue, nil
}
return false, fmt.Errorf("no cache data")
}
func SetDecision(clientIP string, isBanned bool, duration int64) {
if isBanned {
logger.Debug(fmt.Sprintf("%v banned", clientIP))