Skip to content

Commit bf78d97

Browse files
committed
Fix crashing on missing config sections
1 parent de74f5a commit bf78d97

File tree

1 file changed

+62
-51
lines changed

1 file changed

+62
-51
lines changed

config/config.go

Lines changed: 62 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -107,21 +107,29 @@ func (c *Config) Load() *Config {
107107
},
108108
}
109109

110-
err := viper.Sub("mqtt").Unmarshal(&myConfig.Mqtt)
111-
if err != nil {
112-
panic(fmt.Errorf("unable to decode mqtt config, %v", err))
110+
if viper.IsSet("mqtt") {
111+
err := viper.Sub("mqtt").Unmarshal(&myConfig.Mqtt)
112+
if err != nil {
113+
panic(fmt.Errorf("unable to decode mqtt config, %v", err))
114+
}
113115
}
114-
err = viper.Sub("webhooks").Unmarshal(&myConfig.Webhooks)
115-
if err != nil {
116-
panic(fmt.Errorf("unable to decode webhooks config, %v", err))
116+
if viper.IsSet("webhooks") {
117+
err := viper.Sub("webhooks").Unmarshal(&myConfig.Webhooks)
118+
if err != nil {
119+
panic(fmt.Errorf("unable to decode webhooks config, %v", err))
120+
}
117121
}
118-
err = viper.Sub("hisilicon").Unmarshal(&myConfig.Hisilicon)
119-
if err != nil {
120-
panic(fmt.Errorf("unable to decode hisilicon config, %v", err))
122+
if viper.IsSet("hisilicon") {
123+
err := viper.Sub("hisilicon").Unmarshal(&myConfig.Hisilicon)
124+
if err != nil {
125+
panic(fmt.Errorf("unable to decode hisilicon config, %v", err))
126+
}
121127
}
122-
err = viper.Sub("ftp").Unmarshal(&myConfig.Ftp)
123-
if err != nil {
124-
panic(fmt.Errorf("unable to decode FTP config, %v", err))
128+
if viper.IsSet("ftp") {
129+
err := viper.Sub("ftp").Unmarshal(&myConfig.Ftp)
130+
if err != nil {
131+
panic(fmt.Errorf("unable to decode FTP config, %v", err))
132+
}
125133
}
126134

127135
if !myConfig.Mqtt.Enabled && !myConfig.Webhooks.Enabled {
@@ -132,48 +140,51 @@ func (c *Config) Load() *Config {
132140
panic("No Servers are enabled. Nothing to do!")
133141
}
134142

135-
hikvisionCamsConfig := viper.Sub("hikvision.cams")
136-
if hikvisionCamsConfig != nil {
137-
camConfigs := viper.GetStringMapString("hikvision.cams")
138-
139-
for camName := range camConfigs {
140-
camConfig := viper.Sub("hikvision.cams." + camName)
141-
// CONSTRUCT CAMERA URL
142-
url := ""
143-
if camConfig.GetBool("https") {
144-
url += "https://"
145-
} else {
146-
url += "http://"
147-
}
148-
url += camConfig.GetString("address") + "/ISAPI/"
149-
150-
camera := hikvision.HikCamera{
151-
Name: camName,
152-
Url: url,
153-
Username: camConfig.GetString("username"),
154-
Password: camConfig.GetString("password"),
155-
}
156-
if camConfig.GetBool("rawTcp") {
157-
camera.BrokenHttp = true
143+
if viper.IsSet("hikvision.cams") {
144+
hikvisionCamsConfig := viper.Sub("hikvision.cams")
145+
if hikvisionCamsConfig != nil {
146+
camConfigs := viper.GetStringMapString("hikvision.cams")
147+
148+
for camName := range camConfigs {
149+
camConfig := viper.Sub("hikvision.cams." + camName)
150+
// CONSTRUCT CAMERA URL
151+
url := ""
152+
if camConfig.GetBool("https") {
153+
url += "https://"
154+
} else {
155+
url += "http://"
156+
}
157+
url += camConfig.GetString("address") + "/ISAPI/"
158+
159+
camera := hikvision.HikCamera{
160+
Name: camName,
161+
Url: url,
162+
Username: camConfig.GetString("username"),
163+
Password: camConfig.GetString("password"),
164+
}
165+
if camConfig.GetBool("rawTcp") {
166+
camera.BrokenHttp = true
167+
}
168+
if myConfig.Debug {
169+
fmt.Printf("Added Hikvision camera:\n"+
170+
" name: %s \n"+
171+
" url: %s \n"+
172+
" username: %s \n"+
173+
" password set: %t\n"+
174+
" rawRcp: %t\n",
175+
camera.Name,
176+
camera.Url,
177+
camera.Username,
178+
camera.Password != "",
179+
camera.BrokenHttp,
180+
)
181+
}
182+
183+
myConfig.Hikvision.Cams = append(myConfig.Hikvision.Cams, camera)
158184
}
159-
if myConfig.Debug {
160-
fmt.Printf("Added Hikvision camera:\n"+
161-
" name: %s \n"+
162-
" url: %s \n"+
163-
" username: %s \n"+
164-
" password set: %t\n"+
165-
" rawRcp: %t\n",
166-
camera.Name,
167-
camera.Url,
168-
camera.Username,
169-
camera.Password != "",
170-
camera.BrokenHttp,
171-
)
172-
}
173-
174-
myConfig.Hikvision.Cams = append(myConfig.Hikvision.Cams, camera)
175185
}
176186
}
187+
177188
return &myConfig
178189
}
179190

0 commit comments

Comments
 (0)