hash style elements during build step
1 file changed, 17 insertions(+), 3 deletions(-)
changed files
M internal/server/server.go → internal/server/server.go
@@ -39,7 +39,6 @@ *http.Server } func applyDevModeOverrides(config *cfg.Config, listenAddress string) { - config.CSP.StyleSrc = slices.Insert(config.CSP.StyleSrc, 0, "'unsafe-inline'") config.CSP.ScriptSrc = slices.Insert(config.CSP.ScriptSrc, 0, "'unsafe-inline'") config.CSP.ConnectSrc = slices.Insert(config.CSP.ConnectSrc, 0, "'self'") config.BaseURL = cfg.URL{@@ -47,6 +46,13 @@ URL: &url.URL{ Scheme: "http", Host: listenAddress, }, + } +} + +func updateCSPHashes(config *cfg.Config, r *builder.Result) { + clear(config.CSP.StyleSrc) + for i, h := range r.Hashes { + config.CSP.StyleSrc[i] = fmt.Sprintf("'%s'", h) } }@@ -81,7 +87,11 @@ Destination: runtimeConfig.Root, BaseURL: config.BaseURL, Development: true, } - builder.BuildSite(builderConfig) + r, err := builder.BuildSite(builderConfig) + if err != nil { + return nil, errors.WithMessage(err, "could not build site") + } + updateCSPHashes(config, r) liveReload := livereload.New() top.Handle("/_/reload", liveReload)@@ -102,7 +112,11 @@ } } go fw.Start(func(filename string) { log.Debug("file updated", "filename", filename) - builder.BuildSite(builderConfig) + r, err := builder.BuildSite(builderConfig) + if err != nil { + log.Error("could not build site", "error", err) + } + updateCSPHashes(config, r) liveReload.Reload() }) }