-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathconfig.go
111 lines (93 loc) · 3.39 KB
/
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package main
import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
)
var (
logLevel string
crowdsecBouncerAPIKey string
crowdsecBouncerURL string
crowdsecOrigins []string
crowdsecUpdateInterval string
unifiHost string
unifiSite string
unifiAPIKey string
unifiUsername string
unifiPassword string
useIPV6 bool
maxGroupSize int
ipv4StartRuleIndex int
ipv6StartRuleIndex int
skipTLSVerify bool
unifiLogging bool
unifiZoneSrc []string
unifiZoneDst []string
)
func initConfig() {
viper.BindEnv("log_level")
viper.SetDefault("log_level", "1")
viper.BindEnv("crowdsec_bouncer_api_key")
viper.BindEnv("crowdsec_url")
viper.SetDefault("crowdsec_url", "http://crowdsec:8080/")
viper.BindEnv("crowdsec_update_interval")
viper.SetDefault("crowdsec_update_interval", "5s")
viper.BindEnv("crowdsec_origins")
viper.SetDefault("crowdsec_origins", nil)
viper.BindEnv("unifi_host")
viper.BindEnv("unifi_api_key")
viper.BindEnv("unifi_user")
viper.BindEnv("unifi_pass")
viper.BindEnv("unifi_site")
viper.SetDefault("unifi_site", "default")
viper.BindEnv("unifi_ipv6")
viper.SetDefault("unifi_ipv6", "true")
viper.BindEnv("unifi_max_group_size")
viper.SetDefault("unifi_max_group_size", 10000)
viper.BindEnv("unifi_ipv4_start_rule_index")
viper.SetDefault("unifi_ipv4_start_rule_index", 22000)
viper.BindEnv("unifi_ipv6_start_rule_index")
viper.SetDefault("unifi_ipv6_start_rule_index", 27000)
viper.BindEnv("unifi_max_group_size")
viper.SetDefault("unifi_max_group_size", 10000)
viper.BindEnv("unifi_skip_tls_verify")
viper.SetDefault("unifi_skip_tls_verify", "false")
viper.BindEnv("unifi_logging")
viper.SetDefault("unifi_logging", "false")
viper.BindEnv("unifi_zone_src")
viper.SetDefault("unifi_zone_src", "External")
viper.BindEnv("unifi_zone_dst")
viper.SetDefault("unifi_zone_dst", "External Internal Vpn Hotspot")
logLevel = viper.GetString("log_level")
level, err := zerolog.ParseLevel(logLevel)
if err != nil {
log.Fatal().Err(err).Msg("invalid log level")
}
zerolog.SetGlobalLevel(level)
crowdsecBouncerAPIKey = viper.GetString("crowdsec_bouncer_api_key")
if crowdsecBouncerAPIKey == "" {
log.Fatal().Msg("Crowdsec API key is not set")
}
crowdsecBouncerURL = viper.GetString("crowdsec_url")
if crowdsecBouncerURL == "" {
log.Fatal().Msg("Crowdsec URL is not set")
}
crowdsecOrigins = viper.GetStringSlice("crowdsec_origins")
crowdsecUpdateInterval = viper.GetString("crowdsec_update_interval")
unifiHost = viper.GetString("unifi_host")
unifiAPIKey = viper.GetString("unifi_api_key")
unifiUsername = viper.GetString("unifi_user")
unifiPassword = viper.GetString("unifi_pass")
if (unifiAPIKey == "" && (unifiUsername == "" || unifiPassword == "")) {
log.Fatal().Msg("Unifi API key or username/password is not set")
}
unifiSite = viper.GetString("unifi_site")
useIPV6 = viper.GetBool("unifi_ipv6")
maxGroupSize = viper.GetInt("unifi_max_group_size")
ipv4StartRuleIndex = viper.GetInt("unifi_ipv4_start_rule_index")
ipv6StartRuleIndex = viper.GetInt("unifi_ipv6_start_rule_index")
skipTLSVerify = viper.GetBool("unifi_skip_tls_verify")
unifiLogging = viper.GetBool("unifi_logging")
unifiZoneSrc = viper.GetStringSlice("unifi_zone_src")
unifiZoneDst = viper.GetStringSlice("unifi_zone_dst")
}