diff options
| author | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:53 -0600 |
|---|---|---|
| committer | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:53 -0600 |
| commit | 1f519d05bfdf27814bcb9d4e81ed00b0c1068dd6 (patch) | |
| tree | d9c42ad62827d5494661968b59e723602816134e /routes.go | |
Initial commit.
A gemini server which drops privileges to the 'nobody' user, hosts files
including directory listings (index.gmi or a default listing), and runs
CGIs out of /cgi-bin/*.
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() +} |
