diff --git a/Dockerfile b/Dockerfile index 59c477b..143262f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,12 +20,10 @@ FROM scratch COPY --from=build /app/anonymousoverflow /anonymousoverflow COPY --from=build /app/healthcheck /healthcheck -COPY templates /templates -COPY public /public COPY --from=build /etc/ssl/certs /etc/ssl/certs HEALTHCHECK --interval=60s --timeout=5s --start-period=2s --retries=3 CMD [ "/healthcheck","http://localhost:8080/healthz" ] EXPOSE 8080 -CMD ["/anonymousoverflow"] \ No newline at end of file +CMD ["/anonymousoverflow"] diff --git a/main.go b/main.go index c9cc96c..2752b66 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,11 @@ import ( "anonymousoverflow/env" "anonymousoverflow/src/middleware" "anonymousoverflow/src/routes" + "embed" "fmt" + "html/template" + "io/fs" + "net/http" "os" "github.com/gin-gonic/gin" @@ -13,6 +17,12 @@ import ( "github.com/tavsec/gin-healthcheck/config" ) +//go:embed templates/* +var templates embed.FS + +//go:embed public/* +var public embed.FS + func main() { env.RunChecks() @@ -29,19 +39,21 @@ func main() { if os.Getenv("DEV") != "true" { gin.SetMode(gin.ReleaseMode) - fmt.Printf("Running in production mode. Listening on %s:%s.", host, port) + fmt.Printf("Running in production mode. Listening on %s:%s.\n", host, port) } r := gin.Default() - r.LoadHTMLGlob("templates/*") + templ := template.Must(template.New("").ParseFS(templates, "templates/*")) + r.SetHTMLTemplate(templ) r.Use(gin.Recovery()) r.Use(middleware.XssPreventionHeaders()) r.Use(middleware.OptionsMiddleware()) r.Use(middleware.Ratelimit()) - r.GET("/static/*filepath", routes.StaticContent) + static, _ := fs.Sub(public, "public") + r.StaticFS("/static", http.FS(static)) r.GET("/robots.txt", func(c *gin.Context) { c.String(200, "User-agent: *\nDisallow: /") diff --git a/src/routes/static.go b/src/routes/static.go deleted file mode 100644 index b5934a3..0000000 --- a/src/routes/static.go +++ /dev/null @@ -1,14 +0,0 @@ -package routes - -import ( - "fmt" - "strings" - - "github.com/gin-gonic/gin" -) - -func StaticContent(c *gin.Context) { - cleanFilePath := strings.ReplaceAll(c.Param("filepath"), "..", "") - - c.File(fmt.Sprintf("./public/%s", cleanFilePath)) -}