From af41af2ceeab0c89d0fb4806cb6d99fc002d9be8 Mon Sep 17 00:00:00 2001 From: Max Lerebourg Date: Tue, 27 Sep 2022 18:12:25 +0200 Subject: [PATCH] first commit --- .assets/icon.png | Bin 0 -> 24497 bytes .github/workflows/go-cross.yml | 47 ++++++++ .github/workflows/main.yml | 72 ++++++++++++ .gitignore | 2 + .golangci.yml | 66 +++++++++++ .traefik.yml | 12 ++ LICENSE | 202 +++++++++++++++++++++++++++++++++ Makefile | 20 ++++ bouncer.go | 86 ++++++++++++++ bouncer_test.go | 49 ++++++++ config.go | 88 ++++++++++++++ go.mod | 3 + 12 files changed, 647 insertions(+) create mode 100644 .assets/icon.png create mode 100644 .github/workflows/go-cross.yml create mode 100644 .github/workflows/main.yml create mode 100644 .gitignore create mode 100644 .golangci.yml create mode 100644 .traefik.yml create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 bouncer.go create mode 100644 bouncer_test.go create mode 100644 config.go create mode 100644 go.mod diff --git a/.assets/icon.png b/.assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3770b0f9830a8557e845264352ae17126f172d GIT binary patch literal 24497 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 599 { + log.Fatalf("The value for env var %s should be a valid http response code between 100 and 599 included.", "CROWDSEC_BOUNCER_BAN_RESPONSE_CODE") + } + cacheMode := OptionalEnv("CROWDSEC_BOUNCER_CACHE_MODE", "none") + if !contains([]string{"none", "live", "stream"}, cacheMode) { + log.Fatalf("Cache mode must be one of 'none', 'stream' or 'live'") + } + cacheStreamInterval := OptionalEnv("CROWDSEC_BOUNCER_CACHE_STREAM_INTERVAL", "1m") + duration, err := time.ParseDuration(cacheStreamInterval) + if err != nil && duration.Seconds() < 3600 { + log.Fatalf("Cache stream interval provided is not valid") + } + defaultCacheDuration := OptionalEnv("CROWDSEC_DEFAULT_CACHE_DURATION", "5m") + duration2, err := time.ParseDuration(defaultCacheDuration) + if err != nil && duration2.Seconds() < 3600 { + log.Fatalf("Cache default duration provided is not valid") + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..b57b129 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin + +go 1.17