add conversion from account V1 to V2 (#9)
This commit is contained in:
parent
6d4b5a93d2
commit
1b19f4cbef
65
dumper/kv/convert.go
Normal file
65
dumper/kv/convert.go
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
package kv
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/go-acme/lego/certcrypto"
|
||||||
|
"github.com/go-acme/lego/registration"
|
||||||
|
"github.com/ldez/traefik-certs-dumper/dumper"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CertificateV1 is used to store certificate info
|
||||||
|
type CertificateV1 struct {
|
||||||
|
Domain string
|
||||||
|
CertURL string
|
||||||
|
CertStableURL string
|
||||||
|
PrivateKey []byte
|
||||||
|
Certificate []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccountV1 is used to store lets encrypt registration info
|
||||||
|
type AccountV1 struct {
|
||||||
|
Email string
|
||||||
|
Registration *registration.Resource
|
||||||
|
PrivateKey []byte
|
||||||
|
KeyType certcrypto.KeyType
|
||||||
|
DomainsCertificate DomainsCertificates
|
||||||
|
ChallengeCerts map[string]*ChallengeCert
|
||||||
|
HTTPChallenge map[string]map[string][]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// DomainsCertificates stores a certificate for multiple domains
|
||||||
|
type DomainsCertificates struct {
|
||||||
|
Certs []*DomainsCertificate
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChallengeCert stores a challenge certificate
|
||||||
|
type ChallengeCert struct {
|
||||||
|
Certificate []byte
|
||||||
|
PrivateKey []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// DomainsCertificate contains a certificate for multiple domains
|
||||||
|
type DomainsCertificate struct {
|
||||||
|
Domains dumper.Domain
|
||||||
|
Certificate *CertificateV1
|
||||||
|
}
|
||||||
|
|
||||||
|
// convertAccountV1ToV2 converts account information from version 1 to 2
|
||||||
|
func convertAccountV1ToV2(account *AccountV1) *dumper.StoredData {
|
||||||
|
storedData := &dumper.StoredData{}
|
||||||
|
storedData.Account = &dumper.Account{
|
||||||
|
PrivateKey: account.PrivateKey,
|
||||||
|
Registration: account.Registration,
|
||||||
|
Email: account.Email,
|
||||||
|
KeyType: account.KeyType,
|
||||||
|
}
|
||||||
|
var certs []*dumper.Certificate
|
||||||
|
for _, oldCert := range account.DomainsCertificate.Certs {
|
||||||
|
certs = append(certs, &dumper.Certificate{
|
||||||
|
Certificate: oldCert.Certificate.Certificate,
|
||||||
|
Domain: oldCert.Domains,
|
||||||
|
Key: oldCert.Certificate.PrivateKey,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
storedData.Certificates = certs
|
||||||
|
return storedData
|
||||||
|
}
|
||||||
@ -78,10 +78,10 @@ func getStoredDataFromGzip(pair *store.KVPair) (*dumper.StoredData, error) {
|
|||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
storedData := &dumper.StoredData{}
|
account := &AccountV1{}
|
||||||
if err := json.Unmarshal(acmeData, &storedData); err != nil {
|
if err := json.Unmarshal(acmeData, &account); err != nil {
|
||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return storedData, nil
|
return convertAccountV1ToV2(account), nil
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user