From a30a25940adcb9ff52d0c146f1b702761bcbf70e Mon Sep 17 00:00:00 2001 From: Joseph Kavanagh Date: Mon, 30 May 2022 20:27:57 +0100 Subject: [PATCH] fix(notify): mattermost username harddefault + error printing - `url_fields.username`, not `params.username` - fix some errors to show it's in params, not url_fields - remove internal conversion to `starttls` for email as shoutrrr fixed it https://github.com/containrrr/shoutrrr/pull/252 --- README.md | 2 +- config/defaults.go | 4 ++-- notifiers/shoutrrr/shoutrrr.go | 19 ++++--------------- notifiers/shoutrrr/verify.go | 6 +++--- testing/shoutrrr.go | 21 ++++++++++----------- 5 files changed, 20 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index c994172c..f6aa6f01 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ For further help, check out the [Getting Started](https://release-argus.io/docs/ #### Config formatting -The config can be broken down into 6 key areas. ([Further help](https://release-argus.io/docs/config/)) +The config can be broken down into 5 key areas. ([Further help](https://release-argus.io/docs/config/)) - [defaults](https://release-argus.io/docs/config/defaults/) - This is broken down into areas with defaults for [services](https://release-argus.io/docs/config/defaults/#service-portion), [notify](https://release-argus.io/docs/config/defaults/#notify-portion) and [webhooks](https://release-argus.io/docs/config/defaults/#webhook-portion). - [settings](https://release-argus.io/docs/config/settings/) - Settings for the Argus server. - [service](https://release-argus.io/docs/config/service/) - A dictionary mapping of all the services to monitor as well as what to notify when a new release is found. diff --git a/config/defaults.go b/config/defaults.go index 588c6b2a..1553351f 100644 --- a/config/defaults.go +++ b/config/defaults.go @@ -106,9 +106,9 @@ func (d *Defaults) SetDefaults() { "delay": "0s", }, URLFields: map[string]string{ - "port": "443", + "username": "Argus", + "port": "443", }, - Params: types.Params{"username": "Argus"}, } d.Notify["mattermost"].InitMaps() d.Notify["matrix"] = &shoutrrr.Shoutrrr{ diff --git a/notifiers/shoutrrr/shoutrrr.go b/notifiers/shoutrrr/shoutrrr.go index 23ce02db..4fbcef9a 100644 --- a/notifiers/shoutrrr/shoutrrr.go +++ b/notifiers/shoutrrr/shoutrrr.go @@ -31,50 +31,39 @@ func (s *Shoutrrr) GetParams() (params *shoutrrr_types.Params) { // Service Params for key := range s.Params { - cKey := fixParamKey(key) - (*params)[cKey] = s.GetSelfParam(key) + (*params)[key] = s.GetSelfParam(key) } // Main Params for key := range s.Main.Params { - cKey := fixParamKey(key) _, exist := s.Params[key] // Only overwrite if it doesn't exist in the level below if !exist { - (*params)[cKey] = s.Main.GetSelfParam(key) + (*params)[key] = s.Main.GetSelfParam(key) } } // Default Params for key := range s.Defaults.Params { - cKey := fixParamKey(key) _, exist := (s.Params)[key] // Only overwrite if it doesn't exist in the level below if !exist { - (*params)[cKey] = s.Defaults.GetSelfParam(key) + (*params)[key] = s.Defaults.GetSelfParam(key) } } // HardDefault Params for key := range s.HardDefaults.Params { - cKey := fixParamKey(key) _, exist := s.Params[key] // Only overwrite if it doesn't exist in the level below if !exist { - (*params)[cKey] = s.HardDefaults.GetSelfParam(key) + (*params)[key] = s.HardDefaults.GetSelfParam(key) } } return } -func fixParamKey(key string) string { - if key == "usestarttls" { - return "starttls" - } - return key -} - func (s *Shoutrrr) GetURL() (url string) { switch s.GetType() { case "discord": diff --git a/notifiers/shoutrrr/verify.go b/notifiers/shoutrrr/verify.go index 3aa0e07a..8c70fce9 100644 --- a/notifiers/shoutrrr/verify.go +++ b/notifiers/shoutrrr/verify.go @@ -158,10 +158,10 @@ func (s *Shoutrrr) checkValuesMaster(prefix string, errs *error, errsOptions *er *errsURLFields = fmt.Errorf("%s%s host: e.g. 'smtp.example.io'\\", utils.ErrorToString(*errsURLFields), prefix) } if s.GetParam("fromaddress") == "" { - *errsURLFields = fmt.Errorf("%s%s fromaddress: e.g. 'service@gmail.com'\\", utils.ErrorToString(*errsParams), prefix) + *errsParams = fmt.Errorf("%s%s fromaddress: e.g. 'service@gmail.com'\\", utils.ErrorToString(*errsParams), prefix) } if s.GetParam("toaddresses") == "" { - *errsURLFields = fmt.Errorf("%s%s toaddresses: e.g. 'name@gmail.com'\\", utils.ErrorToString(*errsParams), prefix) + *errsParams = fmt.Errorf("%s%s toaddresses: e.g. 'name@gmail.com'\\", utils.ErrorToString(*errsParams), prefix) } case "gotify": // gotify://host:port/path/token @@ -182,7 +182,7 @@ func (s *Shoutrrr) checkValuesMaster(prefix string, errs *error, errsOptions *er *errsURLFields = fmt.Errorf("%s%s webhookid: e.g. 'h1fyLh42h7lDI2L11T-bv'\\", utils.ErrorToString(*errsURLFields), prefix) } if s.GetParam("events") == "" { - *errsURLFields = fmt.Errorf("%s%s ebets: e.g. 'event1,event2'\\", utils.ErrorToString(*errsParams), prefix) + *errsParams = fmt.Errorf("%s%s ebets: e.g. 'event1,event2'\\", utils.ErrorToString(*errsParams), prefix) } case "join": // join://apiKey@join diff --git a/testing/shoutrrr.go b/testing/shoutrrr.go index b20a07b4..a12e29c6 100644 --- a/testing/shoutrrr.go +++ b/testing/shoutrrr.go @@ -58,21 +58,20 @@ func TestNotify(flag *string, cfg *config.Config) { (*shoutrrr)["test"] = &argus_shoutrrr.Shoutrrr{ ID: flag, Main: cfg.Notify[*flag], - Defaults: cfg.Defaults.Notify["telegram"], - HardDefaults: hardDefaults.Notify["telegram"], + Defaults: &emptyShoutrrs, + HardDefaults: &emptyShoutrrs, } (*shoutrrr)["test"].InitMaps() (*shoutrrr)["test"].Main.InitMaps() - if (*shoutrrr)["test"].Defaults == nil { - (*shoutrrr)["test"].Defaults = &emptyShoutrrs - } else { - (*shoutrrr)["test"].Defaults.InitMaps() - } - if (*shoutrrr)["test"].HardDefaults == nil { - (*shoutrrr)["test"].HardDefaults = &emptyShoutrrs - } else { - (*shoutrrr)["test"].HardDefaults.InitMaps() + + notifyType := (*shoutrrr)["test"].GetType() + if cfg.Defaults.Notify[notifyType] != nil { + (*shoutrrr)["test"].Defaults = cfg.Defaults.Notify[notifyType] } + (*shoutrrr)["test"].Defaults.InitMaps() + (*shoutrrr)["test"].HardDefaults = hardDefaults.Notify[notifyType] + (*shoutrrr)["test"].HardDefaults.InitMaps() + if err := (*shoutrrr)["test"].CheckValues(" "); err != nil { msg := fmt.Sprintf("notify:\n %s:\n%s\n", *flag, strings.ReplaceAll(err.Error(), "\\", "\n")) jLog.Fatal(msg, logFrom, true)