|
@@ -27,7 +27,6 @@ import (
|
|
|
"encoding/pem"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
- "html/template"
|
|
|
"io"
|
|
|
"io/fs"
|
|
|
"net"
|
|
@@ -335,30 +334,6 @@ func CleanPathWithBase(base, p string) string {
|
|
|
return path.Clean(p)
|
|
|
}
|
|
|
|
|
|
-// LoadTemplate parses the given template paths.
|
|
|
-// It behaves like template.Must but it writes a log before exiting.
|
|
|
-// You can optionally provide a base template (e.g. to define some custom functions)
|
|
|
-func LoadTemplate(base *template.Template, paths ...string) *template.Template {
|
|
|
- var t *template.Template
|
|
|
- var err error
|
|
|
-
|
|
|
- if base != nil {
|
|
|
- base, err = base.Clone()
|
|
|
- if err == nil {
|
|
|
- t, err = base.ParseFiles(paths...)
|
|
|
- }
|
|
|
- } else {
|
|
|
- t, err = template.ParseFiles(paths...)
|
|
|
- }
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- logger.ErrorToConsole("error loading required template: %v", err)
|
|
|
- logger.Error(logSender, "", "error loading required template: %v", err)
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- return t
|
|
|
-}
|
|
|
-
|
|
|
// IsFileInputValid returns true this is a valid file name.
|
|
|
// This method must be used before joining a file name, generally provided as
|
|
|
// user input, with a directory
|
|
@@ -370,36 +345,6 @@ func IsFileInputValid(fileInput string) bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-// FindSharedDataPath searches for the specified directory name in searchDir
|
|
|
-// and in system-wide shared data directories.
|
|
|
-// If name is an absolute path it is returned unmodified.
|
|
|
-func FindSharedDataPath(name, searchDir string) string {
|
|
|
- if !IsFileInputValid(name) {
|
|
|
- return ""
|
|
|
- }
|
|
|
- if name != "" && !filepath.IsAbs(name) {
|
|
|
- searchList := []string{searchDir}
|
|
|
- if additionalSharedDataSearchPath != "" {
|
|
|
- searchList = append(searchList, additionalSharedDataSearchPath)
|
|
|
- }
|
|
|
- if runtime.GOOS != osWindows {
|
|
|
- searchList = append(searchList, "/usr/share/sftpgo")
|
|
|
- searchList = append(searchList, "/usr/local/share/sftpgo")
|
|
|
- }
|
|
|
- searchList = RemoveDuplicates(searchList, false)
|
|
|
- for _, basePath := range searchList {
|
|
|
- res := filepath.Join(basePath, name)
|
|
|
- _, err := os.Stat(res)
|
|
|
- if err == nil {
|
|
|
- logger.Debug(logSender, "", "found share data path for name %#v: %#v", name, res)
|
|
|
- return res
|
|
|
- }
|
|
|
- }
|
|
|
- return filepath.Join(searchDir, name)
|
|
|
- }
|
|
|
- return name
|
|
|
-}
|
|
|
-
|
|
|
// CleanDirInput sanitizes user input for directories.
|
|
|
// On Windows it removes any trailing `"`.
|
|
|
// We try to help windows users that set an invalid path such as "C:\ProgramData\SFTPGO\".
|