diff options
Diffstat (limited to 'routes.go')
| -rw-r--r-- | routes.go | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -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) + }) +} |
