From b89c18e83d8d159dbda9dd7d738eae0e694e0cc9 Mon Sep 17 00:00:00 2001 From: lrabane Date: Thu, 17 Feb 2022 19:16:01 +0100 Subject: [PATCH] Add support for auth in client config --- client/client.yml | 4 ++++ client/config.go | 8 +++++--- client/config_test.go | 8 ++++++-- cmd/subscribe.go | 3 +++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/client/client.yml b/client/client.yml index 9f62990a..56733a14 100644 --- a/client/client.yml +++ b/client/client.yml @@ -16,6 +16,10 @@ # command: 'echo "$message"' # if: # priority: high,urgent +# - topic: secret +# command: 'notify-send "$m"' +# user: phill +# password: mypass # # Variables: # Variable Aliases Description diff --git a/client/config.go b/client/config.go index c44fac6c..0866cd1b 100644 --- a/client/config.go +++ b/client/config.go @@ -14,9 +14,11 @@ const ( type Config struct { DefaultHost string `yaml:"default-host"` Subscribe []struct { - Topic string `yaml:"topic"` - Command string `yaml:"command"` - If map[string]string `yaml:"if"` + Topic string `yaml:"topic"` + User string `yaml:"user"` + Password string `yaml:"password"` + Command string `yaml:"command"` + If map[string]string `yaml:"if"` } `yaml:"subscribe"` } diff --git a/client/config_test.go b/client/config_test.go index 8d322111..d601cdb4 100644 --- a/client/config_test.go +++ b/client/config_test.go @@ -13,7 +13,9 @@ func TestConfig_Load(t *testing.T) { require.Nil(t, os.WriteFile(filename, []byte(` default-host: http://localhost subscribe: - - topic: no-command + - topic: no-command-with-auth + user: phil + password: mypass - topic: echo-this command: 'echo "Message received: $message"' - topic: alerts @@ -26,8 +28,10 @@ subscribe: require.Nil(t, err) require.Equal(t, "http://localhost", conf.DefaultHost) require.Equal(t, 3, len(conf.Subscribe)) - require.Equal(t, "no-command", conf.Subscribe[0].Topic) + require.Equal(t, "no-command-with-auth", conf.Subscribe[0].Topic) require.Equal(t, "", conf.Subscribe[0].Command) + require.Equal(t, "phil", conf.Subscribe[0].User) + require.Equal(t, "mypass", conf.Subscribe[0].Password) require.Equal(t, "echo-this", conf.Subscribe[1].Topic) require.Equal(t, `echo "Message received: $message"`, conf.Subscribe[1].Command) require.Equal(t, "alerts", conf.Subscribe[2].Topic) diff --git a/cmd/subscribe.go b/cmd/subscribe.go index 739176e8..9000a163 100644 --- a/cmd/subscribe.go +++ b/cmd/subscribe.go @@ -162,6 +162,9 @@ func doSubscribe(c *cli.Context, cl *client.Client, conf *client.Config, topic, for filter, value := range s.If { topicOptions = append(topicOptions, client.WithFilter(filter, value)) } + if s.User != "" && s.Password != "" { + topicOptions = append(topicOptions, client.WithBasicAuth(s.User, s.Password)) + } subscriptionID := cl.Subscribe(s.Topic, topicOptions...) commands[subscriptionID] = s.Command }