From b938499a5229f2daf77b44da960db5ec15cc3de8 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Feb 2016 00:12:43 +0100 Subject: Alter config format --- cmd/acme/config.go | 91 +++++++++++++++++++++++++++++------------------------ cmd/acme/dim13.yml | 51 ++++++++++++++---------------- cmd/acme/docker.yml | 34 +++++++++----------- cmd/acme/main.go | 1 + 4 files changed, 88 insertions(+), 89 deletions(-) diff --git a/cmd/acme/config.go b/cmd/acme/config.go index e7a95a9..85d6600 100644 --- a/cmd/acme/config.go +++ b/cmd/acme/config.go @@ -2,6 +2,7 @@ package main import ( "errors" + "fmt" "io/ioutil" "os/user" "path" @@ -22,22 +23,24 @@ type Config struct { ListenTLS string BaseDir string KeySize int - Provider map[string]string - Account map[string]account - Desire map[string]desire + Provider []provider Hook map[string]string } +type provider struct { + Directory string + Account []account +} + type account struct { Mail string Phone string KeySize int KeyFile string + Desire []desire } type desire struct { - Provider string - Account string Altnames []string KeySize int KeyFile string @@ -55,6 +58,15 @@ var ( errNoMail = errors.New("no mail specified") ) +func Dump(c *Config) error { + out, err := yaml.Marshal(c) + if err != nil { + return err + } + fmt.Println(string(out)) + return nil +} + func LoadConfig(fname string) (*Config, error) { conf, err := ioutil.ReadFile(fname) if err != nil { @@ -79,44 +91,41 @@ func LoadConfig(fname string) (*Config, error) { if c.KeySize == 0 { c.KeySize = defKeySize } - for k, v := range c.Account { - if v.KeySize == 0 { - v.KeySize = c.KeySize - } - if v.Mail == "" { - return nil, errNoMail - } - if v.KeyFile == "" { - return nil, errNoKey - } - if c.BaseDir != "" { - v.KeyFile = path.Join(c.BaseDir, v.KeyFile) - } - c.Account[k] = v - } - for k, v := range c.Desire { - if v.Provider == "" { - return nil, errNoProvider - } - if v.Account == "" { - return nil, errNoAccount - } - if v.KeySize == 0 { - v.KeySize = c.KeySize - } - if v.KeyFile == "" { - return nil, errNoKey - } - if v.CrtFile == "" { - return nil, errNoCrt - } - if c.BaseDir != "" { - v.KeyFile = path.Join(c.BaseDir, v.KeyFile) - v.CrtFile = path.Join(c.BaseDir, v.CrtFile) + for _, pro := range c.Provider { + for i, acc := range pro.Account { + if acc.KeySize == 0 { + acc.KeySize = c.KeySize + } + if acc.Mail == "" { + return nil, errNoMail + } + if acc.KeyFile == "" { + return nil, errNoKey + } + if c.BaseDir != "" { + acc.KeyFile = path.Join(c.BaseDir, acc.KeyFile) + } + pro.Account[i] = acc + for i, des := range acc.Desire { + if des.KeySize == 0 { + des.KeySize = c.KeySize + } + if des.KeyFile == "" { + return nil, errNoKey + } + if des.CrtFile == "" { + return nil, errNoCrt + } + if c.BaseDir != "" { + des.KeyFile = path.Join(c.BaseDir, des.KeyFile) + des.CrtFile = path.Join(c.BaseDir, des.CrtFile) + } + des.Altnames = checkWWW(des.Altnames) + acc.Desire[i] = des + } } - v.Altnames = checkWWW(v.Altnames) - c.Desire[k] = v } + return c, nil } diff --git a/cmd/acme/dim13.yml b/cmd/acme/dim13.yml index 096dd4a..1215621 100644 --- a/cmd/acme/dim13.yml +++ b/cmd/acme/dim13.yml @@ -1,37 +1,32 @@ listen: localhost:8080 listentls: localhost:8443 basedir: ~/.acme + provider: - letsencrypt: https://acme-v01.api.letsencrypt.org/directory -account: - postmaster: - mail: postmaster@dim13.org +- directory: https://acme-v01.api.letsencrypt.org/directory + account: + - mail: postmaster@dim13.org keyfile: private/postmaster.key - webmaster: - mail: webmaster@dim13.org + desire: + - altnames: + - mail.dim13.org + - smtp.dim13.org + - imap.dim13.org + keyfile: private/mail_dim13_org.key + crtfile: certs/mail_dim13_org.pem + hook: [ dovecot, smtpd ] + - mail: webmaster@dim13.org keyfile: private/webmaster.key -desire: - mail: - provider: letsencrypt - account: postmaster - altnames: - - mail.dim13.org - - smtp.dim13.org - - imap.dim13.org - keyfile: private/mail_dim13_org.key - crtfile: certs/mail_dim13_org.pem - hook: [ dovecot, smtpd ] - web: - provider: letsencrypt - account: webmaster - altnames: - - www.dim13.org - - mail.dim13.org - - git.dim13.org - - cvs.dim13.org - keyfile: private/www_dim13_org.key - crtfile: certs/www_dim13_org.pem - hook: [ nginx ] + desire: + - altnames: + - www.dim13.org + - mail.dim13.org + - git.dim13.org + - cvs.dim13.org + keyfile: private/www_dim13_org.key + crtfile: certs/www_dim13_org.pem + hook: [ nginx ] + hook: nginx: /etc/rc.d/nginx restart smtpd: /etc/rc.d/smtpd restart diff --git a/cmd/acme/docker.yml b/cmd/acme/docker.yml index f74493b..4a9749d 100644 --- a/cmd/acme/docker.yml +++ b/cmd/acme/docker.yml @@ -3,28 +3,22 @@ listen: localhost:8080 listentls: localhost:8443 basedir: .acme keysize: 2048 + provider: - les: https://acme-staging.api.letsencrypt.org/directory - le1: https://acme-v1.api.letsencrypt.org/directory -account: - webmaster: - mail: webmaster@docker.moccu.com +- directory: https://acme-staging.api.letsencrypt.org/directory + account: + - mail: webmaster@docker.moccu.com keyfile: private/webmaster.key - webmaster2: - mail: webmaster@docker.moccu.com + desire: + - altnames: [ docker.moccu.com, test.docker.moccu.com ] + keyfile: private/docker_moccu_com.key + crtfile: certs/docker_moccu_com.pem + - mail: webmaster2@docker.moccu.com keyfile: private/webmaster2.key + desire: + - altnames: [ www.docker.moccu.com, docker.moccu.com ] + keyfile: private/www_docker_moccu_com.key + crtfile: certs/www_docker_moccu_com.pem + hook: nginx: sudo service nginx reload -desire: - docker: - provider: les - account: webmaster - altnames: [ docker.moccu.com, test.docker.moccu.com ] - keyfile: private/docker_moccu_com.key - crtfile: certs/docker_moccu_com.pem - www: - provider: les - account: webmaster2 - altnames: [ www.docker.moccu.com, docker.moccu.com ] - keyfile: private/www_docker_moccu_com.key - crtfile: certs/www_docker_moccu_com.pem diff --git a/cmd/acme/main.go b/cmd/acme/main.go index c483434..1ef42b9 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -74,6 +74,7 @@ func main() { log.Fatal(err) } fmt.Printf("%+v\n", conf) + Dump(conf) return /* -- cgit v1.2.3