diff options
Diffstat (limited to 'modules/caddyhttp/fileserver/browsetplcontext.go')
-rw-r--r-- | modules/caddyhttp/fileserver/browsetplcontext.go | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/modules/caddyhttp/fileserver/browsetplcontext.go b/modules/caddyhttp/fileserver/browsetplcontext.go index 6aa7501..7dc4f08 100644 --- a/modules/caddyhttp/fileserver/browsetplcontext.go +++ b/modules/caddyhttp/fileserver/browsetplcontext.go @@ -27,7 +27,7 @@ import ( "github.com/dustin/go-humanize" ) -func (fsrv *FileServer) directoryListing(files []os.FileInfo, canGoUp bool, root, urlPath string, repl *caddy.Replacer) browseTemplateContext { +func (fsrv *FileServer) directoryListing(files []os.FileInfo, canGoUp bool, root, urlPath string, repl *caddy.Replacer) (browseTemplateContext, error) { filesToHide := fsrv.transformHidePaths(repl) var dirCount, fileCount int @@ -52,11 +52,21 @@ func (fsrv *FileServer) directoryListing(files []os.FileInfo, canGoUp bool, root fileCount++ } + fileIsSymlink := isSymlink(f) + size := f.Size() + if fileIsSymlink { + info, err := os.Stat(name) + if err != nil { + return browseTemplateContext{}, err + } + size = info.Size() + } + fileInfos = append(fileInfos, fileInfo{ IsDir: isDir, - IsSymlink: isSymlink(f), - Name: f.Name(), - Size: f.Size(), + IsSymlink: fileIsSymlink, + Name: name, + Size: size, URL: u.String(), ModTime: f.ModTime().UTC(), Mode: f.Mode(), @@ -70,7 +80,7 @@ func (fsrv *FileServer) directoryListing(files []os.FileInfo, canGoUp bool, root Items: fileInfos, NumDirs: dirCount, NumFiles: fileCount, - } + }, nil } // browseTemplateContext provides the template context for directory listings. |