diff --git a/README.md b/README.md index ce4ba02..58406a5 100644 --- a/README.md +++ b/README.md @@ -235,6 +235,8 @@ directory listing: directory listings will use the first top-level heading (i.e. line beginning with "# ") in files with an extension of `GeminiExt` instead of the filename (default value false). +* `DirectoryLinks` (boolean): if false, symlinks will not be included + in the automatically generated directory listings. ### Redirects diff --git a/config.go b/config.go index aee8b15..42dbe57 100644 --- a/config.go +++ b/config.go @@ -29,6 +29,7 @@ type Config struct { DirectorySort string DirectoryReverse bool DirectoryTitles bool + DirectoryLinks bool } type MollyFile struct { @@ -41,6 +42,7 @@ type MollyFile struct { DirectorySort string DirectoryReverse bool DirectoryTitles bool + DirectoryLinks bool } func getConfig(filename string) (Config, error) { @@ -126,6 +128,7 @@ func parseMollyFiles(path string, config *Config, errorLog *log.Logger) { mollyFile.DirectorySort = config.DirectorySort mollyFile.DirectoryReverse = config.DirectoryReverse mollyFile.DirectoryTitles = config.DirectoryTitles + mollyFile.DirectoryLinks = config.DirectoryLinks // Build list of directories to check var dirs []string dirs = append(dirs, path) @@ -163,6 +166,7 @@ func parseMollyFiles(path string, config *Config, errorLog *log.Logger) { config.DirectorySort = mollyFile.DirectorySort config.DirectoryReverse = mollyFile.DirectoryReverse config.DirectoryTitles = mollyFile.DirectoryTitles + config.DirectoryLinks = mollyFile.DirectoryLinks for key, value := range mollyFile.TempRedirects { config.TempRedirects[key] = value } diff --git a/dirlist.go b/dirlist.go index eb9a870..6fab499 100644 --- a/dirlist.go +++ b/dirlist.go @@ -13,10 +13,21 @@ import ( func generateDirectoryListing(URL *url.URL, path string, config Config) (string, error) { var listing string - files, err := ioutil.ReadDir(path) + rfiles, err := ioutil.ReadDir(path) if err != nil { return listing, err } + var files []os.FileInfo + if config.DirectoryLinks { + files = rfiles + } else { + for _, file := range rfiles { + if file.Mode() & os.ModeSymlink == 0 { + files = append(files, file) + } + } + } + listing = "# Directory listing\n\n" // Override with .mollyhead file header_path := filepath.Join(path, ".mollyhead") diff --git a/example.conf b/example.conf index 6ccc3c5..931f5c6 100644 --- a/example.conf +++ b/example.conf @@ -17,6 +17,7 @@ #DirectorySort = "Time" #DirectoryReverse = true #DirectoryTitles = true +#DirectoryLinks = false # ## Dynamic content #