lib: move config to yaml (#307)
* lib: move config to yaml Signed-off-by: Xe Iaso <me@xeiaso.net> * web: run go generate Signed-off-by: Xe Iaso <me@xeiaso.net> * Add Haiku to known instances (#304) Signed-off-by: Asmodeus <46908100+AsmodeumX@users.noreply.github.com> * Add headers bot rule (#300) * Closes #291: add headers support to bot policy rules * Fix config validator * update docs for JSON -> YAML Signed-off-by: Xe Iaso <me@xeiaso.net> * docs: document http header based actions Signed-off-by: Xe Iaso <me@xeiaso.net> * lib: add missing test Signed-off-by: Xe Iaso <me@xeiaso.net> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Xe Iaso <me@xeiaso.net> --------- Signed-off-by: Xe Iaso <me@xeiaso.net> Signed-off-by: Asmodeus <46908100+AsmodeumX@users.noreply.github.com> Co-authored-by: Asmodeus <46908100+AsmodeumX@users.noreply.github.com> Co-authored-by: Neur0toxine <pashok9825@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
022eb59ff3
commit
d40b5cfdab
22 changed files with 854 additions and 19 deletions
|
|
@ -1,11 +1,12 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"k8s.io/apimachinery/pkg/util/yaml"
|
||||
)
|
||||
|
||||
func p[V any](v V) *V { return &v }
|
||||
|
|
@ -219,7 +220,7 @@ func TestConfigValidKnownGood(t *testing.T) {
|
|||
defer fin.Close()
|
||||
|
||||
var c Config
|
||||
if err := json.NewDecoder(fin).Decode(&c); err != nil {
|
||||
if err := yaml.NewYAMLToJSONDecoder(fin).Decode(&c); err != nil {
|
||||
t.Fatalf("can't decode file: %v", err)
|
||||
}
|
||||
|
||||
|
|
@ -246,7 +247,7 @@ func TestConfigValidBad(t *testing.T) {
|
|||
defer fin.Close()
|
||||
|
||||
var c Config
|
||||
if err := json.NewDecoder(fin).Decode(&c); err != nil {
|
||||
if err := yaml.NewYAMLToJSONDecoder(fin).Decode(&c); err != nil {
|
||||
t.Fatalf("can't decode file: %v", err)
|
||||
}
|
||||
|
||||
|
|
|
|||
7
lib/policy/config/testdata/bad/badregexes.yaml
vendored
Normal file
7
lib/policy/config/testdata/bad/badregexes.yaml
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
bots:
|
||||
- name: path-bad
|
||||
path_regex: "a(b"
|
||||
action: DENY
|
||||
- name: user-agent-bad
|
||||
user_agent_regex: "a(b"
|
||||
action: DENY
|
||||
1
lib/policy/config/testdata/bad/invalid.yaml
vendored
Normal file
1
lib/policy/config/testdata/bad/invalid.yaml
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
bots: []
|
||||
1
lib/policy/config/testdata/bad/nobots.yaml
vendored
Normal file
1
lib/policy/config/testdata/bad/nobots.yaml
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
6
lib/policy/config/testdata/good/allow_everyone.yaml
vendored
Normal file
6
lib/policy/config/testdata/good/allow_everyone.yaml
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
bots:
|
||||
- name: everyones-invited
|
||||
remote_addresses:
|
||||
- "0.0.0.0/0"
|
||||
- "::/0"
|
||||
action: ALLOW
|
||||
5
lib/policy/config/testdata/good/block_cf_workers.yaml
vendored
Normal file
5
lib/policy/config/testdata/good/block_cf_workers.yaml
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
bots:
|
||||
- name: cloudflare-workers
|
||||
headers_regex:
|
||||
CF-Worker: .*
|
||||
action: DENY
|
||||
4
lib/policy/config/testdata/good/challengemozilla.yaml
vendored
Normal file
4
lib/policy/config/testdata/good/challengemozilla.yaml
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
bots:
|
||||
- name: generic-browser
|
||||
user_agent_regex: Mozilla
|
||||
action: CHALLENGE
|
||||
4
lib/policy/config/testdata/good/everything_blocked.yaml
vendored
Normal file
4
lib/policy/config/testdata/good/everything_blocked.yaml
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
bots:
|
||||
- name: everything
|
||||
user_agent_regex: .*
|
||||
action: DENY
|
||||
Loading…
Add table
Add a link
Reference in a new issue