Adding GUI troubleshoot popup GODT-554 GODT-583

This commit is contained in:
Jakub
2020-08-03 12:48:44 +02:00
parent 2c910378ce
commit 01a8c9e9d7
7 changed files with 22 additions and 15 deletions

View File

@ -4,21 +4,10 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/)
## Unreleased ## Unreleased
### Added ## [v1.3.x] Emma (beta since 2020-08-05)
* 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 ### Added
* GODT-554 Detect and notify about "bad certificate" IMAP TLS error.
* IMAP mailbox info update when new mailbox is created. * IMAP mailbox info update when new mailbox is created.
* GODT-72 Use ISO-8859-1 encoding if charset is not specified and it isn't UTF-8. * GODT-72 Use ISO-8859-1 encoding if charset is not specified and it isn't UTF-8.

View File

@ -40,6 +40,7 @@ const (
NoActiveKeyForRecipientEvent = "noActiveKeyForRecipient" NoActiveKeyForRecipientEvent = "noActiveKeyForRecipient"
UpgradeApplicationEvent = "upgradeApplication" UpgradeApplicationEvent = "upgradeApplication"
TLSCertIssue = "tlsCertPinningIssue" TLSCertIssue = "tlsCertPinningIssue"
IMAPTLSBadCert = "imapTLSBadCert"
// LogoutEventTimeout is the minimum time to permit between logout events being sent. // LogoutEventTimeout is the minimum time to permit between logout events being sent.
LogoutEventTimeout = 3 * time.Minute LogoutEventTimeout = 3 * time.Minute

View File

@ -237,6 +237,14 @@ Item {
winMain.tlsBarState="notOK" winMain.tlsBarState="notOK"
} }
onShowIMAPCertTroubleshoot : {
go.notifyBubble(1, qsTr(
"Bridge was unable to establish a connection with your Email client. <br> <a href=\"https://protonmail.com/support/knowledge-base/bridge-ssl-connection-issue\">Learn more</a> <br>",
"notification message"
))
}
} }
Timer { Timer {

View File

@ -110,7 +110,7 @@ Window {
ListElement { title: "Internet off" } ListElement { title: "Internet off" }
ListElement { title: "NeedUpdate" } ListElement { title: "NeedUpdate" }
ListElement { title: "UpToDate" } ListElement { title: "UpToDate" }
ListElement { title: "ForceUpdate" } ListElement { title: "ForceUpdate" }
ListElement { title: "Linux" } ListElement { title: "Linux" }
ListElement { title: "Windows" } ListElement { title: "Windows" }
ListElement { title: "Macos" } ListElement { title: "Macos" }
@ -122,6 +122,7 @@ Window {
ListElement { title: "Minimize this" } ListElement { title: "Minimize this" }
ListElement { title: "SendAlertPopup" } ListElement { title: "SendAlertPopup" }
ListElement { title: "TLSCertError" } ListElement { title: "TLSCertError" }
ListElement { title: "IMAPCertError" }
} }
ListView { ListView {
@ -208,6 +209,9 @@ Window {
case "TLSCertError" : case "TLSCertError" :
go.showCertIssue() go.showCertIssue()
break; break;
case "IMAPCertError" :
go.showIMAPCertTroubleshoot()
break;
default : default :
console.log("Not implemented " + data) console.log("Not implemented " + data)
} }
@ -310,6 +314,7 @@ Window {
signal failedAutostartCode(string code) signal failedAutostartCode(string code)
signal showCertIssue() signal showCertIssue()
signal showIMAPCertTroubleshoot()
signal updateFinished(bool hasError) signal updateFinished(bool hasError)

View File

@ -188,6 +188,7 @@ func (s *FrontendQt) watchEvents() {
updateApplicationCh := s.getEventChannel(events.UpgradeApplicationEvent) updateApplicationCh := s.getEventChannel(events.UpgradeApplicationEvent)
newUserCh := s.getEventChannel(events.UserRefreshEvent) newUserCh := s.getEventChannel(events.UserRefreshEvent)
certIssue := s.getEventChannel(events.TLSCertIssue) certIssue := s.getEventChannel(events.TLSCertIssue)
imapCertIssue := s.getEventChannel(events.IMAPTLSBadCert)
for { for {
select { select {
case errorDetails := <-errorCh: case errorDetails := <-errorCh:
@ -227,6 +228,8 @@ func (s *FrontendQt) watchEvents() {
s.Qml.LoadAccounts() s.Qml.LoadAccounts()
case <-certIssue: case <-certIssue:
s.Qml.ShowCertIssue() s.Qml.ShowCertIssue()
case <-imapCertIssue:
s.Qml.ShowIMAPCertTroubleshoot()
} }
} }
} }

View File

@ -135,6 +135,7 @@ type GoQMLInterface struct {
_ func(x, y float32) `slot:"saveOutgoingNoEncPopupCoord"` _ func(x, y float32) `slot:"saveOutgoingNoEncPopupCoord"`
_ func(recipient string) `signal:"showNoActiveKeyForRecipient"` _ func(recipient string) `signal:"showNoActiveKeyForRecipient"`
_ func() `signal:"showCertIssue"` _ func() `signal:"showCertIssue"`
_ func() `signal:"ShowIMAPCertTroubleshoot"`
_ func() `slot:"startUpdate"` _ func() `slot:"startUpdate"`
_ func(hasError bool) `signal:"updateFinished"` _ func(hasError bool) `signal:"updateFinished"`

View File

@ -225,6 +225,6 @@ func (ib *imapBackend) upgradeError(err error) {
logrus.WithError(err).Error("IMAP connection couldn't be upgraded to TLS during STARTTLS") logrus.WithError(err).Error("IMAP connection couldn't be upgraded to TLS during STARTTLS")
if strings.Contains(err.Error(), "remote error: tls: bad certificate") { if strings.Contains(err.Error(), "remote error: tls: bad certificate") {
logrus.Info("TODO: Show troubleshooting popup") ib.eventListener.Emit(events.IMAPTLSBadCert, err.Error())
} }
} }