diff options
-rw-r--r-- | handler.go | 8 | ||||
-rw-r--r-- | input.go | 13 |
2 files changed, 16 insertions, 5 deletions
@@ -59,9 +59,11 @@ func (h Handler) getFilePath(rawURL string) (string, error) { return itemPath, nil } - indexPath := filepath.Join(itemPath, "index.gmi") - if isFile(indexPath) { - return indexPath, nil + for _, indexFile := range h.cfg.IndexFiles { + indexPath := filepath.Join(itemPath, indexFile) + if isFile(indexPath) { + return indexPath, nil + } } return "", gemini.Error{Err: fmt.Errorf("file not found"), Status: gemini.StatusNotFound} @@ -33,9 +33,14 @@ func getFlags() (Flags, error) { // Config holds the main configuration data for the server type Config struct { + // can be relative or absolute path SourceDir string `toml:"source"` - TLSCert string `toml:"tls_certificate"` - TLSKey string `toml:"tls_key"` + + // default to ["index.gmi"] + IndexFiles []string `toml:"index_files"` + + TLSCert string `toml:"tls_certificate"` + TLSKey string `toml:"tls_key"` } func getConfig(path string) (Config, error) { @@ -55,5 +60,9 @@ func getConfig(path string) (Config, error) { return cfg, fmt.Errorf("failed to get absolute source dir: %v", err) } + if len(cfg.IndexFiles) == 0 { + cfg.IndexFiles = []string{"index.gmi"} + } + return cfg, nil } |