package server import ( "html/template" "io/fs" "log" "net/http" "github.com/H1K0/SkazaNull/api" "github.com/H1K0/SkazaNull/embed" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" ) func Serve(addr string, encryptionKey []byte) { gin.SetMode(gin.ReleaseMode) r := gin.Default() store := cookie.NewStore(encryptionKey) store.Options(sessions.Options{Path: "/"}) r.Use(sessions.Sessions("session", store)) tmpl := template.Must(template.ParseFS(embed.TemplatesFS, "templates/*.html")) r.SetHTMLTemplate(tmpl) api.RegisterRoutes(r) static, err := fs.Sub(embed.StaticFS, "static") if err != nil { log.Fatalf("Failed to get subs of embedded static FS: %s\n", err) } r.StaticFS("/static/", http.FS(static)) r.StaticFileFS("/favicon.ico", "static/service/favicon.ico", http.FS(embed.StaticFS)) r.StaticFileFS("/skazanull.webmanifest", "static/service/skazanull.webmanifest", http.FS(embed.StaticFS)) r.StaticFileFS("/browserconfig.xml", "static/service/browserconfig.xml", http.FS(embed.StaticFS)) r.GET("/", api.MiddlewareAuth, root) r.GET("/quotes", api.MiddlewareAuth, middlewareAuth, quotes) r.GET("/settings", api.MiddlewareAuth, middlewareAuth, settings) r.Run(addr) }