mirror of
https://github.com/axllent/mailpit.git
synced 2025-02-01 13:08:02 +02:00
0ab4210640
Credentials for the UI and SMTP can now be exported via the `MP_UI_AUTH` and `MP_SMTP_AUTH` environment variables. See #173
70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
// Package auth handles the web UI and SMTP authentication
|
|
package auth
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/tg123/go-htpasswd"
|
|
)
|
|
|
|
var (
|
|
// UICredentials passwords
|
|
UICredentials *htpasswd.File
|
|
// SMTPCredentials passwords
|
|
SMTPCredentials *htpasswd.File
|
|
)
|
|
|
|
// SetUIAuth will set Basic Auth credentials required for the UI & API
|
|
func SetUIAuth(s string) error {
|
|
var err error
|
|
|
|
credentials := credentialsFromString(s)
|
|
if len(credentials) == 0 {
|
|
return nil
|
|
}
|
|
|
|
r := strings.NewReader(strings.Join(credentials, "\n"))
|
|
|
|
UICredentials, err = htpasswd.NewFromReader(r, htpasswd.DefaultSystems, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// SetSMTPAuth will set SMTP credentials
|
|
func SetSMTPAuth(s string) error {
|
|
var err error
|
|
|
|
credentials := credentialsFromString(s)
|
|
if len(credentials) == 0 {
|
|
return nil
|
|
}
|
|
|
|
r := strings.NewReader(strings.Join(credentials, "\n"))
|
|
|
|
SMTPCredentials, err = htpasswd.NewFromReader(r, htpasswd.DefaultSystems, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func credentialsFromString(s string) []string {
|
|
// split string by any whitespace character
|
|
re := regexp.MustCompile(`\s+`)
|
|
|
|
words := re.Split(s, -1)
|
|
credentials := []string{}
|
|
for _, w := range words {
|
|
if w != "" {
|
|
credentials = append(credentials, w)
|
|
}
|
|
}
|
|
|
|
return credentials
|
|
}
|