Merge release/golden-gate into devel

This commit is contained in:
Jakub
2021-01-27 11:06:10 +01:00
254 changed files with 9588 additions and 5963 deletions

View File

@ -22,8 +22,7 @@ import (
"time"
"github.com/ProtonMail/proton-bridge/internal/bridge"
"github.com/ProtonMail/proton-bridge/internal/preferences"
"github.com/ProtonMail/proton-bridge/pkg/config"
"github.com/ProtonMail/proton-bridge/internal/config/settings"
"github.com/ProtonMail/proton-bridge/pkg/confirmer"
"github.com/ProtonMail/proton-bridge/pkg/listener"
goSMTPBackend "github.com/emersion/go-smtp"
@ -35,10 +34,14 @@ type panicHandler interface {
HandlePanic()
}
type settingsProvider interface {
GetBool(string) bool
}
type smtpBackend struct {
panicHandler panicHandler
eventListener listener.Listener
preferences *config.Preferences
settings settingsProvider
bridge bridger
confirmer *confirmer.Confirmer
sendRecorder *sendRecorder
@ -48,22 +51,22 @@ type smtpBackend struct {
func NewSMTPBackend(
panicHandler panicHandler,
eventListener listener.Listener,
preferences *config.Preferences,
settings settingsProvider,
bridge *bridge.Bridge,
) *smtpBackend { //nolint[golint]
return newSMTPBackend(panicHandler, eventListener, preferences, newBridgeWrap(bridge))
return newSMTPBackend(panicHandler, eventListener, settings, newBridgeWrap(bridge))
}
func newSMTPBackend(
panicHandler panicHandler,
eventListener listener.Listener,
preferences *config.Preferences,
settings settingsProvider,
bridge bridger,
) *smtpBackend {
return &smtpBackend{
panicHandler: panicHandler,
eventListener: eventListener,
preferences: preferences,
settings: settings,
bridge: bridge,
confirmer: confirmer.New(),
sendRecorder: newSendRecorder(),
@ -109,7 +112,7 @@ func (sb *smtpBackend) AnonymousLogin(_ *goSMTPBackend.ConnectionState) (goSMTPB
}
func (sb *smtpBackend) shouldReportOutgoingNoEnc() bool {
return sb.preferences.GetBool(preferences.ReportOutgoingNoEncKey)
return sb.settings.GetBool(settings.ReportOutgoingNoEncKey)
}
func (sb *smtpBackend) ConfirmNoEncryption(messageID string, shouldSend bool) {

View File

@ -359,16 +359,16 @@ func TestPreferencesBuilder(t *testing.T) {
assert.Equal(t, test.wantSign, prefs.Sign)
assert.Equal(t, test.wantScheme, prefs.Scheme)
assert.Equal(t, test.wantMIMEType, prefs.MIMEType)
assert.Equal(t, test.wantPublicKey, func() string {
if prefs.PublicKey == nil {
return ""
}
k, _ := prefs.PublicKey.GetKey(0)
s, _ := k.GetArmoredPublicKey()
if prefs.PublicKey != nil {
wantKey, err := crypto.NewKeyFromArmored(test.wantPublicKey)
require.NoError(t, err)
return s
}())
haveKey, err := prefs.PublicKey.GetKey(0)
require.NoError(t, err)
assert.Equal(t, wantKey.GetFingerprint(), haveKey.GetFingerprint())
}
})
}
}

View File

@ -43,6 +43,13 @@ func NewSMTPServer(debug bool, port int, useSSL bool, tls *tls.Config, smtpBacke
s.Domain = bridge.Host
s.AllowInsecureAuth = true
if debug {
fmt.Println("THE LOG WILL CONTAIN **DECRYPTED** MESSAGE DATA")
log.Warning("================================================")
log.Warning("THIS LOG WILL CONTAIN **DECRYPTED** MESSAGE DATA")
log.Warning("================================================")
}
if debug {
s.Debug = logrus.
WithField("pkg", "smtp/server").

View File

@ -31,7 +31,7 @@ import (
"github.com/ProtonMail/gopenpgp/v2/crypto"
"github.com/ProtonMail/proton-bridge/internal/events"
"github.com/ProtonMail/proton-bridge/pkg/listener"
pkgMessage "github.com/ProtonMail/proton-bridge/pkg/message"
pkgMsg "github.com/ProtonMail/proton-bridge/pkg/message"
"github.com/ProtonMail/proton-bridge/pkg/message/parser"
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
goSMTPBackend "github.com/emersion/go-smtp"
@ -229,7 +229,7 @@ func (su *smtpUser) Send(returnPath string, to []string, messageReader io.Reader
err = errors.Wrap(err, "failed to create new parser")
return
}
message, plainBody, attReaders, err := pkgMessage.ParserWithParser(parser)
message, plainBody, attReaders, err := pkgMsg.ParserWithParser(parser)
if err != nil {
log.WithError(err).Error("Failed to parse message")
return
@ -275,10 +275,10 @@ func (su *smtpUser) Send(returnPath string, to []string, messageReader io.Reader
}
if attachedPublicKey != "" {
pkgMessage.AttachPublicKey(parser, attachedPublicKey, attachedPublicKeyName)
pkgMsg.AttachPublicKey(parser, attachedPublicKey, attachedPublicKeyName)
}
mimeBody, err := pkgMessage.BuildMIMEBody(parser)
mimeBody, err := pkgMsg.BuildMIMEBody(parser)
if err != nil {
log.WithError(err).Error("Failed to build message")
return