func main() { cmd.Go() }
func main() { if len(os.Args) > 1 && os.Args[1] == "sendmail" { args := os.Args os.Args = []string{args[0]} if len(args) > 2 { os.Args = append(os.Args, args[2:]...) } cmd.Go() return } if len(os.Args) > 1 && os.Args[1] == "bcrypt" { var pw string if len(os.Args) > 2 { pw = os.Args[2] } else { // TODO: read from stdin } b, err := bcrypt.GenerateFromPassword([]byte(pw), 4) if err != nil { log.Fatalf("error bcrypting password: %s", err) os.Exit(1) } fmt.Println(string(b)) os.Exit(0) } configure() if comconf.AuthFile != "" { http.AuthFile(comconf.AuthFile) } exitCh = make(chan int) if uiconf.UIBindAddr == apiconf.APIBindAddr { cb := func(r gohttp.Handler) { web.CreateWeb(uiconf, r.(*pat.Router), assets.Asset) api.CreateAPIv1(apiconf, r.(*pat.Router)) api.CreateAPIv2(apiconf, r.(*pat.Router)) } go http.Listen(uiconf.UIBindAddr, assets.Asset, exitCh, cb) } else { cb1 := func(r gohttp.Handler) { api.CreateAPIv1(apiconf, r.(*pat.Router)) api.CreateAPIv2(apiconf, r.(*pat.Router)) } cb2 := func(r gohttp.Handler) { web.CreateWeb(uiconf, r.(*pat.Router), assets.Asset) } go http.Listen(apiconf.APIBindAddr, assets.Asset, exitCh, cb1) go http.Listen(uiconf.UIBindAddr, assets.Asset, exitCh, cb2) } go smtp.Listen(apiconf, exitCh) for { select { case <-exitCh: log.Printf("Received exit signal") os.Exit(0) } } }