From 1001ead866b3656a8d46d144cf2b9c820e441d60 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Thu, 25 Apr 2019 21:22:33 +0200 Subject: [PATCH] fix: wildcard certificates names on Windows. --- dumper/dumper.go | 16 ++++++++-------- dumper/filename.go | 7 +++++++ dumper/filename_windows.go | 9 +++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 dumper/filename.go create mode 100644 dumper/filename_windows.go diff --git a/dumper/dumper.go b/dumper/dumper.go index cc1b655..066f151 100644 --- a/dumper/dumper.go +++ b/dumper/dumper.go @@ -23,7 +23,7 @@ type FileInfo struct { // Dump Dumps data to certificates. func Dump(data *StoredData, baseConfig *BaseConfig) error { if baseConfig.Clean { - err := clean(baseConfig.DumpPath) + err := cleanDir(baseConfig.DumpPath) if err != nil { return err } @@ -61,10 +61,10 @@ func Dump(data *StoredData, baseConfig *BaseConfig) error { } func writeCert(dumpPath string, cert *Certificate, info FileInfo, domainSubDir bool) error { - certPath := filepath.Join(dumpPath, certsSubDir, cert.Domain.Main+info.Ext) + certPath := filepath.Join(dumpPath, certsSubDir, safeName(cert.Domain.Main+info.Ext)) if domainSubDir { - certPath = filepath.Join(dumpPath, cert.Domain.Main, info.Name+info.Ext) - if err := os.MkdirAll(filepath.Join(dumpPath, cert.Domain.Main), 0755); err != nil { + certPath = filepath.Join(dumpPath, safeName(cert.Domain.Main), info.Name+info.Ext) + if err := os.MkdirAll(filepath.Join(dumpPath, safeName(cert.Domain.Main)), 0755); err != nil { return err } } @@ -73,10 +73,10 @@ func writeCert(dumpPath string, cert *Certificate, info FileInfo, domainSubDir b } func writeKey(dumpPath string, cert *Certificate, info FileInfo, domainSubDir bool) error { - keyPath := filepath.Join(dumpPath, keysSubDir, cert.Domain.Main+info.Ext) + keyPath := filepath.Join(dumpPath, keysSubDir, safeName(cert.Domain.Main+info.Ext)) if domainSubDir { - keyPath = filepath.Join(dumpPath, cert.Domain.Main, info.Name+info.Ext) - if err := os.MkdirAll(filepath.Join(dumpPath, cert.Domain.Main), 0755); err != nil { + keyPath = filepath.Join(dumpPath, safeName(cert.Domain.Main), info.Name+info.Ext) + if err := os.MkdirAll(filepath.Join(dumpPath, safeName(cert.Domain.Main)), 0755); err != nil { return err } } @@ -104,7 +104,7 @@ func extractPEMPrivateKey(account *Account) []byte { return pem.EncodeToMemory(block) } -func clean(dumpPath string) error { +func cleanDir(dumpPath string) error { _, errExists := os.Stat(dumpPath) if os.IsNotExist(errExists) { return nil diff --git a/dumper/filename.go b/dumper/filename.go new file mode 100644 index 0000000..0d37a67 --- /dev/null +++ b/dumper/filename.go @@ -0,0 +1,7 @@ +// +build !windows + +package dumper + +func safeName(filename string) string { + return filename +} diff --git a/dumper/filename_windows.go b/dumper/filename_windows.go new file mode 100644 index 0000000..7c48b2b --- /dev/null +++ b/dumper/filename_windows.go @@ -0,0 +1,9 @@ +// +build windows + +package dumper + +import "strings" + +func safeName(filename string) string { + return strings.ReplaceAll(filename, "*", "_") +}