From 5089cb612a18c284cd2721ded51fbebb7faf1498 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 29 Feb 2016 19:49:34 +0100 Subject: Back to normal --- cmd/acme/config.go | 20 ++++---- cmd/acme/main.go | 136 +++++++++++++++++++++-------------------------------- 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) } } - */ + } + } } -- cgit v1.2.3