From bc40bed6e561c034654d757f2514e9e24be388ea Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Mon, 8 Mar 2021 17:22:46 +0100 Subject: [PATCH] Implement "skip TLS verification" as command line argument --- cmd/alps/main.go | 1 + imap.go | 3 ++- server.go | 11 ++++++----- smtp.go | 3 ++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/alps/main.go b/cmd/alps/main.go index 5a00957..b38ac59 100644 --- a/cmd/alps/main.go +++ b/cmd/alps/main.go @@ -34,6 +34,7 @@ func main() { flag.StringVar(&options.Theme, "theme", "", "default theme") flag.StringVar(&addr, "addr", ":1323", "listening address") flag.BoolVar(&options.Debug, "debug", false, "enable debug logs") + flag.BoolVar(&options.SkipTlsVerification, "skiptlsverification", false, "skip TLS hostname verification") flag.StringVar(&loginKey, "login-key", "", "Fernet key for login persistence") flag.Usage = func() { diff --git a/imap.go b/imap.go index 7554331..978363a 100644 --- a/imap.go +++ b/imap.go @@ -1,6 +1,7 @@ package alps import ( + "crypto/tls" "fmt" "github.com/emersion/go-imap" @@ -16,7 +17,7 @@ func (s *Server) dialIMAP() (*imapclient.Client, error) { var c *imapclient.Client var err error if s.imap.tls { - c, err = imapclient.DialTLS(s.imap.host, nil) + c, err = imapclient.DialTLS(s.imap.host, &tls.Config{InsecureSkipVerify: s.Options.SkipTlsVerification}) if err != nil { return nil, fmt.Errorf("failed to connect to IMAPS server: %v", err) } diff --git a/server.go b/server.go index 17018c1..b005ebc 100644 --- a/server.go +++ b/server.go @@ -365,11 +365,12 @@ func handleUnauthenticated(next echo.HandlerFunc, ctx *Context) error { } type Options struct { - Upstreams []string - Theme string - ThemesPath string - Debug bool - LoginKey *fernet.Key + Upstreams []string + Theme string + ThemesPath string + Debug bool + SkipTlsVerification bool + LoginKey *fernet.Key } // New creates a new server. diff --git a/smtp.go b/smtp.go index 5e178f2..4c720e2 100644 --- a/smtp.go +++ b/smtp.go @@ -1,6 +1,7 @@ package alps import ( + "crypto/tls" "fmt" "github.com/emersion/go-smtp" @@ -14,7 +15,7 @@ func (s *Server) dialSMTP() (*smtp.Client, error) { var c *smtp.Client var err error if s.smtp.tls { - c, err = smtp.DialTLS(s.smtp.host, nil) + c, err = smtp.DialTLS(s.smtp.host, &tls.Config{InsecureSkipVerify: s.Options.SkipTlsVerification}) if err != nil { return nil, fmt.Errorf("failed to connect to SMTPS server: %v", err) }