diff --git a/Changelog.md b/Changelog.md index e89c8840..40dd5bbb 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,20 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) +## Unreleased + +### Added +* GODT-582 Detect "bad certificate" TLS error. + +### Changed +* GODT-409 Set flags have to replace all flags. +* GODT-531 Better way to add trusted certificate in macOS. +* Bumped golangci-lint to v1.29.0 + +### Fixed +* GODT-454 Fix send on closed channel when receiving unencrypted send confirmation from GUI. + + ## [v1.3.x] Emma (beta 2020-07-XXX) ### Added diff --git a/go.mod b/go.mod index 8d17712a..1d73de8e 100644 --- a/go.mod +++ b/go.mod @@ -68,6 +68,7 @@ require ( replace ( github.com/docker/docker-credential-helpers => github.com/ProtonMail/docker-credential-helpers v1.1.0 + github.com/emersion/go-imap => github.com/jameshoulahan/go-imap v0.0.0-20200728140727-d57327f48843 github.com/emersion/go-smtp => github.com/ProtonMail/go-smtp v0.0.0-20181206232543-8261df20d309 github.com/jameskeane/bcrypt => github.com/ProtonMail/bcrypt v0.0.0-20170924085257-7509ea014998 golang.org/x/crypto => github.com/ProtonMail/crypto v0.0.0-20200416114516-1fa7f403fb9c diff --git a/go.sum b/go.sum index 64317ecc..91936333 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,6 @@ github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7h github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emersion/go-imap v1.0.6-0.20200708083111-011063d6c9df h1:Vlwnsd5P5s+ek+wzEXbZ/g9tUBndVQAb3E1/+/ya3UQ= -github.com/emersion/go-imap v1.0.6-0.20200708083111-011063d6c9df/go.mod h1:yKASt+C3ZiDAiCSssxg9caIckWF/JG7ZQTO7GAmvicU= github.com/emersion/go-imap-appendlimit v0.0.0-20190308131241-25671c986a6a h1:bMdSPm6sssuOFpIaveu3XGAijMS3Tq2S3EqFZmZxidc= github.com/emersion/go-imap-appendlimit v0.0.0-20190308131241-25671c986a6a/go.mod h1:ikgISoP7pRAolqsVP64yMteJa2FIpS6ju88eBT6K1yQ= github.com/emersion/go-imap-idle v0.0.0-20200601154248-f05f54664cc4 h1:/JIALzmCduf5o8TWJSiOBzTb9+R0SChwElUrJLlp2po= @@ -93,6 +91,8 @@ github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/U github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/jameshoulahan/go-imap v0.0.0-20200728140727-d57327f48843 h1:suxlO4AC4E4bjueAsL0m+qp8kmkxRWMGj+5bBU/KJ8g= +github.com/jameshoulahan/go-imap v0.0.0-20200728140727-d57327f48843/go.mod h1:yKASt+C3ZiDAiCSssxg9caIckWF/JG7ZQTO7GAmvicU= github.com/jaytaylor/html2text v0.0.0-20190408195923-01ec452cbe43/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= github.com/jaytaylor/html2text v0.0.0-20200220170450-61d9dc4d7195 h1:j0UEFmS7wSjAwKEIkgKBn8PRDfjcuggzr93R9wk53nQ= github.com/jaytaylor/html2text v0.0.0-20200220170450-61d9dc4d7195/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= diff --git a/internal/imap/backend.go b/internal/imap/backend.go index 3652199a..9fd56bae 100644 --- a/internal/imap/backend.go +++ b/internal/imap/backend.go @@ -29,6 +29,7 @@ import ( "github.com/ProtonMail/proton-bridge/pkg/listener" "github.com/emersion/go-imap" goIMAPBackend "github.com/emersion/go-imap/backend" + "github.com/sirupsen/logrus" ) type panicHandler interface { @@ -219,3 +220,11 @@ func (ib *imapBackend) monitorDisconnectedUsers() { ib.deleteUser(address) } } + +func (ib *imapBackend) upgradeError(err error) { + logrus.WithError(err).Error("IMAP connection couldn't be upgraded to TLS during STARTTLS") + + if strings.Contains(err.Error(), "remote error: tls: bad certificate") { + logrus.Info("TODO: Show troubleshooting popup") + } +} diff --git a/internal/imap/server.go b/internal/imap/server.go index 34a45fc0..3aac8ada 100644 --- a/internal/imap/server.go +++ b/internal/imap/server.go @@ -57,6 +57,7 @@ func NewIMAPServer(debugClient, debugServer bool, port int, tls *tls.Config, ima s.AllowInsecureAuth = true s.ErrorLog = newServerErrorLogger("server-imap") s.AutoLogout = 30 * time.Minute + s.UpgradeError = imapBackend.upgradeError serverID := imapid.ID{ imapid.FieldName: "ProtonMail",