aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-26 00:12:43 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-26 00:12:43 +0100
commitb938499a5229f2daf77b44da960db5ec15cc3de8 (patch)
treeb2fcbfaba8e9ef993fe2d6fef601e304940dc210
parentd527e9ad55809f37d3107fc89a2210c25627a573 (diff)
Alter config format
-rw-r--r--cmd/acme/config.go91
-rw-r--r--cmd/acme/dim13.yml51
-rw-r--r--cmd/acme/docker.yml34
-rw-r--r--cmd/acme/main.go1
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
/*