summaryrefslogtreecommitdiff
path: root/routes.go
blob: b367cd9f3a8fcac631d1c3a36eb08d29c38b96ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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()
}