aboutsummaryrefslogtreecommitdiff
path: root/http_server.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-03-25 01:43:33 +0800
committerRunxi Yu <me@runxiyu.org>2025-03-25 01:50:41 +0800
commit11b50de72c7088c1d288329b2f40509457639ed0 (patch)
tree5a5f1aad2da94d364ef0b406786b5756b0b0714b /http_server.go
parentAdd prometheus (diff)
downloadforge-11b50de72c7088c1d288329b2f40509457639ed0.tar.gz
forge-11b50de72c7088c1d288329b2f40509457639ed0.tar.zst
forge-11b50de72c7088c1d288329b2f40509457639ed0.zip
Fix regression in tree/raw dir handling
Diffstat (limited to 'http_server.go')
-rw-r--r--http_server.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/http_server.go b/http_server.go
index 6531748..73e27f6 100644
--- a/http_server.go
+++ b/http_server.go
@@ -38,7 +38,9 @@ func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *ht
http.Error(writer, err.Error(), http.StatusBadRequest)
return
}
+ dirMode := false
if segments[len(segments)-1] == "" {
+ dirMode = true
segments = segments[:len(segments)-1]
}
@@ -184,7 +186,11 @@ func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *ht
errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments")
return
}
- params["rest"] = strings.Join(segments[sepIndex+4:], "/")
+ if dirMode {
+ params["rest"] = strings.Join(segments[sepIndex+4:], "/") + "/"
+ } else {
+ params["rest"] = strings.Join(segments[sepIndex+4:], "/")
+ }
if len(segments) < sepIndex+5 && redirectDir(writer, request) {
return
}
@@ -194,7 +200,11 @@ func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *ht
errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments")
return
}
- params["rest"] = strings.Join(segments[sepIndex+4:], "/")
+ if dirMode {
+ params["rest"] = strings.Join(segments[sepIndex+4:], "/") + "/"
+ } else {
+ params["rest"] = strings.Join(segments[sepIndex+4:], "/")
+ }
if len(segments) < sepIndex+5 && redirectDir(writer, request) {
return
}