From 1f5a8df80ea671d8084e2636def253cc8d65822a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 12 Jan 2016 21:34:22 +0100 Subject: Split --- cmd/acme/main.go | 65 +++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 15 deletions(-) (limited to 'cmd') diff --git a/cmd/acme/main.go b/cmd/acme/main.go index e21ee4a..123cfc7 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -10,14 +10,10 @@ import ( var confName = flag.String("conf", "acme.toml", "configuration file") -func main() { +func prepare(conf *Config) error { var wg sync.WaitGroup - - flag.Parse() - conf, err := LoadConfig(*confName) - if err != nil { - log.Fatal(err) - } + var err error + errc := make(chan error, 1) for k, acc := range conf.Account { wg.Add(1) @@ -30,11 +26,13 @@ func main() { log.Println("NewAccount", k) acc.Account, err = acme.NewAccount(acc.KeySize) if err != nil { - log.Fatal(err) + errc <- err + return } err = acc.Account.SaveKey(acc.Key) if err != nil { - log.Fatal(err) + errc <- err + return } acc.pending = true } @@ -51,7 +49,8 @@ func main() { log.Println("NewDesire", k) des.Desire, err = acme.NewDesire(des.Altnames, des.Webroot, des.KeySize) if err != nil { - log.Fatal(err) + errc <- err + return } conf.Desire[k] = des }(k, des) @@ -64,7 +63,8 @@ func main() { log.Println("NewProvider", k) pro.Provider, err = acme.NewProvider(pro.Directory) if err != nil { - log.Fatal(err) + errc <- err + return } conf.Provider[k] = pro }(k, pro) @@ -72,13 +72,24 @@ func main() { wg.Wait() - httpSolver(conf.Defaults.Listen) + select { + case err := <-errc: + return err + default: + return nil + } +} + +func execute(conf *Config) error { + var wg sync.WaitGroup + var err error + errc := make(chan error, 1) for k, des := range conf.Desire { if des.account.pending { err = des.provider.Register(des.account, des.account.Contacts) if err != nil { - log.Fatal("register", err) + return err } } @@ -92,12 +103,14 @@ func main() { err = des.provider.Authorize(des.account, des.Desire) if err != nil { - log.Fatal("authz", err) + errc <- err + return } err = des.provider.Cert(des.account, des.Desire) if err != nil { - log.Fatal("cert", err) + errc <- err + return } des.SaveKey(des.Key) @@ -106,4 +119,26 @@ func main() { } wg.Wait() + + select { + case err := <-errc: + return err + default: + return nil + } +} + +func main() { + flag.Parse() + conf, err := LoadConfig(*confName) + if err != nil { + log.Fatal(err) + } + if err := prepare(conf); err != nil { + log.Fatal(err) + } + httpSolver(conf.Defaults.Listen) + if err := execute(conf); err != nil { + log.Fatal(err) + } } -- cgit v1.2.3