46 lines
905 B
Go
46 lines
905 B
Go
package smtp2shoutrrr
|
|
|
|
import (
|
|
"log/slog"
|
|
"net/url"
|
|
)
|
|
|
|
type Config struct {
|
|
Port int
|
|
Username string
|
|
Password string
|
|
Recipients []ConfigRecipient
|
|
}
|
|
|
|
func (c *Config) SetDefaults() {
|
|
if c.Port == 0 {
|
|
c.Port = 11125
|
|
}
|
|
|
|
if c.Username == "" {
|
|
slog.Warn("no username provided, using default: username")
|
|
c.Username = "username"
|
|
}
|
|
|
|
if c.Password == "" {
|
|
slog.Warn("no password provided, using default: password")
|
|
c.Password = "password"
|
|
}
|
|
}
|
|
|
|
type ConfigRecipient struct {
|
|
Addresses []string // email addresses
|
|
Target string // shoutrrr address
|
|
targetURL *url.URL
|
|
}
|
|
|
|
func (cr ConfigRecipient) GetTargetURL() *url.URL {
|
|
if cr.targetURL == nil {
|
|
var err error
|
|
cr.targetURL, err = url.Parse(cr.Target)
|
|
if err != nil {
|
|
slog.Error("failed to parse shoutrrr target URL", slog.String("target", cr.Target), slog.String("err", err.Error()))
|
|
}
|
|
}
|
|
return cr.targetURL
|
|
}
|