/
config.go
50 lines (45 loc) · 834 Bytes
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
"code.google.com/p/gcfg"
"io/ioutil"
)
type Config struct {
Backend map[string]*struct {
URI []string
Index string
Workers int
Bulk int
Queue string
Limit int
}
General struct {
Primary string
Backup string
Geoip2db string
TailFile string
Buffer int
}
}
var defaultConfig = `
[backend "es"]
index="ulog2queue-2006.01.02"
bulk=5000
workers=1
[general]
geoip2db="/usr/share/ulog2queue/GeoLite2-City.mmdb"
tailfile="/var/log/ulogd.json"
buffer=10000
`
func NewConfig(cfgfile string) *Config {
var cfg Config
gcfg.ReadStringInto(&cfg, defaultConfig)
content, err := ioutil.ReadFile(cfgfile)
if err != nil {
log.Fatal(err)
}
err = gcfg.ReadStringInto(&cfg, string(content))
if err != nil {
log.Fatal("Failed to parse "+cfgfile+":", err)
}
return &cfg
}