From e42716c43e0241e9d6d2ca7f7efe8d33a27127c2 Mon Sep 17 00:00:00 2001 From: tjpcc Date: Wed, 3 May 2023 13:21:34 -0600 Subject: hide private files from the FS - ResolveFile acts like ErrNotFound - ResolveDirectory acts like ErrNotFound - RenderDirectoryListing strips out dot-prefixed entries --- contrib/fs/dir.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'contrib/fs/dir.go') diff --git a/contrib/fs/dir.go b/contrib/fs/dir.go index bb2d933..69d17e9 100644 --- a/contrib/fs/dir.go +++ b/contrib/fs/dir.go @@ -24,6 +24,10 @@ func ResolveDirectory( path = "." } + if isPrivate(path) { + return "", nil, nil + } + file, err := fileSystem.Open(path) if isNotFound(err) { return "", nil, nil @@ -124,6 +128,13 @@ func dirlistNamespace(path string, dirFile fs.ReadDirFile, server sr.Server) (ma return nil, err } + for i := len(entries) - 1; i >= 0; i-- { + if strings.HasPrefix(entries[i].Name(), ".") { + copy(entries[i:], entries[i+1:]) + entries = entries[:len(entries)-1] + } + } + sort.Slice(entries, func(i, j int) bool { return entries[i].Name() < entries[j].Name() }) -- cgit v1.2.3