File tree Expand file tree Collapse file tree 3 files changed +60
-0
lines changed Expand file tree Collapse file tree 3 files changed +60
-0
lines changed Original file line number Diff line number Diff line change 1
1
module github.com/kauefraga/anubis
2
2
3
3
go 1.22.5
4
+
5
+ require github.com/pelletier/go-toml/v2 v2.2.2
Original file line number Diff line number Diff line change
1
+ github.com/davecgh/go-spew v1.1.0 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
2
+ github.com/davecgh/go-spew v1.1.1 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
3
+ github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM =
4
+ github.com/pelletier/go-toml/v2 v2.2.2 /go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs =
5
+ github.com/pmezard/go-difflib v1.0.0 /go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4 =
6
+ github.com/stretchr/objx v0.1.0 /go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME =
7
+ github.com/stretchr/objx v0.4.0 /go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw =
8
+ github.com/stretchr/objx v0.5.0 /go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo =
9
+ github.com/stretchr/objx v0.5.2 /go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA =
10
+ github.com/stretchr/testify v1.7.1 /go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg =
11
+ github.com/stretchr/testify v1.8.0 /go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU =
12
+ github.com/stretchr/testify v1.8.4 /go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo =
13
+ github.com/stretchr/testify v1.9.0 /go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY =
14
+ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 /go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0 =
15
+ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
16
+ gopkg.in/yaml.v3 v3.0.1 /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
Original file line number Diff line number Diff line change
1
+ package config
2
+
3
+ import (
4
+ "log"
5
+ "os"
6
+
7
+ "github.com/pelletier/go-toml/v2"
8
+ )
9
+
10
+ type Config struct {
11
+ Version int
12
+ Port uint16
13
+ Algorithm string
14
+ Servers []string
15
+ }
16
+
17
+ func Read () Config {
18
+ doc , err := os .ReadFile ("anubis.toml" )
19
+ if err != nil {
20
+ log .Fatalln ("Error:" , err )
21
+ }
22
+
23
+ var cfg Config
24
+ err = toml .Unmarshal ([]byte (doc ), & cfg )
25
+ if err != nil {
26
+ log .Fatalln ("Error:" , err )
27
+ }
28
+
29
+ if cfg .Version != 1 {
30
+ log .Fatalln ("Error: this Anubis version does not exist" )
31
+ }
32
+
33
+ if len (cfg .Servers ) == 0 {
34
+ log .Fatalln ("Error: there are no servers in the anubis.toml" )
35
+ }
36
+
37
+ if cfg .Algorithm != "round-robin" && cfg .Algorithm != "least-connection" && cfg .Algorithm != "weighted-response-time" {
38
+ log .Fatalln ("Error: this algorithm is not implemented" )
39
+ }
40
+
41
+ return cfg
42
+ }
You can’t perform that action at this time.
0 commit comments