diff options
author | tjp <tjp@ctrl-c.club> | 2023-11-13 07:58:02 -0700 |
---|---|---|
committer | tjp <tjp@ctrl-c.club> | 2023-11-13 07:58:02 -0700 |
commit | e599f0e2d4f8177143478ba17189e1ef656b7fe0 (patch) | |
tree | 2ed812e69f16e5b599298392ad54a3009778c4f1 /contrib/sharedhost/replacement.go | |
parent | aa9bca810912f102a13a674ee30bf97f5667f662 (diff) |
remove the old contrib/sharedhost replacement approach
Diffstat (limited to 'contrib/sharedhost/replacement.go')
-rw-r--r-- | contrib/sharedhost/replacement.go | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/contrib/sharedhost/replacement.go b/contrib/sharedhost/replacement.go deleted file mode 100644 index cabc6b1..0000000 --- a/contrib/sharedhost/replacement.go +++ /dev/null @@ -1,47 +0,0 @@ -package sharedhost - -import ( - "context" - "crypto/tls" - "net/url" - "path" - - sr "tildegit.org/tjp/sliderule" -) - -// ReplaceTilde builds a middleware which substitutes a leading '~' in the request path. -// -// It makes the alteration to a copy of the request which is then passed into the -// wrapped Handler. This way middlewares outside of this one inspecting the request -// afterwards will see the original URL. -// -// Typically the replacement should end with a "/", so that the ~ ends up mapping to a -// particular directory on the filesystem. For instance with a replacement string of -// "users/", "domain.com/~jim/index.gmi" maps to "domain.com/users/jim/index.gmi". -func ReplaceTilde(replacement string) sr.Middleware { - return func(inner sr.Handler) sr.Handler { - return sr.HandlerFunc(func(ctx context.Context, request *sr.Request) *sr.Response { - if len(request.Path) > 1 && request.Path[0:2] == "/~" { - request = cloneRequest(request) - request.Path = path.Clean("/" + replacement + request.Path[2:]) - } - - return inner.Handle(ctx, request) - }) - } -} - -func cloneRequest(start *sr.Request) *sr.Request { - next := &sr.Request{} - *next = *start - - next.URL = &url.URL{} - *next.URL = *start.URL - - if start.TLSState != nil { - next.TLSState = &tls.ConnectionState{} - *next.TLSState = *start.TLSState - } - - return next -} |