mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 09:37:02 +00:00
More config cleanups for #86
This commit is contained in:
@@ -49,18 +49,18 @@ func init() {
|
||||
|
||||
func main() {
|
||||
// Command line flags.
|
||||
help := flag.Bool("help", false, "Displays this help")
|
||||
pidfile := flag.String("pidfile", "", "Write our PID into the specified file")
|
||||
logfile := flag.String("logfile", "stderr", "Write out log into the specified file")
|
||||
help := flag.Bool("help", false, "Displays help on flags and env variables.")
|
||||
pidfile := flag.String("pidfile", "", "Write our PID into the specified file.")
|
||||
logfile := flag.String("logfile", "stderr", "Write out log into the specified file.")
|
||||
flag.Usage = func() {
|
||||
fmt.Fprintln(os.Stderr, "Usage: inbucket [options]")
|
||||
flag.PrintDefaults()
|
||||
fmt.Fprintln(os.Stderr, "")
|
||||
config.Usage()
|
||||
}
|
||||
flag.Parse()
|
||||
if *help {
|
||||
flag.Usage()
|
||||
fmt.Fprintln(os.Stderr, "")
|
||||
config.Usage()
|
||||
return
|
||||
}
|
||||
// Process configuration.
|
||||
|
||||
@@ -11,11 +11,11 @@ import (
|
||||
|
||||
const (
|
||||
prefix = "inbucket"
|
||||
tableFormat = `Inbucket is configured via the environment. The following environment
|
||||
variables can be used:
|
||||
tableFormat = `Inbucket is configured via the environment. The following environment variables
|
||||
can be used:
|
||||
|
||||
KEY DEFAULT REQUIRED DESCRIPTION
|
||||
{{range .}}{{usage_key .}} {{usage_default .}} {{usage_required .}} {{usage_description .}}
|
||||
KEY DEFAULT DESCRIPTION
|
||||
{{range .}}{{usage_key .}} {{usage_default .}} {{usage_description .}}
|
||||
{{end}}`
|
||||
)
|
||||
|
||||
@@ -42,16 +42,16 @@ type SMTP struct {
|
||||
Domain string `required:"true" default:"inbucket" desc:"HELO domain"`
|
||||
DomainNoStore string `desc:"Load testing domain"`
|
||||
MaxRecipients int `required:"true" default:"200" desc:"Maximum RCPT TO per message"`
|
||||
MaxIdle time.Duration `required:"true" default:"300s" desc:"Idle network timeout"`
|
||||
MaxMessageBytes int `required:"true" default:"2048000" desc:"Maximum message size"`
|
||||
StoreMessages bool `required:"true" default:"true" desc:"Store incoming mail?"`
|
||||
Timeout time.Duration `required:"true" default:"300s" desc:"Idle network timeout"`
|
||||
}
|
||||
|
||||
// POP3 contains the POP3 server configuration.
|
||||
type POP3 struct {
|
||||
Addr string `required:"true" default:"0.0.0.0:1100" desc:"POP3 server IP4 host:port"`
|
||||
Domain string `required:"true" default:"inbucket" desc:"HELLO domain"`
|
||||
MaxIdle time.Duration `required:"true" default:"600s" desc:"Idle network timeout"`
|
||||
Timeout time.Duration `required:"true" default:"600s" desc:"Idle network timeout"`
|
||||
}
|
||||
|
||||
// Web contains the HTTP server configuration.
|
||||
|
||||
@@ -496,7 +496,7 @@ func (ses *Session) sendMessageTop(msg storage.Message, lineCount int) {
|
||||
|
||||
// Load the users mailbox
|
||||
func (ses *Session) loadMailbox() {
|
||||
m, err := ses.server.dataStore.GetMessages(ses.user)
|
||||
m, err := ses.server.store.GetMessages(ses.user)
|
||||
if err != nil {
|
||||
ses.logError("Failed to load messages for %v: %v", ses.user, err)
|
||||
}
|
||||
@@ -522,7 +522,7 @@ func (ses *Session) processDeletes() {
|
||||
for i, msg := range ses.messages {
|
||||
if !ses.retain[i] {
|
||||
ses.logTrace("Deleting %v", msg)
|
||||
if err := ses.server.dataStore.RemoveMessage(ses.user, msg.ID()); err != nil {
|
||||
if err := ses.server.store.RemoveMessage(ses.user, msg.ID()); err != nil {
|
||||
ses.logWarn("Error deleting %v: %v", msg, err)
|
||||
}
|
||||
}
|
||||
@@ -536,7 +536,7 @@ func (ses *Session) enterState(state State) {
|
||||
|
||||
// Calculate the next read or write deadline based on maxIdleSeconds
|
||||
func (ses *Session) nextDeadline() time.Time {
|
||||
return time.Now().Add(ses.server.maxIdle)
|
||||
return time.Now().Add(ses.server.timeout)
|
||||
}
|
||||
|
||||
// Send requested message, store errors in Session.sendError
|
||||
|
||||
@@ -15,20 +15,20 @@ import (
|
||||
type Server struct {
|
||||
host string
|
||||
domain string
|
||||
maxIdle time.Duration
|
||||
dataStore storage.Store
|
||||
timeout time.Duration
|
||||
store storage.Store
|
||||
listener net.Listener
|
||||
globalShutdown chan bool
|
||||
waitgroup *sync.WaitGroup
|
||||
}
|
||||
|
||||
// New creates a new Server struct
|
||||
func New(cfg config.POP3, shutdownChan chan bool, ds storage.Store) *Server {
|
||||
func New(cfg config.POP3, shutdownChan chan bool, store storage.Store) *Server {
|
||||
return &Server{
|
||||
host: cfg.Addr,
|
||||
domain: cfg.Domain,
|
||||
dataStore: ds,
|
||||
maxIdle: cfg.MaxIdle,
|
||||
store: store,
|
||||
timeout: cfg.Timeout,
|
||||
globalShutdown: shutdownChan,
|
||||
waitgroup: new(sync.WaitGroup),
|
||||
}
|
||||
|
||||
@@ -414,7 +414,7 @@ func (ss *Session) greet() {
|
||||
|
||||
// Calculate the next read or write deadline based on maxIdle
|
||||
func (ss *Session) nextDeadline() time.Time {
|
||||
return time.Now().Add(ss.server.maxIdle)
|
||||
return time.Now().Add(ss.server.timeout)
|
||||
}
|
||||
|
||||
// Send requested message, store errors in Session.sendError
|
||||
|
||||
@@ -366,7 +366,7 @@ func setupSMTPServer(ds storage.Store) (s *Server, buf *bytes.Buffer, teardown f
|
||||
Domain: "inbucket.local",
|
||||
DomainNoStore: "bitbucket.local",
|
||||
MaxRecipients: 5,
|
||||
MaxIdle: 5,
|
||||
Timeout: 5,
|
||||
MaxMessageBytes: 5000,
|
||||
StoreMessages: true,
|
||||
}
|
||||
|
||||
@@ -42,9 +42,9 @@ type Server struct {
|
||||
domain string
|
||||
domainNoStore string
|
||||
maxRecips int
|
||||
maxIdle time.Duration
|
||||
maxMessageBytes int
|
||||
storeMessages bool
|
||||
timeout time.Duration
|
||||
|
||||
// Dependencies
|
||||
apolicy *policy.Addressing // Address policy.
|
||||
@@ -89,7 +89,7 @@ func NewServer(
|
||||
domain: cfg.Domain,
|
||||
domainNoStore: strings.ToLower(cfg.DomainNoStore),
|
||||
maxRecips: cfg.MaxRecipients,
|
||||
maxIdle: cfg.MaxIdle,
|
||||
timeout: cfg.Timeout,
|
||||
maxMessageBytes: cfg.MaxMessageBytes,
|
||||
storeMessages: cfg.StoreMessages,
|
||||
globalShutdown: globalShutdown,
|
||||
|
||||
Reference in New Issue
Block a user