From dc92fbd2285870dbd9d0ad5791c67b11ca34beda Mon Sep 17 00:00:00 2001 From: Solderpunk Date: Wed, 6 Nov 2019 18:46:44 +0200 Subject: [PATCH] Set missing scheme to gemini://, and return status 53 for non-Gemini schemes. --- handler.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/handler.go b/handler.go index 2a9b354..c8bf44a 100644 --- a/handler.go +++ b/handler.go @@ -41,6 +41,20 @@ func handleGeminiRequest(conn net.Conn, config Config, logEntries chan LogEntry) return } log.RequestURL = URL.String() + + // Set implicit scheme + if URL.Scheme == "" { + URL.Scheme = "gemini" + } + + // Reject non-gemini schemes + if URL.Scheme != "gemini" { + conn.Write([]byte("53 No proxying to non-Gemini content!\r\n")) + log.Status = 53 + logEntries <- log + return + } + // Generic response conn.Write([]byte("20 text/gemini\r\n")) body := fmt.Sprintf("Molly at %s says \"Hi!\" from %s.\n", URL.Host, URL.Path)