From f1387fc588b5943c276770d56ec7e1cef3cecaa1 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 30 Dec 2015 13:49:57 +0100 Subject: Mkdir and Create --- cmd/acme/main.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'cmd') diff --git a/cmd/acme/main.go b/cmd/acme/main.go index 0a979ec..762de5f 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -3,6 +3,7 @@ package main import ( "crypto/rsa" "flag" + "io" "log" "os" "path" @@ -12,6 +13,14 @@ import ( var confName = flag.String("conf", "acme.toml", "configuration file") +func mkdirCreate(fname string, dmode, fmode os.FileMode) (io.WriteCloser, error) { + if err := os.MkdirAll(path.Dir(fname), dmode); err != nil { + return nil, err + } + flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC + return os.OpenFile(fname, flags, fmode) +} + func chkKey(k PrivKey) (*rsa.PrivateKey, error) { key := k.KeyPath() if k.HasKey() { @@ -22,11 +31,7 @@ func chkKey(k PrivKey) (*rsa.PrivateKey, error) { defer fd.Close() return acme.LoadKey(fd) } else { - if err := os.MkdirAll(path.Dir(key), 0700); err != nil { - return nil, err - } - flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC - fd, err := os.OpenFile(key, flags, 0600) + fd, err := mkdirCreate(key, 0700, 0600) if err != nil { return nil, err } @@ -37,10 +42,7 @@ func chkKey(k PrivKey) (*rsa.PrivateKey, error) { func saveCert(k Cert, crt []byte) error { cert := k.CertPath() - if err := os.MkdirAll(path.Dir(cert), 0755); err != nil { - return err - } - fd, err := os.Create(cert) + fd, err := mkdirCreate(cert, 0755, 0644) if err != nil { return err } @@ -55,20 +57,20 @@ func main() { log.Fatal(err) } - for k, acc := range c.Account { + for k, acc := range conf.Account { acc.key, err = chkKey(acc) if err != nil { log.Fatal(err) } - c.Account[k] = acc + conf.Account[k] = acc } - for k, des := range c.Desire { + for k, des := range conf.Desire { des.key, err = chkKey(des) if err != nil { log.Fatal(err) } - c.Desire[k] = des + conf.Desire[k] = des } for k, des := range conf.Desire { -- cgit v1.2.3