aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/caddyhttp
diff options
context:
space:
mode:
authorSteffen Busch <[email protected]>2023-12-30 19:47:13 +0100
committerGitHub <[email protected]>2023-12-30 18:47:13 +0000
commit8f9ffc587e622b6e48e9816fe69bbb9cff3073fe (patch)
treebadaae67c28083966ad9c2716c849ce0ba6cb079 /modules/caddyhttp
parentf976c84d9e5b3fe5b30102e37527062e6c6a2378 (diff)
downloadcaddy-8f9ffc587e622b6e48e9816fe69bbb9cff3073fe.tar.gz
caddy-8f9ffc587e622b6e48e9816fe69bbb9cff3073fe.zip
fileserver: Add total file size to directory listing (#6003)
* browse: Add total file size to directory listing * Apply suggestion to remove "in " Co-authored-by: Matt Holt <[email protected]> --------- Co-authored-by: Matt Holt <[email protected]>
Diffstat (limited to 'modules/caddyhttp')
-rw-r--r--modules/caddyhttp/fileserver/browse.html3
-rw-r--r--modules/caddyhttp/fileserver/browsetplcontext.go14
2 files changed, 17 insertions, 0 deletions
diff --git a/modules/caddyhttp/fileserver/browse.html b/modules/caddyhttp/fileserver/browse.html
index e0e12969e..af1772bfd 100644
--- a/modules/caddyhttp/fileserver/browse.html
+++ b/modules/caddyhttp/fileserver/browse.html
@@ -790,6 +790,9 @@ footer {
<span class="meta-item">
<b>{{.NumFiles}}</b> file{{if ne 1 .NumFiles}}s{{end}}
</span>
+ <span class="meta-item">
+ <b>{{.HumanTotalFileSize}}</b> total
+ </span>
{{- if ne 0 .Limit}}
<span class="meta-item">
(of which only <b>{{.Limit}}</b> are displayed)
diff --git a/modules/caddyhttp/fileserver/browsetplcontext.go b/modules/caddyhttp/fileserver/browsetplcontext.go
index 682273c0a..a74fe3164 100644
--- a/modules/caddyhttp/fileserver/browsetplcontext.go
+++ b/modules/caddyhttp/fileserver/browsetplcontext.go
@@ -86,6 +86,10 @@ func (fsrv *FileServer) directoryListing(ctx context.Context, entries []fs.DirEn
// was already set above.
}
+ if !isDir {
+ tplCtx.TotalFileSize += size
+ }
+
u := url.URL{Path: "./" + name} // prepend with "./" to fix paths with ':' in the name
tplCtx.Items = append(tplCtx.Items, fileInfo{
@@ -129,6 +133,9 @@ type browseTemplateContext struct {
// The number of files (items that aren't directories) in the listing.
NumFiles int `json:"num_files"`
+ // The total size of all files in the listing.
+ TotalFileSize int64 `json:"total_file_size"`
+
// Sort column used
Sort string `json:"sort,omitempty"`
@@ -252,6 +259,13 @@ func (fi fileInfo) HumanSize() string {
return humanize.IBytes(uint64(fi.Size))
}
+// HumanTotalFileSize returns the total size of all files
+// in the listing as a human-readable string in IEC format
+// (i.e. power of 2 or base 1024).
+func (btc browseTemplateContext) HumanTotalFileSize() string {
+ return humanize.IBytes(uint64(btc.TotalFileSize))
+}
+
// HumanModTime returns the modified time of the file
// as a human-readable string given by format.
func (fi fileInfo) HumanModTime(format string) string {