refactor: Reorganize SMTP2Shoutrrr code into separate files

This commit is contained in:
Felipe M 2024-12-02 16:23:49 +01:00
parent 9625807106
commit 31f2102031
Signed by: fmartingr
GPG key ID: CCFBC5637D4000A8
4 changed files with 232 additions and 222 deletions

50
server.go Normal file
View file

@ -0,0 +1,50 @@
package smtp2shoutrrr
import (
"context"
"fmt"
"log/slog"
"time"
"git.nakama.town/fmartingr/gotoolkit/model"
"github.com/emersion/go-smtp"
)
var _ model.Server = (*smtpServer)(nil)
type smtpServer struct {
backend *smtp.Server
config Config
}
func (s *smtpServer) IsEnabled() bool {
return true
}
func (s *smtpServer) Start(_ context.Context) error {
slog.Info("Started SMTP server", slog.String("addr", s.backend.Addr))
return s.backend.ListenAndServe()
}
func (s *smtpServer) Stop(ctx context.Context) error {
slog.Info("Stopping SMTP server")
return s.backend.Shutdown(ctx)
}
func NewSMTPServer(config *Config) model.Server {
be := &Backend{
config: config,
}
smtpBackend := smtp.NewServer(be)
smtpBackend.Addr = fmt.Sprintf(":%d", config.Port)
smtpBackend.WriteTimeout = 10 * time.Second
smtpBackend.ReadTimeout = 10 * time.Second
smtpBackend.MaxMessageBytes = 1024 * 1024
smtpBackend.MaxRecipients = 50
smtpBackend.AllowInsecureAuth = true
return &smtpServer{
backend: smtpBackend,
}
}