From b4bf72fe59a9b6f09c5c7e53cae5ddd7f09b9cf8 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Tue, 01 Apr 2025 22:16:48 +0800 Subject: [PATCH] Remind visitors of the change --- http_error_page.go | 5 +++++ http_server.go | 7 +++++++ templates/400_colon.tmpl | 26 ++++++++++++++++++++++++++ diff --git a/http_error_page.go b/http_error_page.go index 85ad85973fb67bf4d771bfec5ab873dc63be766d..00ef04b5d5cc378b83cc73eb36c167642174d461 100644 --- a/http_error_page.go +++ b/http_error_page.go @@ -18,6 +18,11 @@ params["complete_error_msg"] = msg _ = templates.ExecuteTemplate(w, "400", params) } +func errorPage400Colon(w http.ResponseWriter, params map[string]any) { + w.WriteHeader(http.StatusBadRequest) + _ = templates.ExecuteTemplate(w, "400_colon", params) +} + func errorPage403(w http.ResponseWriter, params map[string]any, msg string) { w.WriteHeader(http.StatusForbidden) params["complete_error_msg"] = msg diff --git a/http_server.go b/http_server.go index df8f36205744baec84bfaab367cd66e629c3edc7..baddf9d7428266d27c86db352802aca8fb9b4405 100644 --- a/http_server.go +++ b/http_server.go @@ -48,6 +48,13 @@ dirMode = true segments = segments[:len(segments)-1] } + for _, v := range segments { + if strings.Contains(v, ":") { + errorPage400Colon(writer, params) + return + } + } + params["url_segments"] = segments params["dir_mode"] = dirMode params["global"] = globalData diff --git a/templates/400_colon.tmpl b/templates/400_colon.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..6d8ec25937fed03a11c3bc7ba7bb60820ecbba0b --- /dev/null +++ b/templates/400_colon.tmpl @@ -0,0 +1,26 @@ +{{/* + SPDX-License-Identifier: AGPL-3.0-only + SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu +*/}} +{{- define "400_colon" -}} + + + + {{- template "head_common" . -}} + 400 Bad Request – {{ .global.forge_title }} + + + {{- template "header" . -}} +
+

400 Bad Request

+

We recently switched URL schemes. Previously “:” was used as our URL group separator, but because OpenSMTPD does not implement local-part address quoting properly, we’re unable to include “:” in URLs properly, hence we use “-” now.

+

As a precaution in case visitors get confused, this page was set up. You should probably replace all “:”s with “-”s in the URL bar.

+
+
Lindenii Forge
+
+ + + +{{- end -}} -- 2.48.1