mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
feat(GODT-2799): SMTP service interacts directly with Server Manager
Bridge no longer needs to manually add and remove accounts from the service.
This commit is contained in:
@ -97,7 +97,8 @@ func New(
|
||||
maxSyncMemory uint64,
|
||||
statsDir string,
|
||||
telemetryManager telemetry.Availability,
|
||||
serverManager imapservice.IMAPServerManager,
|
||||
imapServerManager imapservice.IMAPServerManager,
|
||||
smtpServerManager smtp.ServerManager,
|
||||
eventSubscription events.Subscription,
|
||||
) (*User, error) {
|
||||
user, err := newImpl(
|
||||
@ -111,7 +112,8 @@ func New(
|
||||
maxSyncMemory,
|
||||
statsDir,
|
||||
telemetryManager,
|
||||
serverManager,
|
||||
imapServerManager,
|
||||
smtpServerManager,
|
||||
eventSubscription,
|
||||
)
|
||||
if err != nil {
|
||||
@ -138,7 +140,8 @@ func newImpl(
|
||||
maxSyncMemory uint64,
|
||||
statsDir string,
|
||||
telemetryManager telemetry.Availability,
|
||||
serverManager imapservice.IMAPServerManager,
|
||||
imapServerManager imapservice.IMAPServerManager,
|
||||
smtpServerManager smtp.ServerManager,
|
||||
eventSubscription events.Subscription,
|
||||
) (*User, error) {
|
||||
logrus.WithField("userID", apiUser.ID).Info("Creating new user")
|
||||
@ -223,6 +226,7 @@ func newImpl(
|
||||
user.eventService,
|
||||
addressMode,
|
||||
identityState.Clone(),
|
||||
smtpServerManager,
|
||||
)
|
||||
|
||||
user.imapService = imapservice.NewService(
|
||||
@ -231,7 +235,7 @@ func newImpl(
|
||||
user,
|
||||
encVault,
|
||||
user.eventService,
|
||||
serverManager,
|
||||
imapServerManager,
|
||||
user,
|
||||
encVault,
|
||||
encVault,
|
||||
@ -282,7 +286,9 @@ func newImpl(
|
||||
user.identityService.Start(ctx, user.serviceGroup)
|
||||
|
||||
// Start SMTP Service
|
||||
user.smtpService.Start(ctx, user.serviceGroup)
|
||||
if err := user.smtpService.Start(ctx, user.serviceGroup); err != nil {
|
||||
return user, fmt.Errorf("failed to start smtp service: %w", err)
|
||||
}
|
||||
|
||||
// Start IMAP Service
|
||||
if err := user.imapService.Start(ctx, user.serviceGroup); err != nil {
|
||||
@ -548,8 +554,12 @@ func (user *User) Logout(ctx context.Context, withAPI bool) error {
|
||||
|
||||
user.log.Debug("Canceling ongoing tasks")
|
||||
|
||||
if err := user.smtpService.OnLogout(ctx); err != nil {
|
||||
return fmt.Errorf("failed to remove user from smtp server: %w", err)
|
||||
}
|
||||
|
||||
if err := user.imapService.OnLogout(ctx); err != nil {
|
||||
return fmt.Errorf("failed to remove user from server: %w", err)
|
||||
return fmt.Errorf("failed to remove user from imap server: %w", err)
|
||||
}
|
||||
|
||||
// Stop Services
|
||||
|
||||
@ -28,6 +28,7 @@ import (
|
||||
"github.com/ProtonMail/proton-bridge/v3/internal/certs"
|
||||
"github.com/ProtonMail/proton-bridge/v3/internal/events"
|
||||
"github.com/ProtonMail/proton-bridge/v3/internal/services/imapservice"
|
||||
"github.com/ProtonMail/proton-bridge/v3/internal/services/smtp"
|
||||
"github.com/ProtonMail/proton-bridge/v3/internal/telemetry/mocks"
|
||||
"github.com/ProtonMail/proton-bridge/v3/internal/vault"
|
||||
"github.com/ProtonMail/proton-bridge/v3/tests"
|
||||
@ -155,7 +156,8 @@ func withUser(tb testing.TB, ctx context.Context, _ *server.Server, m *proton.Ma
|
||||
manager.EXPECT().IsTelemetryAvailable(context.Background()).AnyTimes()
|
||||
|
||||
nullEventSubscription := events.NewNullSubscription()
|
||||
nullServerManager := imapservice.NewNullIMAPServerManager()
|
||||
nullIMAPServerManager := imapservice.NewNullIMAPServerManager()
|
||||
nullSMTPServerManager := smtp.NewNullServerManager()
|
||||
|
||||
user, err := New(
|
||||
ctx,
|
||||
@ -168,7 +170,8 @@ func withUser(tb testing.TB, ctx context.Context, _ *server.Server, m *proton.Ma
|
||||
vault.DefaultMaxSyncMemory,
|
||||
tb.TempDir(),
|
||||
manager,
|
||||
nullServerManager,
|
||||
nullIMAPServerManager,
|
||||
nullSMTPServerManager,
|
||||
nullEventSubscription,
|
||||
)
|
||||
require.NoError(tb, err)
|
||||
|
||||
Reference in New Issue
Block a user