From 574db1a1e0987341a77bdbadf8154a395f57bbb2 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Mon, 30 Sep 2019 14:44:51 +0200 Subject: [PATCH] fix: multiple resolvers. --- .golangci.toml | 2 +- dumper/file/file.go | 4 ++-- dumper/v2/dumper.go | 32 ++++++++++++++++++++------------ dumper/v2/storeddata.go | 35 ----------------------------------- hook/hook_test.go | 1 - 5 files changed, 23 insertions(+), 51 deletions(-) delete mode 100644 dumper/v2/storeddata.go diff --git a/.golangci.toml b/.golangci.toml index 472cac9..8e35927 100644 --- a/.golangci.toml +++ b/.golangci.toml @@ -35,7 +35,7 @@ exclude-use-default = false max-per-linter = 0 max-same-issues = 0 - exclude = [] + exclude = ["ST1000: at least one file in a package should have a package comment"] [[issues.exclude-rules]] path = "cmd/" linters = ["gochecknoglobals", "gochecknoinits"] diff --git a/dumper/file/file.go b/dumper/file/file.go index cf0dd7a..174bbce 100644 --- a/dumper/file/file.go +++ b/dumper/file/file.go @@ -60,8 +60,8 @@ func dumpV2(acmeFile string, baseConfig *dumper.BaseConfig) error { return err } - data := &acme.StoredData{} - if err = json.NewDecoder(source).Decode(data); err != nil { + data := map[string]*acme.StoredData{} + if err = json.NewDecoder(source).Decode(&data); err != nil { return err } diff --git a/dumper/v2/dumper.go b/dumper/v2/dumper.go index f8a197c..34e8077 100644 --- a/dumper/v2/dumper.go +++ b/dumper/v2/dumper.go @@ -17,7 +17,7 @@ const ( ) // Dump Dumps data to certificates. -func Dump(data *acme.StoredData, baseConfig *dumper.BaseConfig) error { +func Dump(data map[string]*acme.StoredData, baseConfig *dumper.BaseConfig) error { if baseConfig.Clean { err := cleanDir(baseConfig.DumpPath) if err != nil { @@ -35,24 +35,32 @@ func Dump(data *acme.StoredData, baseConfig *dumper.BaseConfig) error { return err } - for _, cert := range data.Certificates { - err := writeCert(baseConfig.DumpPath, cert.Certificate, baseConfig.CrtInfo, baseConfig.DomainSubDir) - if err != nil { - return err + for _, store := range data { + for _, cert := range store.Certificates { + err := writeCert(baseConfig.DumpPath, cert.Certificate, baseConfig.CrtInfo, baseConfig.DomainSubDir) + if err != nil { + return err + } + + err = writeKey(baseConfig.DumpPath, cert.Certificate, baseConfig.KeyInfo, baseConfig.DomainSubDir) + if err != nil { + return err + } } - err = writeKey(baseConfig.DumpPath, cert.Certificate, baseConfig.KeyInfo, baseConfig.DomainSubDir) + if store.Account == nil { + continue + } + + privateKeyPem := extractPEMPrivateKey(store.Account) + + err := ioutil.WriteFile(filepath.Join(baseConfig.DumpPath, keysSubDir, "letsencrypt"+baseConfig.KeyInfo.Ext), privateKeyPem, 0600) if err != nil { return err } } - if data.Account == nil { - return nil - } - - privateKeyPem := extractPEMPrivateKey(data.Account) - return ioutil.WriteFile(filepath.Join(baseConfig.DumpPath, keysSubDir, "letsencrypt"+baseConfig.KeyInfo.Ext), privateKeyPem, 0600) + return nil } func writeCert(dumpPath string, cert acme.Certificate, info dumper.FileInfo, domainSubDir bool) error { diff --git a/dumper/v2/storeddata.go b/dumper/v2/storeddata.go deleted file mode 100644 index a45e154..0000000 --- a/dumper/v2/storeddata.go +++ /dev/null @@ -1,35 +0,0 @@ -package v2 - -import ( - "github.com/go-acme/lego/v3/certcrypto" - "github.com/go-acme/lego/v3/registration" -) - -// StoredData represents the data managed by the Store -type StoredData struct { - Account *Account - Certificates []*Certificate - HTTPChallenges map[string]map[string][]byte - TLSChallenges map[string]*Certificate -} - -// Certificate is a struct which contains all data needed from an ACME certificate -type Certificate struct { - Domain Domain `json:"domain,omitempty"` - Certificate []byte `json:"certificate,omitempty"` - Key []byte `json:"key,omitempty"` -} - -// Domain holds a domain name with SANs -type Domain struct { - Main string `json:"main,omitempty"` - SANs []string `json:"sans,omitempty"` -} - -// Account is used to store lets encrypt registration info -type Account struct { - Email string - Registration *registration.Resource - PrivateKey []byte - KeyType certcrypto.KeyType -} diff --git a/hook/hook_test.go b/hook/hook_test.go index ec417b6..6c5c664 100644 --- a/hook/hook_test.go +++ b/hook/hook_test.go @@ -19,7 +19,6 @@ func Test_execute(t *testing.T) { for _, test := range testCases { t.Run(test.desc, func(t *testing.T) { - err := execute(test.command) if err != nil { t.Fatal(err)