diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-12 11:18:03 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-12 11:18:03 +0800 |
commit | 623d0c1a16df8ef40d2f738150f28b23d72cc5bf (patch) | |
tree | 3bb7e202d28e8607232b88a2a351e4e19b932e42 /router.go | |
parent | repo_tree_file: Fix link to CSS (diff) | |
download | forge-623d0c1a16df8ef40d2f738150f28b23d72cc5bf.tar.gz forge-623d0c1a16df8ef40d2f738150f28b23d72cc5bf.tar.zst forge-623d0c1a16df8ef40d2f738150f28b23d72cc5bf.zip |
router: Stricter URL
Diffstat (limited to '')
-rw-r--r-- | router.go | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -85,9 +85,21 @@ func (router *http_router_t) ServeHTTP(w http.ResponseWriter, r *http.Request) { params["rest"] = strings.Join(segments[separator_index+4:], "/") handle_repo_raw(w, r, params) case "log": + if non_empty_last_segments_len != separator_index+5 { + fmt.Fprintln(w, "Too many parameters") + return + } + if dir_mode { + http.Redirect(w, r, strings.TrimSuffix(r.URL.Path, "/"), http.StatusSeeOther) + return + } params["ref"] = segments[separator_index+4] handle_repo_log(w, r, params) case "commit": + if dir_mode { + http.Redirect(w, r, strings.TrimSuffix(r.URL.Path, "/"), http.StatusSeeOther) + return + } params["commit_id"] = segments[separator_index+4] handle_repo_commit(w, r, params) } |