feat+fix: Ignore unknown keys and verify required fields are present in appservice registration files (#2550)

* fix: ignore unknown keys in appservice configs

fixes matrix-org/dendrite#1567

* feat: verify required fields in appservice configs
This commit is contained in:
Kabir Kwatra 2022-07-05 14:53:51 +03:00 committed by GitHub
parent b5c55faf98
commit 43147bd654
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -187,7 +187,7 @@ func loadAppServices(config *AppServiceAPI, derived *Derived) error {
} }
// Load the config data into our struct // Load the config data into our struct
if err = yaml.UnmarshalStrict(configData, &appservice); err != nil { if err = yaml.Unmarshal(configData, &appservice); err != nil {
return err return err
} }
@ -315,6 +315,20 @@ func checkErrors(config *AppServiceAPI, derived *Derived) (err error) {
} }
} }
// Check required fields
if appservice.ID == "" {
return ConfigErrors([]string{"Application service ID is required"})
}
if appservice.ASToken == "" {
return ConfigErrors([]string{"Application service Token is required"})
}
if appservice.HSToken == "" {
return ConfigErrors([]string{"Homeserver Token is required"})
}
if appservice.SenderLocalpart == "" {
return ConfigErrors([]string{"Sender Localpart is required"})
}
// Check if the url has trailing /'s. If so, remove them // Check if the url has trailing /'s. If so, remove them
appservice.URL = strings.TrimRight(appservice.URL, "/") appservice.URL = strings.TrimRight(appservice.URL, "/")