diff --git a/controllers/home.ctrl.go b/controllers/home.ctrl.go index 3ec9295..2a854cf 100644 --- a/controllers/home.ctrl.go +++ b/controllers/home.ctrl.go @@ -3,6 +3,7 @@ package controllers import ( "bytes" "context" + _ "embed" "fmt" "html/template" "net/http" @@ -21,12 +22,14 @@ const ( // HomeController : HomeController struct type HomeController struct { - svc *service.LndhubService + svc *service.LndhubService + html string } -func NewHomeController(svc *service.LndhubService) *HomeController { +func NewHomeController(svc *service.LndhubService, html string) *HomeController { return &HomeController{ - svc: svc, + svc: svc, + html: html, } } @@ -57,7 +60,6 @@ func Max(x, y int) int { } return x } - func (controller *HomeController) QR(c echo.Context) error { customPath := strings.Replace(c.Request().URL.Path, "/qr", "", 1) encoded := url.QueryEscape(fmt.Sprintf("%s://%s%s", c.Request().URL.Scheme, c.Request().Host, customPath)) @@ -78,7 +80,8 @@ func (controller *HomeController) Home(c echo.Context) error { if err != nil { return err } - tmpl, err := template.ParseFiles("templates/index.html") + + tmpl, err := template.New("index").Parse(controller.html) if err != nil { return err } diff --git a/main.go b/main.go index ec45b28..18c904f 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "embed" "encoding/hex" "fmt" "log" @@ -31,6 +32,12 @@ import ( "github.com/ziflex/lecho/v3" ) +//go:embed templates/index.html +var html string + +//go:embed static/* +var staticContent embed.FS + func main() { c := &service.Config{} @@ -140,12 +147,16 @@ func main() { // These endpoints are currently not supported and we return a blank response for backwards compatibility blankController := controllers.NewBlankController(svc) - homeController := controllers.NewHomeController(svc) secured.GET("/getbtc", blankController.GetBtc) secured.GET("/getpending", blankController.GetPending) + + //Index page endpoints, no Authorization required + homeController := controllers.NewHomeController(svc, html) e.GET("/", homeController.Home) e.GET("/qr", homeController.QR) - e.Static("/static", "static") + //workaround, just adding /static would make a request to these resources hit the authorized group + e.GET("/static/css/*", echo.WrapHandler(http.FileServer(http.FS(staticContent)))) + e.GET("/static/img/*", echo.WrapHandler(http.FileServer(http.FS(staticContent)))) // Subscribe to LND invoice updates in the background go svc.InvoiceUpdateSubscription(context.Background())