From 9cf48277689ac5614face261ffcc11fe21742d1f Mon Sep 17 00:00:00 2001 From: MathieuHa Date: Mon, 3 Oct 2022 00:37:41 +0200 Subject: [PATCH] Add Wait Stream feature --- Makefile | 9 +++++++++ bouncer.go | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/Makefile b/Makefile index 36b9793..c9b88b6 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,15 @@ run_local: run: docker-compose -f docker-compose.yml up -d --remove-orphans +restart_docker_dev: + docker-compose -f docker-compose.dev.yml restart + +restart_docker_local: + docker-compose -f docker-compose.local.yml restart + +restart_docker: + docker-compose -f docker-compose.yml restart + show_metrics: docker exec crowdsec cscli metrics diff --git a/bouncer.go b/bouncer.go index 9d44f12..aad9711 100644 --- a/bouncer.go +++ b/bouncer.go @@ -8,6 +8,7 @@ import ( "io" "io/ioutil" "log" + "math/rand" "net" "net/http" "net/url" @@ -117,6 +118,7 @@ func New(ctx context.Context, next http.Handler, config *Config, name string) (h cache: ttl_map.New(), } if config.CrowdsecMode == streamMode || config.CrowdsecMode == aloneMode { + rand.Seed(time.Now().UnixNano()) if config.CrowdsecMode == aloneMode { getToken(bouncer) } @@ -271,9 +273,20 @@ func handleNoStreamCache(a *Bouncer, rw http.ResponseWriter, req *http.Request, setDecision(a, remoteHost, true, int64(duration.Seconds())) } +func wait_stream() { + logger("Start Wait Stream") + sec := rand.Int63n(30) + logger(fmt.Sprintf("Sec=%v", sec)) + time.Sleep(time.Duration(sec) * time.Second) + logger("End Wait Stream") +} + func handleStreamCache(a *Bouncer) { logger(fmt.Sprintf("Start handleStreamCache with health=%v", a.crowdsecStreamHealthy)) // TODO clean properly on exit. + + wait_stream() + // wait random number of sec var rawQuery string var path string if a.crowdsecMode == aloneMode { @@ -307,6 +320,7 @@ func handleStreamCache(a *Bouncer) { a.cache.Del(decision.Value) } a.crowdsecStreamHealthy = true + logger(fmt.Sprintf("End handleStreamCache with health=%v", a.crowdsecStreamHealthy)) } func getToken(a *Bouncer) {