Merge pull request #434 from wunter8/374-empty-default-pass
allow empty password in client.yml
This commit is contained in:
commit
322abf4bdf
4 changed files with 87 additions and 15 deletions
|
@ -14,12 +14,12 @@ const (
|
||||||
type Config struct {
|
type Config struct {
|
||||||
DefaultHost string `yaml:"default-host"`
|
DefaultHost string `yaml:"default-host"`
|
||||||
DefaultUser string `yaml:"default-user"`
|
DefaultUser string `yaml:"default-user"`
|
||||||
DefaultPassword string `yaml:"default-password"`
|
DefaultPassword *string `yaml:"default-password"`
|
||||||
DefaultCommand string `yaml:"default-command"`
|
DefaultCommand string `yaml:"default-command"`
|
||||||
Subscribe []struct {
|
Subscribe []struct {
|
||||||
Topic string `yaml:"topic"`
|
Topic string `yaml:"topic"`
|
||||||
User string `yaml:"user"`
|
User string `yaml:"user"`
|
||||||
Password string `yaml:"password"`
|
Password *string `yaml:"password"`
|
||||||
Command string `yaml:"command"`
|
Command string `yaml:"command"`
|
||||||
If map[string]string `yaml:"if"`
|
If map[string]string `yaml:"if"`
|
||||||
} `yaml:"subscribe"`
|
} `yaml:"subscribe"`
|
||||||
|
@ -30,7 +30,7 @@ func NewConfig() *Config {
|
||||||
return &Config{
|
return &Config{
|
||||||
DefaultHost: DefaultBaseURL,
|
DefaultHost: DefaultBaseURL,
|
||||||
DefaultUser: "",
|
DefaultUser: "",
|
||||||
DefaultPassword: "",
|
DefaultPassword: nil,
|
||||||
DefaultCommand: "",
|
DefaultCommand: "",
|
||||||
Subscribe: nil,
|
Subscribe: nil,
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ func TestConfig_Load(t *testing.T) {
|
||||||
filename := filepath.Join(t.TempDir(), "client.yml")
|
filename := filepath.Join(t.TempDir(), "client.yml")
|
||||||
require.Nil(t, os.WriteFile(filename, []byte(`
|
require.Nil(t, os.WriteFile(filename, []byte(`
|
||||||
default-host: http://localhost
|
default-host: http://localhost
|
||||||
default-user: phil
|
default-user: philipp
|
||||||
default-password: mypass
|
default-password: mypass
|
||||||
default-command: 'echo "Got the message: $message"'
|
default-command: 'echo "Got the message: $message"'
|
||||||
subscribe:
|
subscribe:
|
||||||
|
@ -31,14 +31,14 @@ subscribe:
|
||||||
conf, err := client.LoadConfig(filename)
|
conf, err := client.LoadConfig(filename)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Equal(t, "http://localhost", conf.DefaultHost)
|
require.Equal(t, "http://localhost", conf.DefaultHost)
|
||||||
require.Equal(t, "phil", conf.DefaultUser)
|
require.Equal(t, "philipp", conf.DefaultUser)
|
||||||
require.Equal(t, "mypass", conf.DefaultPassword)
|
require.Equal(t, "mypass", *conf.DefaultPassword)
|
||||||
require.Equal(t, `echo "Got the message: $message"`, conf.DefaultCommand)
|
require.Equal(t, `echo "Got the message: $message"`, conf.DefaultCommand)
|
||||||
require.Equal(t, 4, len(conf.Subscribe))
|
require.Equal(t, 4, len(conf.Subscribe))
|
||||||
require.Equal(t, "no-command-with-auth", 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, "", conf.Subscribe[0].Command)
|
||||||
require.Equal(t, "phil", conf.Subscribe[0].User)
|
require.Equal(t, "phil", conf.Subscribe[0].User)
|
||||||
require.Equal(t, "mypass", conf.Subscribe[0].Password)
|
require.Equal(t, "mypass", *conf.Subscribe[0].Password)
|
||||||
require.Equal(t, "echo-this", conf.Subscribe[1].Topic)
|
require.Equal(t, "echo-this", conf.Subscribe[1].Topic)
|
||||||
require.Equal(t, `echo "Message received: $message"`, conf.Subscribe[1].Command)
|
require.Equal(t, `echo "Message received: $message"`, conf.Subscribe[1].Command)
|
||||||
require.Equal(t, "alerts", conf.Subscribe[2].Topic)
|
require.Equal(t, "alerts", conf.Subscribe[2].Topic)
|
||||||
|
@ -46,3 +46,73 @@ subscribe:
|
||||||
require.Equal(t, "high,urgent", conf.Subscribe[2].If["priority"])
|
require.Equal(t, "high,urgent", conf.Subscribe[2].If["priority"])
|
||||||
require.Equal(t, "defaults", conf.Subscribe[3].Topic)
|
require.Equal(t, "defaults", conf.Subscribe[3].Topic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConfig_EmptyPassword(t *testing.T) {
|
||||||
|
filename := filepath.Join(t.TempDir(), "client.yml")
|
||||||
|
require.Nil(t, os.WriteFile(filename, []byte(`
|
||||||
|
default-host: http://localhost
|
||||||
|
default-user: philipp
|
||||||
|
default-password: ""
|
||||||
|
subscribe:
|
||||||
|
- topic: no-command-with-auth
|
||||||
|
user: phil
|
||||||
|
password: ""
|
||||||
|
`), 0600))
|
||||||
|
|
||||||
|
conf, err := client.LoadConfig(filename)
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Equal(t, "http://localhost", conf.DefaultHost)
|
||||||
|
require.Equal(t, "philipp", conf.DefaultUser)
|
||||||
|
require.Equal(t, "", *conf.DefaultPassword)
|
||||||
|
require.Equal(t, 1, len(conf.Subscribe))
|
||||||
|
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, "", *conf.Subscribe[0].Password)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfig_NullPassword(t *testing.T) {
|
||||||
|
filename := filepath.Join(t.TempDir(), "client.yml")
|
||||||
|
require.Nil(t, os.WriteFile(filename, []byte(`
|
||||||
|
default-host: http://localhost
|
||||||
|
default-user: philipp
|
||||||
|
default-password: ~
|
||||||
|
subscribe:
|
||||||
|
- topic: no-command-with-auth
|
||||||
|
user: phil
|
||||||
|
password: ~
|
||||||
|
`), 0600))
|
||||||
|
|
||||||
|
conf, err := client.LoadConfig(filename)
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Equal(t, "http://localhost", conf.DefaultHost)
|
||||||
|
require.Equal(t, "philipp", conf.DefaultUser)
|
||||||
|
require.Nil(t, conf.DefaultPassword)
|
||||||
|
require.Equal(t, 1, len(conf.Subscribe))
|
||||||
|
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.Nil(t, conf.Subscribe[0].Password)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfig_NoPassword(t *testing.T) {
|
||||||
|
filename := filepath.Join(t.TempDir(), "client.yml")
|
||||||
|
require.Nil(t, os.WriteFile(filename, []byte(`
|
||||||
|
default-host: http://localhost
|
||||||
|
default-user: philipp
|
||||||
|
subscribe:
|
||||||
|
- topic: no-command-with-auth
|
||||||
|
user: phil
|
||||||
|
`), 0600))
|
||||||
|
|
||||||
|
conf, err := client.LoadConfig(filename)
|
||||||
|
require.Nil(t, err)
|
||||||
|
require.Equal(t, "http://localhost", conf.DefaultHost)
|
||||||
|
require.Equal(t, "philipp", conf.DefaultUser)
|
||||||
|
require.Nil(t, conf.DefaultPassword)
|
||||||
|
require.Equal(t, 1, len(conf.Subscribe))
|
||||||
|
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.Nil(t, conf.Subscribe[0].Password)
|
||||||
|
}
|
||||||
|
|
|
@ -175,19 +175,20 @@ func doSubscribe(c *cli.Context, cl *client.Client, conf *client.Config, topic,
|
||||||
for filter, value := range s.If {
|
for filter, value := range s.If {
|
||||||
topicOptions = append(topicOptions, client.WithFilter(filter, value))
|
topicOptions = append(topicOptions, client.WithFilter(filter, value))
|
||||||
}
|
}
|
||||||
var user, password string
|
var user string
|
||||||
|
var password *string
|
||||||
if s.User != "" {
|
if s.User != "" {
|
||||||
user = s.User
|
user = s.User
|
||||||
} else if conf.DefaultUser != "" {
|
} else if conf.DefaultUser != "" {
|
||||||
user = conf.DefaultUser
|
user = conf.DefaultUser
|
||||||
}
|
}
|
||||||
if s.Password != "" {
|
if s.Password != nil {
|
||||||
password = s.Password
|
password = s.Password
|
||||||
} else if conf.DefaultPassword != "" {
|
} else if conf.DefaultPassword != nil {
|
||||||
password = conf.DefaultPassword
|
password = conf.DefaultPassword
|
||||||
}
|
}
|
||||||
if user != "" && password != "" {
|
if user != "" && password != nil {
|
||||||
topicOptions = append(topicOptions, client.WithBasicAuth(user, password))
|
topicOptions = append(topicOptions, client.WithBasicAuth(user, *password))
|
||||||
}
|
}
|
||||||
subscriptionID := cl.Subscribe(s.Topic, topicOptions...)
|
subscriptionID := cl.Subscribe(s.Topic, topicOptions...)
|
||||||
if s.Command != "" {
|
if s.Command != "" {
|
||||||
|
|
|
@ -13,6 +13,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release
|
||||||
* Subscriptions can now have a display name ([#370](https://github.com/binwiederhier/ntfy/issues/370), thanks to [@tfheen](https://github.com/tfheen) for reporting)
|
* Subscriptions can now have a display name ([#370](https://github.com/binwiederhier/ntfy/issues/370), thanks to [@tfheen](https://github.com/tfheen) for reporting)
|
||||||
* Bump Go version to Go 18.x ([#422](https://github.com/binwiederhier/ntfy/issues/422))
|
* Bump Go version to Go 18.x ([#422](https://github.com/binwiederhier/ntfy/issues/422))
|
||||||
* Web: Strip trailing slash when subscribing ([#428](https://github.com/binwiederhier/ntfy/issues/428), thanks to [@raining1123](https://github.com/raining1123) for reporting, and [@wunter8](https://github.com/wunter8) for fixing)
|
* Web: Strip trailing slash when subscribing ([#428](https://github.com/binwiederhier/ntfy/issues/428), thanks to [@raining1123](https://github.com/raining1123) for reporting, and [@wunter8](https://github.com/wunter8) for fixing)
|
||||||
|
* Allow empty passwords in `client.yml` ([#374](https://github.com/binwiederhier/ntfy/issues/374), thanks to [@cyqsimon](https://github.com/cyqsimon) for reporting, and [@wunter8](https://github.com/wunter8) for fixing)
|
||||||
|
|
||||||
**Documentation:**
|
**Documentation:**
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue