From ee64cdc2712a8e7f77c6af02385afd43a2a1e61b Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Sun, 26 Apr 2026 16:52:03 -0400 Subject: refactor: Split Go code into multiple files --- allowed.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 allowed.go (limited to 'allowed.go') diff --git a/allowed.go b/allowed.go new file mode 100644 index 00000000..e6789206 --- /dev/null +++ b/allowed.go @@ -0,0 +1,48 @@ +package main + +import ( + "fmt" + "html/template" + "log" + "net/http" + "os" + "regexp" + "slices" +) + +type AllowedFiles struct { + allowedFiles []string +} + +func (a *AllowedFiles) GetFiles(w http.ResponseWriter, r *http.Request) { + log.Println("Request for:", r.URL.String()) + url := fmt.Sprintf("static%s", r.URL.String()) + htmlRegex, err := regexp.Compile("^static/.*\\.html$") + if err != nil { + ErrorPage(w, 500) + return + } + + if url == "static/" { + url = "static/index.html" + } + + if !slices.Contains(a.allowedFiles, url) { + ErrorPage(w, 404) + return + } + + if htmlRegex.MatchString(url) { + t := template.Must(template.ParseFiles("templates/template.html")) + + html, err := os.ReadFile(url) + if err != nil { + ErrorPage(w, 500) + return + } + + t.Execute(w, template.HTML(html)) + } else { + http.ServeFile(w, r, url) + } +} -- cgit v1.2.3