From cc47895d713b76abc3723710c5153edeb0f1bcd1 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Tue, 26 Dec 2017 13:57:04 -0800 Subject: [PATCH] Pass cfg and ds as params, helps #26 #67 --- inbucket.go | 3 +-- pop3d/listener.go | 14 ++++---------- smtpd/listener.go | 6 +++--- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/inbucket.go b/inbucket.go index 5d1c5ac..7593000 100644 --- a/inbucket.go +++ b/inbucket.go @@ -124,8 +124,7 @@ func main() { go httpd.Start(rootCtx) // Start POP3 server - // TODO pass datastore - pop3Server = pop3d.New(shutdownChan) + pop3Server = pop3d.New(config.GetPOP3Config(), shutdownChan, ds) go pop3Server.Start(rootCtx) // Startup SMTP server diff --git a/pop3d/listener.go b/pop3d/listener.go index 8536881..d1b11d5 100644 --- a/pop3d/listener.go +++ b/pop3d/listener.go @@ -14,6 +14,7 @@ import ( // Server defines an instance of our POP3 server type Server struct { + host string domain string maxIdleSeconds int dataStore smtpd.DataStore @@ -23,14 +24,9 @@ type Server struct { } // New creates a new Server struct -func New(shutdownChan chan bool) *Server { - // Get a new instance of the the FileDataStore - the locking and counting - // mechanisms are both global variables in the smtpd package. If that - // changes in the future, this should be modified to use the same DataStore - // instance. - ds := smtpd.DefaultFileDataStore() - cfg := config.GetPOP3Config() +func New(cfg config.POP3Config, shutdownChan chan bool, ds smtpd.DataStore) *Server { return &Server{ + host: fmt.Sprintf("%v:%v", cfg.IP4address, cfg.IP4port), domain: cfg.Domain, dataStore: ds, maxIdleSeconds: cfg.MaxIdleSeconds, @@ -41,9 +37,7 @@ func New(shutdownChan chan bool) *Server { // Start the server and listen for connections func (s *Server) Start(ctx context.Context) { - cfg := config.GetPOP3Config() - addr, err := net.ResolveTCPAddr("tcp4", fmt.Sprintf("%v:%v", - cfg.IP4address, cfg.IP4port)) + addr, err := net.ResolveTCPAddr("tcp4", s.host) if err != nil { log.Errorf("POP3 Failed to build tcp4 address: %v", err) s.emergencyShutdown() diff --git a/smtpd/listener.go b/smtpd/listener.go index 5fd4529..11c4632 100644 --- a/smtpd/listener.go +++ b/smtpd/listener.go @@ -18,6 +18,7 @@ import ( // Server holds the configuration and state of our SMTP server type Server struct { // Configuration + host string domain string domainNoStore string maxRecips int @@ -64,6 +65,7 @@ func NewServer( ds DataStore, msgHub *msghub.Hub) *Server { return &Server{ + host: fmt.Sprintf("%v:%v", cfg.IP4address, cfg.IP4port), domain: cfg.Domain, domainNoStore: strings.ToLower(cfg.DomainNoStore), maxRecips: cfg.MaxRecipients, @@ -80,9 +82,7 @@ func NewServer( // Start the listener and handle incoming connections func (s *Server) Start(ctx context.Context) { - cfg := config.GetSMTPConfig() - addr, err := net.ResolveTCPAddr("tcp4", fmt.Sprintf("%v:%v", - cfg.IP4address, cfg.IP4port)) + addr, err := net.ResolveTCPAddr("tcp4", s.host) if err != nil { log.Errorf("Failed to build tcp4 address: %v", err) s.emergencyShutdown()