aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-29 19:49:34 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-29 19:49:34 +0100
commit5089cb612a18c284cd2721ded51fbebb7faf1498 (patch)
tree985ad78effdd281014027da1bf90559b6da3fb13
parentc67bb0e887ec625dc0ae5ab42b5b9d4a15380271 (diff)
Back to normal
-rw-r--r--cmd/acme/config.go20
-rw-r--r--cmd/acme/main.go136
2 files changed, 64 insertions, 92 deletions
diff --git a/cmd/acme/config.go b/cmd/acme/config.go
index 176891e..8aad4fa 100644
--- a/cmd/acme/config.go
+++ b/cmd/acme/config.go
@@ -144,18 +144,20 @@ func LoadConfig(fname string) (*Config, error) {
return c, nil
}
-func (c *Config) Mkdirs() error {
- key := keyPath
- crt := crtPath
- if c.BaseDir != "" {
- key = path.Join(c.BaseDir, keyPath)
- crt = path.Join(c.BaseDir, crtPath)
- }
- err := os.MkdirAll(key, 0700)
+type Dirmaker interface {
+ Mkdirs() error
+}
+
+func (a account) Mkdirs() error {
+ return os.MkdirAll(path.Dir(a.KeyFile), 0700)
+}
+
+func (d domain) Mkdirs() error {
+ err := os.MkdirAll(path.Dir(d.KeyFile), 0700)
if err != nil {
return err
}
- return os.MkdirAll(crt, 0755)
+ return os.MkdirAll(path.Dir(d.CrtFile), 0755)
}
func replace(s string) string {
diff --git a/cmd/acme/main.go b/cmd/acme/main.go
index a9f4027..78ec831 100644
--- a/cmd/acme/main.go
+++ b/cmd/acme/main.go
@@ -3,10 +3,11 @@ package main
import (
"flag"
- "fmt"
"log"
"os"
"runtime/trace"
+
+ "dim13.org/acme"
)
var (
@@ -14,50 +15,6 @@ var (
tracing = flag.String("trace", "", "trace output file")
)
-/*
-func prepare(conf *Config) error {
- var err error
-
- for k, acc := range conf.Account {
- log.Println("LoadAccount", k)
- acc.Account, err = acme.LoadAccount(acc.Key)
- if err != nil {
- log.Println("NewAccount", k)
- acc.Account, err = acme.NewAccount(acc.KeySize)
- if err != nil {
- return err
- }
- if err := acc.Account.Save(acc.Key); err != nil {
- return err
- }
- }
- acc.Contacts.AddMail(acc.Mail)
- acc.Contacts.AddPhone(acc.Phone)
- conf.Account[k] = acc
- }
-
- for k, des := range conf.Desire {
- log.Println("NewDesire", k)
- des.Desire, err = acme.NewDesire(des.Altnames, des.KeySize)
- if err != nil {
- return err
- }
- conf.Desire[k] = des
- }
-
- for k, pro := range conf.Provider {
- log.Println("DialProvider", k)
- pro.Provider, err = acme.DialProvider(pro.Directory)
- if err != nil {
- return err
- }
- conf.Provider[k] = pro
- }
-
- return nil
-}
-*/
-
func main() {
flag.Parse()
if *tracing != "" {
@@ -73,48 +30,60 @@ func main() {
if err != nil {
log.Fatal(err)
}
- fmt.Printf("%+v\n", conf)
- fmt.Println(DumpYAML(conf))
- //fmt.Println(DumpTOML(conf))
- return
- /*
- var httpSol, tlsSol acme.Solver
- if conf.Defaults.Listen != "" {
- httpSol, err = acme.NewHTTPSolver(conf.Defaults.Listen)
- if err != nil {
- log.Println(err)
- }
+ var httpSol, tlsSol acme.Solver
+ if conf.Listen != "" {
+ httpSol, err = acme.NewHTTPSolver(conf.Listen)
+ if err != nil {
+ log.Println(err)
}
- if conf.Defaults.ListenTLS != "" {
- tlsSol, err = acme.NewTLSSolver(conf.Defaults.ListenTLS)
- if err != nil {
- log.Println(err)
- }
+ }
+ if conf.ListenTLS != "" {
+ tlsSol, err = acme.NewTLSSolver(conf.ListenTLS)
+ if err != nil {
+ log.Println(err)
}
- if err := prepare(conf); err != nil {
- log.Fatal(err)
- }
+ }
- // register accs first
- for k, des := range conf.Desire {
- if des.account.registered {
- continue
- }
- log.Println("register", k)
- err := des.provider.Register(des.account, des.account.Contacts)
+ for _, v := range conf.Provider {
+ log.Println("Dial", v.Directory)
+ prov, err := acme.DialProvider(v.Directory)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ for _, v := range v.Account {
+ log.Println("Load", v.KeyFile)
+ acc, err := acme.LoadAccount(v.KeyFile)
+ if err != nil {
+ log.Println("New", v.KeyFile)
+ acc, err = acme.NewAccount(v.KeySize)
if err != nil {
log.Fatal(err)
}
- des.account.registered = true
+ if err := acc.Save(v.KeyFile); err != nil {
+ log.Fatal(err)
+ }
+ }
+ con := acme.Contacts{}
+ con.AddMail(v.Mail)
+ con.AddPhone(v.Phone)
+
+ log.Println("Register", con)
+ err = prov.Register(acc, con)
+ if err != nil {
+ log.Fatal(err)
}
- // satisfice
- for k, des := range conf.Desire {
- log.Println("satisfice", k)
- if des.Webroot != "" {
- wrSol := acme.NewWebrootSolver(des.Webroot)
- des.RegisterSolver(wrSol)
+ for _, v := range v.Domain {
+ log.Println("Satisfice", v.Altnames)
+ des, err := acme.NewDesire(v.Altnames, v.KeySize)
+ if err != nil {
+ log.Fatal(err)
+ }
+ if v.Webroot != "" {
+ sol := acme.NewWebrootSolver(v.Webroot)
+ des.RegisterSolver(sol)
} else if httpSol != nil {
des.RegisterSolver(httpSol)
}
@@ -122,18 +91,19 @@ func main() {
des.RegisterSolver(tlsSol)
}
if !des.HasSolver() {
- log.Fatal("no Solver available")
+ log.Fatal("no solver")
}
- if err := des.provider.Authorize(des.account, des.Desire); err != nil {
+ if err := prov.Authorize(acc, des); err != nil {
log.Fatal(err)
}
- if err := des.provider.Bundle(des.account, des.Desire); err != nil {
+ if err := prov.Bundle(acc, des); err != nil {
log.Fatal(err)
}
- if err := des.Save(des.Cert, des.Key); err != nil {
+ if err := des.Save(v.CrtFile, v.KeyFile); err != nil {
log.Fatal(err)
}
}
- */
+ }
+ }
}