From 85de1c97ffc8932e2431e0b42e97c8e14e09fb6e Mon Sep 17 00:00:00 2001 From: Stefan Schokker <20231417+SquaredPotato@users.noreply.github.com> Date: Sat, 14 Oct 2023 14:28:12 +0200 Subject: [PATCH] feat: Add SMTP authentication types to settings --- config.go | 1 + config/config-base.json | 16 ++++++++++++++++ email.go | 7 ++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/config.go b/config.go index c92bd63..4c1b8ad 100644 --- a/config.go +++ b/config.go @@ -76,6 +76,7 @@ func (app *appContext) loadConfig() error { app.MustSetValue("smtp", "hello_hostname", "localhost") app.MustSetValue("smtp", "cert_validation", "true") + app.MustSetValue("smtp", "auth_type", "4") sc := app.config.Section("discord").Key("start_command").MustString("start") app.config.Section("discord").Key("start_command").SetValue(strings.TrimPrefix(strings.TrimPrefix(sc, "/"), "!")) diff --git a/config/config-base.json b/config/config-base.json index e7d97ee..00ac494 100644 --- a/config/config-base.json +++ b/config/config-base.json @@ -918,6 +918,22 @@ "type": "bool", "value": true, "description": "Warning, disabling this makes you much more vulnerable to man-in-the-middle attacks" + }, + "auth_type": { + "name": "Authentication type", + "required": false, + "requires_restart": false, + "advanced": false, + "type": "select", + "options": [ + ["0", "Plain"], + ["1", "Login"], + ["2", "CRAM-MD5"], + ["3", "None"], + ["4", "Auto"] + ], + "value": 4, + "description": "SMTP authentication method" } } }, diff --git a/email.go b/email.go index 9671ee4..bab6eef 100644 --- a/email.go +++ b/email.go @@ -92,7 +92,8 @@ func NewEmailer(app *appContext) *Emailer { if app.proxyEnabled { proxyConf = &app.proxyConfig } - err := emailer.NewSMTP(app.config.Section("smtp").Key("server").String(), app.config.Section("smtp").Key("port").MustInt(465), username, password, sslTLS, app.config.Section("smtp").Key("ssl_cert").MustString(""), app.config.Section("smtp").Key("hello_hostname").String(), app.config.Section("smtp").Key("cert_validation").MustBool(true), proxyConf) + authType := sMail.AuthType(app.config.Section("smtp").Key("auth_type").MustInt(4)) + err := emailer.NewSMTP(app.config.Section("smtp").Key("server").String(), app.config.Section("smtp").Key("port").MustInt(465), username, password, sslTLS, app.config.Section("smtp").Key("ssl_cert").MustString(""), app.config.Section("smtp").Key("hello_hostname").String(), app.config.Section("smtp").Key("cert_validation").MustBool(true), authType, proxyConf) if err != nil { app.err.Printf("Error while initiating SMTP mailer: %v", err) } @@ -118,7 +119,7 @@ type SMTP struct { } // NewSMTP returns an SMTP emailClient. -func (emailer *Emailer) NewSMTP(server string, port int, username, password string, sslTLS bool, certPath string, helloHostname string, validateCertificate bool, proxy *easyproxy.ProxyConfig) (err error) { +func (emailer *Emailer) NewSMTP(server string, port int, username, password string, sslTLS bool, certPath string, helloHostname string, validateCertificate bool, authType sMail.AuthType, proxy *easyproxy.ProxyConfig) (err error) { sender := &SMTP{} sender.Client = sMail.NewSMTPClient() if sslTLS { @@ -127,7 +128,7 @@ func (emailer *Emailer) NewSMTP(server string, port int, username, password stri sender.Client.Encryption = sMail.EncryptionSTARTTLS } if username != "" || password != "" { - sender.Client.Authentication = sMail.AuthLogin + sender.Client.Authentication = authType sender.Client.Username = username sender.Client.Password = password }