send custom style hashes, if available
2 files changed, 8 insertions(+), 0 deletions(-)
M internal/storage/sqlite/writer.go → internal/storage/sqlite/writer.go
@@ -259,6 +259,10 @@ return fault.Wrap(err, fmsg.With("could not calculate file etag")) } } + if err := content.SeekStart(); err != nil { + return fault.Wrap(err, fmsg.With("seeking content start")) + } + err = file.CalculateStyleHash() if err != nil { return fault.Wrap(err, fmsg.With("calculating file hash"))
M internal/website/mux.go → internal/website/mux.go
@@ -2,6 +2,7 @@ package website import ( "encoding/json" + "fmt" "net/http" "regexp" "slices"@@ -77,6 +78,9 @@ } website.counter.Count(r, file.Title) w.Header().Add("ETag", file.Etag) w.Header().Add("Vary", "Accept-Encoding") + if file.StyleHash != "" { + CSPHeader.StyleSrc = append(CSPHeader.StyleSrc, fmt.Sprintf("'%s'", file.StyleHash)) + } w.Header().Add("Content-Security-Policy", CSPHeader.String()) for k, v := range ExtraHeaders { w.Header().Add(k, v)