diff options
author | Alan Pearce | 2024-05-14 21:16:23 +0200 |
---|---|---|
committer | Alan Pearce | 2024-05-14 21:45:02 +0200 |
commit | 1a5c82e2d08accb6330c4164ab987b87157b10ed (patch) | |
tree | 48d6a913809e60b1a0cc28a8b67413ffaf979f97 /internal | |
parent | f08094f23aa4dc7d63a7c98b4429d88005fe3a2d (diff) | |
download | searchix-1a5c82e2d08accb6330c4164ab987b87157b10ed.tar.lz searchix-1a5c82e2d08accb6330c4164ab987b87157b10ed.tar.zst searchix-1a5c82e2d08accb6330c4164ab987b87157b10ed.zip |
build: bake git hash into build for headers and --version
Diffstat (limited to 'internal')
-rw-r--r-- | internal/config/config.go | 5 | ||||
-rw-r--r-- | internal/importer/http.go | 3 | ||||
-rw-r--r-- | internal/server/headers.go | 1 | ||||
-rw-r--r-- | internal/server/mux.go | 14 |
4 files changed, 23 insertions, 0 deletions
diff --git a/internal/config/config.go b/internal/config/config.go index 75f18d6..add4e67 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -12,6 +12,11 @@ import ( "github.com/pkg/errors" ) +var ( + CommitSHA string + ShortSHA string +) + type URL struct { *url.URL } diff --git a/internal/importer/http.go b/internal/importer/http.go index 6d60c44..b496177 100644 --- a/internal/importer/http.go +++ b/internal/importer/http.go @@ -6,6 +6,7 @@ import ( "log/slog" "net/http" "os" + "searchix/internal/config" "searchix/internal/file" "strings" "time" @@ -29,6 +30,8 @@ func fetchFileIfNeeded(ctx context.Context, path string, url string) (needed boo return false, errors.WithMessagef(err, "could not create HTTP request for %s", url) } + req.Header.Set("User-Agent", fmt.Sprintf("Searchix %s", config.ShortSHA)) + if mtime != "" { req.Header.Set("If-Modified-Since", mtime) } diff --git a/internal/server/headers.go b/internal/server/headers.go index 4fb9efd..562fccc 100644 --- a/internal/server/headers.go +++ b/internal/server/headers.go @@ -11,6 +11,7 @@ func AddHeadersMiddleware(next http.Handler, config *cfg.Config) http.Handler { w.Header().Add(h, v) } w.Header().Add("Content-Security-Policy", config.Web.ContentSecurityPolicy.String()) + w.Header().Add("Server", "searchix/"+cfg.ShortSHA) next.ServeHTTP(w, r) }) diff --git a/internal/server/mux.go b/internal/server/mux.go index 582d154..0f32507 100644 --- a/internal/server/mux.go +++ b/internal/server/mux.go @@ -35,6 +35,11 @@ type HTTPError struct { const jsSnippet = template.HTML(livereload.JsSnippet) // #nosec G203 +type VersionInfo struct { + ShortSHA string + CommitSHA string +} + type TemplateData struct { Sources map[string]*config.Source Source config.Source @@ -42,6 +47,7 @@ type TemplateData struct { Results bool SourceResult *bleve.SearchResult ExtraBodyHTML template.HTML + Version VersionInfo } type ResultData[T options.NixOption] struct { @@ -53,6 +59,11 @@ type ResultData[T options.NixOption] struct { Next string } +var versionInfo = &VersionInfo{ + ShortSHA: config.ShortSHA, + CommitSHA: config.CommitSHA, +} + func applyDevModeOverrides(config *config.Config) { if len(config.Web.ContentSecurityPolicy.ScriptSrc) == 0 { config.Web.ContentSecurityPolicy.ScriptSrc = config.Web.ContentSecurityPolicy.DefaultSrc @@ -93,6 +104,7 @@ func NewMux( indexData := TemplateData{ ExtraBodyHTML: config.Web.ExtraBodyHTML, Sources: config.Importer.Sources, + Version: *versionInfo, } err := templates["index"].ExecuteTemplate(w, "index.gotmpl", indexData) if err != nil { @@ -140,6 +152,7 @@ func NewMux( ExtraBodyHTML: config.Web.ExtraBodyHTML, Source: *source, Sources: config.Importer.Sources, + Version: *versionInfo, }, ResultsPerPage: search.ResultsPerPage, Query: qs, @@ -200,6 +213,7 @@ func NewMux( Sources: config.Importer.Sources, Source: *source, SourceResult: sourceResult, + Version: *versionInfo, }) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) |