Add file size and modification dates to automatically generated directory listings.

This commit is contained in:
Solderpunk 2020-06-06 21:28:12 +02:00
parent 11beddcfb1
commit 433c43e98e
1 changed files with 31 additions and 1 deletions

View File

@ -217,11 +217,41 @@ func generateDirectoryListing(path string) string {
if uint64(file.Mode().Perm())&0444 != 0444 {
continue
}
listing += fmt.Sprintf("=> %s %s\n", url.PathEscape(file.Name()), file.Name())
listing += fmt.Sprintf("=> %s %s\n", url.PathEscape(file.Name()), generatePrettyFileLabel(file))
}
return listing
}
func generatePrettyFileLabel(info os.FileInfo) string {
var size string
if info.IsDir() {
size = " "
} else if info.Size() < 1024 {
size = fmt.Sprintf("%4d B", info.Size())
} else if info.Size() < (1024 << 10) {
size = fmt.Sprintf("%4d KiB", info.Size() >> 10)
} else if info.Size() < 1024 << 20 {
size = fmt.Sprintf("%4d MiB", info.Size() >> 20)
} else if info.Size() < 1024 << 30 {
size = fmt.Sprintf("%4d GiB", info.Size() >> 30)
} else if info.Size() < 1024 << 40 {
size = fmt.Sprintf("%4d TiB", info.Size() >> 40)
} else {
size = "GIGANTIC"
}
var name string
if len(info.Name()) > 40 {
name = info.Name()[:36] + "..."
} else {
name = info.Name()
}
if info.IsDir() {
name += "/"
}
return fmt.Sprintf("%-40s %s %v", name, size, info.ModTime().Format("Jan _2 2006"))
}
func serveFile(path string, log *LogEntry, conn net.Conn) {
// Get MIME type of files
ext := filepath.Ext(path)