1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-12-22 17:10:10 +00:00

feat: Add SMTP authentication types to settings

This commit is contained in:
Stefan Schokker 2023-10-14 14:28:12 +02:00
parent 2c8afecfbb
commit 85de1c97ff
3 changed files with 21 additions and 3 deletions

View File

@ -76,6 +76,7 @@ func (app *appContext) loadConfig() error {
app.MustSetValue("smtp", "hello_hostname", "localhost") app.MustSetValue("smtp", "hello_hostname", "localhost")
app.MustSetValue("smtp", "cert_validation", "true") app.MustSetValue("smtp", "cert_validation", "true")
app.MustSetValue("smtp", "auth_type", "4")
sc := app.config.Section("discord").Key("start_command").MustString("start") sc := app.config.Section("discord").Key("start_command").MustString("start")
app.config.Section("discord").Key("start_command").SetValue(strings.TrimPrefix(strings.TrimPrefix(sc, "/"), "!")) app.config.Section("discord").Key("start_command").SetValue(strings.TrimPrefix(strings.TrimPrefix(sc, "/"), "!"))

View File

@ -918,6 +918,22 @@
"type": "bool", "type": "bool",
"value": true, "value": true,
"description": "Warning, disabling this makes you much more vulnerable to man-in-the-middle attacks" "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"
} }
} }
}, },

View File

@ -92,7 +92,8 @@ func NewEmailer(app *appContext) *Emailer {
if app.proxyEnabled { if app.proxyEnabled {
proxyConf = &app.proxyConfig 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 { if err != nil {
app.err.Printf("Error while initiating SMTP mailer: %v", err) app.err.Printf("Error while initiating SMTP mailer: %v", err)
} }
@ -118,7 +119,7 @@ type SMTP struct {
} }
// NewSMTP returns an SMTP emailClient. // 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 := &SMTP{}
sender.Client = sMail.NewSMTPClient() sender.Client = sMail.NewSMTPClient()
if sslTLS { if sslTLS {
@ -127,7 +128,7 @@ func (emailer *Emailer) NewSMTP(server string, port int, username, password stri
sender.Client.Encryption = sMail.EncryptionSTARTTLS sender.Client.Encryption = sMail.EncryptionSTARTTLS
} }
if username != "" || password != "" { if username != "" || password != "" {
sender.Client.Authentication = sMail.AuthLogin sender.Client.Authentication = authType
sender.Client.Username = username sender.Client.Username = username
sender.Client.Password = password sender.Client.Password = password
} }