aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-12 21:34:22 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-12 21:34:22 +0100
commit1f5a8df80ea671d8084e2636def253cc8d65822a (patch)
tree7a1551ba71a344523cab51630efd46b9da55974a /cmd
parentf249ea3e2595fdc0ffda3497b1c2c7546b87f6cc (diff)
Split
Diffstat (limited to 'cmd')
-rw-r--r--cmd/acme/main.go65
1 files changed, 50 insertions, 15 deletions
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)
+ }
}