1
1
Fork 0
mirror of https://tildegit.org/solderpunk/molly-brown synced 2024-05-09 07:56:02 +02:00

Allow to disable directory listing

Signed-off-by: Solderpunk <solderpunk@posteo.net>
This commit is contained in:
Alex Kotov 2023-07-12 19:08:00 +02:00 committed by Solderpunk
parent 64a4ff72f0
commit 2068c3b02a
4 changed files with 9 additions and 1 deletions

View File

@ -262,6 +262,8 @@ instead of the default "Directory listing" title.
The following options allow users to configure various aspects of the The following options allow users to configure various aspects of the
directory listing: directory listing:
* `DirectoryListing` (boolean): if true, enable directory listing; if false,
return 51 Not found (default value true)
* `DirectorySort`: A string specifying how to sort files in * `DirectorySort`: A string specifying how to sort files in
automatically generated directory listings. Must be one of "Name", automatically generated directory listings. Must be one of "Name",
"Size" or "Time" (default value "Name"). "Size" or "Time" (default value "Name").

View File

@ -36,6 +36,7 @@ type UserConfig struct {
PermRedirects map[string]string PermRedirects map[string]string
MimeOverrides map[string]string MimeOverrides map[string]string
CertificateZones map[string][]string CertificateZones map[string][]string
DirectoryListing bool
DirectorySort string DirectorySort string
DirectorySubdirsFirst bool DirectorySubdirsFirst bool
DirectoryReverse bool DirectoryReverse bool
@ -70,6 +71,7 @@ func getConfig(filename string) (SysConfig, UserConfig, error) {
userConfig.DefaultEncoding = "" userConfig.DefaultEncoding = ""
userConfig.TempRedirects = make(map[string]string) userConfig.TempRedirects = make(map[string]string)
userConfig.PermRedirects = make(map[string]string) userConfig.PermRedirects = make(map[string]string)
userConfig.DirectoryListing = true
userConfig.DirectorySort = "Name" userConfig.DirectorySort = "Name"
userConfig.DirectorySubdirsFirst = false userConfig.DirectorySubdirsFirst = false

View File

@ -14,6 +14,7 @@
# #
## Directory listing ## Directory listing
# #
#DirectoryListing = true
#DirectorySort = "Time" #DirectorySort = "Time"
#DirectorySubdirsFirst = false #DirectorySubdirsFirst = false
#DirectoryReverse = true #DirectoryReverse = true

View File

@ -318,7 +318,7 @@ func serveDirectory(URL *url.URL, path string, logEntry *LogEntry, conn net.Conn
if err == nil && uint64(index_info.Mode().Perm())&0444 == 0444 { if err == nil && uint64(index_info.Mode().Perm())&0444 == 0444 {
serveFile(index_path, index_info, logEntry, conn, config) serveFile(index_path, index_info, logEntry, conn, config)
// Serve a generated listing // Serve a generated listing
} else { } else if config.DirectoryListing {
listing, err := generateDirectoryListing(URL, path, config) listing, err := generateDirectoryListing(URL, path, config)
if err != nil { if err != nil {
log.Println("Error generating listing for directory " + path + ": " + err.Error()) log.Println("Error generating listing for directory " + path + ": " + err.Error())
@ -329,6 +329,9 @@ func serveDirectory(URL *url.URL, path string, logEntry *LogEntry, conn net.Conn
conn.Write([]byte("20 text/gemini\r\n")) conn.Write([]byte("20 text/gemini\r\n"))
logEntry.Status = 20 logEntry.Status = 20
conn.Write([]byte(listing)) conn.Write([]byte(listing))
} else {
conn.Write([]byte("51 Not found!\r\n"))
logEntry.Status = 51
} }
} }