diff options
Diffstat (limited to 'routes.go')
| -rw-r--r-- | routes.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/routes.go b/routes.go new file mode 100644 index 0000000..b367cd9 --- /dev/null +++ b/routes.go @@ -0,0 +1,31 @@ +package main + +import ( + "os" + + sr "tildegit.org/tjp/sliderule" + "tildegit.org/tjp/sliderule/contrib/cgi" + "tildegit.org/tjp/sliderule/contrib/fs" +) + +func geminiRouter(conf config) sr.Handler { + fsys := os.DirFS(conf.geminiRoot) + + router := &sr.Router{} + + router.Route( + "/*", + sr.FallthroughHandler( + fs.GeminiFileHandler(fsys), + fs.GeminiDirectoryDefault(fsys, "index.gmi"), + fs.GeminiDirectoryListing(fsys, nil), + ), + ) + + router.Route( + "/cgi-bin/*", + cgi.GeminiCGIDirectory("/cgi-bin/", "./cgi-bin/"), + ) + + return router.Handler() +} |
