diff options
| author | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:55 -0600 |
|---|---|---|
| committer | tjpcc <tjp@ctrl-c.club> | 2023-09-08 14:54:55 -0600 |
| commit | 06ec0efd4f34e9c3b776b94ccc83ddfaf7eb55f6 (patch) | |
| tree | f871217640c9db74ca54777ccb3bf3a5f76a56cd | |
| parent | 25e0c48d6d85d34d44f1e5fc418392d07b3d1cfe (diff) | |
apply GeminiOnly filter middleware and add support for titan uploads
| -rw-r--r-- | routes.go | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -1,11 +1,15 @@ package main import ( + "context" "os" + "strings" sr "tildegit.org/tjp/sliderule" "tildegit.org/tjp/sliderule/contrib/cgi" "tildegit.org/tjp/sliderule/contrib/fs" + "tildegit.org/tjp/sliderule/contrib/tlsauth" + "tildegit.org/tjp/sliderule/gemini" ) func geminiRouter(conf config) sr.Handler { @@ -15,17 +19,25 @@ func geminiRouter(conf config) sr.Handler { router.Route( "/*", - sr.FallthroughHandler( + gemini.GeminiOnly(true)(sr.FallthroughHandler( + fs.TitanUpload(tlsauth.Allow, conf.geminiRoot)(postUploadRedirect), fs.GeminiFileHandler(fsys), fs.GeminiDirectoryDefault(fsys, "index.gmi"), fs.GeminiDirectoryListing(fsys, nil), - ), + )), ) router.Route( "/cgi-bin/*", - cgi.GeminiCGIDirectory("/cgi-bin/", "./cgi-bin/"), + gemini.GeminiOnly(false)(cgi.GeminiCGIDirectory("/cgi-bin/", "./cgi-bin/")), ) return router.Handler() } + +var postUploadRedirect = sr.HandlerFunc(func(ctx context.Context, request *sr.Request) *sr.Response { + u := *request.URL + u.Path = strings.SplitN(u.Path, ";", 2)[0] + u.Scheme = "gemini" + return gemini.Redirect(u.String()) +}) |
