summaryrefslogtreecommitdiff
path: root/routes.go
diff options
context:
space:
mode:
authortjpcc <tjp@ctrl-c.club>2023-09-08 14:54:59 -0600
committertjpcc <tjp@ctrl-c.club>2023-09-08 14:54:59 -0600
commit4c0e1bc89de2a60baaa098c049cf69bac8537055 (patch)
tree69412a5d844aebd706862c9548090c1152a27a8e /routes.go
parentac353033162038a4bf6f837bdfeb869f22e7160b (diff)
finger support
Diffstat (limited to 'routes.go')
-rw-r--r--routes.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/routes.go b/routes.go
index 0683924..35bdfc1 100644
--- a/routes.go
+++ b/routes.go
@@ -13,7 +13,9 @@ import (
"tildegit.org/tjp/sliderule/contrib/cgi"
"tildegit.org/tjp/sliderule/contrib/fs"
"tildegit.org/tjp/sliderule/contrib/tlsauth"
+ "tildegit.org/tjp/sliderule/finger"
"tildegit.org/tjp/sliderule/gemini"
+ "tildegit.org/tjp/sliderule/logging"
)
func geminiRouter(conf config) sr.Handler {
@@ -66,3 +68,27 @@ func tlsAuth(uploaders []string) tlsauth.Approver {
return found
}
}
+
+func fingerHandler(conf config) sr.Handler {
+ return sr.HandlerFunc(func(ctx context.Context, request *sr.Request) *sr.Response {
+ name := strings.TrimPrefix(request.Path, "/")
+ if name == "" {
+ return finger.Error("listings not permitted")
+ }
+
+ path, ok := conf.fingerResponses[strings.ToLower(name)]
+ if !ok {
+ return finger.Error("user not found")
+ }
+
+ file, err := os.Open(path)
+ if err != nil {
+ ctx.Value("errorlog").(logging.Logger).Log(
+ "msg", "finger response file open error",
+ "error", err,
+ )
+ }
+
+ return finger.Success(file)
+ })
+}