Commit 38c24634 authored by Matthew Holt's avatar Matthew Holt

Fix ACME asset migration when renaming folders

parent df018ea6
...@@ -188,18 +188,25 @@ func moveStorage() { ...@@ -188,18 +188,25 @@ func moveStorage() {
log.Fatalf("[ERROR] Unable to migrate certificate storage: %v\n\nPlease follow instructions at:\nhttps://github.com/mholt/caddy/issues/902#issuecomment-228876011", err) log.Fatalf("[ERROR] Unable to migrate certificate storage: %v\n\nPlease follow instructions at:\nhttps://github.com/mholt/caddy/issues/902#issuecomment-228876011", err)
} }
// convert mixed case folder and file names to lowercase // convert mixed case folder and file names to lowercase
filepath.Walk(string(newPath), func(path string, info os.FileInfo, err error) error { var done bool // walking is recursive and preloads the file names, so we must restart walk after a change until no changes
// must be careful to only lowercase the base of the path, not the whole thing!! for !done {
base := filepath.Base(path) done = true
if lowerBase := strings.ToLower(base); base != lowerBase { filepath.Walk(string(newPath), func(path string, info os.FileInfo, err error) error {
lowerPath := filepath.Join(filepath.Dir(path), lowerBase) // must be careful to only lowercase the base of the path, not the whole thing!!
err = os.Rename(path, lowerPath) base := filepath.Base(path)
if err != nil { if lowerBase := strings.ToLower(base); base != lowerBase {
log.Fatalf("[ERROR] Unable to lower-case: %v\n\nPlease follow instructions at:\nhttps://github.com/mholt/caddy/issues/902#issuecomment-228876011", err) lowerPath := filepath.Join(filepath.Dir(path), lowerBase)
err = os.Rename(path, lowerPath)
if err != nil {
log.Fatalf("[ERROR] Unable to lower-case: %v\n\nPlease follow instructions at:\nhttps://github.com/mholt/caddy/issues/902#issuecomment-228876011", err)
}
// terminate traversal and restart since Walk needs the updated file list with new file names
done = false
return errors.New("start over")
} }
} return nil
return nil })
}) }
} }
// setVersion figures out the version information // setVersion figures out the version information
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment