From 7fd0638ae46c5b2f1adba8c3f7573d4867bf3807 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Wed, 24 Dec 2014 19:25:02 +0000 Subject: [PATCH] Clean up flags --- docs/CONFIG.md | 29 +++++++++++++++++++---------- main.go | 19 +++++++++++++++---- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/docs/CONFIG.md b/docs/CONFIG.md index c7f5596..115eb77 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -3,13 +3,22 @@ Configuring MailHog You can configure MailHog using command line options or environment variables: -| Environment | Command line | Default | Description -| ------------------- | ------------- | --------------- | ----------- -| MH_CORS_ORIGIN | -cors-origin | | If set, a Access-Control-Allow-Origin header is returned for API endpoints -| MH_HOSTNAME | -hostname | mailhog.example | Hostname to use for EHLO/HELO and message IDs -| MH_HTTP_BIND_ADDR | -httpbindaddr | 0.0.0.0:8025 | Interface and port for HTTP server to bind to -| MH_MONGO_COLLECTION | -mongocoll | messages | MongoDB collection name for message storage -| MH_MONGO_DB | -mongodb | mailhog | MongoDB database name for message storage -| MH_MONGO_URI | -mongouri | 127.0.0.1:27017 | MongoDB host and port -| MH_SMTP_BIND_ADDR | -smtpbindaddr | 0.0.0.0:1025 | Interface and port for SMTP server to bind to -| MH_STORAGE | -storage | memory | Set message storage: memory / mongodb +| Environment | Command line | Default | Description +| ------------------- | --------------- | --------------- | ----------- +| MH_CORS_ORIGIN | -cors-origin | | If set, a Access-Control-Allow-Origin header is returned for API endpoints +| MH_HOSTNAME | -hostname | mailhog.example | Hostname to use for EHLO/HELO and message IDs +| MH_API_BIND_ADDR | -api-bind-addr | 0.0.0.0:8025 | Interface and port for HTTP UI server to bind to +| MH_UI_BIND_ADDR | -ui-bind-addr | 0.0.0.0:8025 | Interface and port for HTTP API server to bind to +| MH_MONGO_COLLECTION | -mongo-coll | messages | MongoDB collection name for message storage +| MH_MONGO_DB | -mongo-db | mailhog | MongoDB database name for message storage +| MH_MONGO_URI | -mongo-uri | 127.0.0.1:27017 | MongoDB host and port +| MH_SMTP_BIND_ADDR | -smtp-bind-addr | 0.0.0.0:1025 | Interface and port for SMTP server to bind to +| MH_STORAGE | -storage | memory | Set message storage: memory / mongodb + +#### Note on HTTP bind addresses + +If `api-bind-addr` and `ui-bind-addr` are identical, a single listener will +be used allowing both to co-exist on one port. + +The values must match in a string comparison. Resolving to the same host and +port combination isn't enough. diff --git a/main.go b/main.go index 7af8fe1..94067da 100644 --- a/main.go +++ b/main.go @@ -31,11 +31,22 @@ func main() { configure() exitCh = make(chan int) - cb := func(app *gotcha.App) { - web.CreateWeb(uiconf, app) - api.CreateAPIv1(apiconf, app) + if uiconf.UIBindAddr == apiconf.APIBindAddr { + cb := func(app *gotcha.App) { + web.CreateWeb(uiconf, app) + api.CreateAPIv1(apiconf, app) + } + go http.Listen(uiconf.UIBindAddr, assets.Asset, exitCh, cb) + } else { + cb1 := func(app *gotcha.App) { + api.CreateAPIv1(apiconf, app) + } + cb2 := func(app *gotcha.App) { + web.CreateWeb(uiconf, app) + } + go http.Listen(apiconf.APIBindAddr, assets.Asset, exitCh, cb1) + go http.Listen(uiconf.UIBindAddr, assets.Asset, exitCh, cb2) } - go http.Listen(uiconf.HTTPBindAddr, assets.Asset, exitCh, cb) go smtp.Listen(apiconf, exitCh) for {