photoprism/pkg/fs/case.go
Michael Mayer 91774c4068 Security: Create new files without execution permission #2809
Signed-off-by: Michael Mayer <michael@photoprism.app>
2022-10-31 15:01:48 +01:00

28 lines
634 B
Go

package fs
import (
"fmt"
"os"
"path/filepath"
)
// CaseInsensitive tests if a storage path is case-insensitive.
func CaseInsensitive(storagePath string) (result bool, err error) {
tmpName := filepath.Join(storagePath, ".caseTest.tmp")
if err = os.WriteFile(tmpName, []byte("{}"), ModeFile); err != nil {
return false, fmt.Errorf("%s not writable", filepath.Base(storagePath))
}
defer os.Remove(tmpName)
result = FileExists(filepath.Join(storagePath, ".CASETEST.TMP"))
return result, err
}
// IgnoreCase enables the case-insensitive mode.
func IgnoreCase() {
ignoreCase = true
FileTypes = Extensions.Types(true)
}