From 375654659ce828de4c24035c023c9ab551a37410 Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Wed, 17 Nov 2021 15:47:51 -0800 Subject: Add version to headers --- Makefile | 2 +- app/middleware/server_header.go | 16 ++++++++++++++++ cmd/web/server.go | 7 ++++--- main.go | 4 +++- 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 app/middleware/server_header.go diff --git a/Makefile b/Makefile index f8faca0..6bdfb3c 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ IMAGE=docker.crute.me/aws-access BINARY=cloud-identity-broker $(BINARY): main.go $(shell find . -name '*.go') - go build -o $@ $< + go build -ldflags "-X main.appVersion=$(shell git describe --long --tags --dirty --always)" -o $@ $< .PHONY: vet vet: main.go diff --git a/app/middleware/server_header.go b/app/middleware/server_header.go new file mode 100644 index 0000000..7ccbbda --- /dev/null +++ b/app/middleware/server_header.go @@ -0,0 +1,16 @@ +package middleware + +import ( + "fmt" + + "github.com/labstack/echo/v4" +) + +func AddServerHeader(version string) echo.MiddlewareFunc { + return func(next echo.HandlerFunc) echo.HandlerFunc { + return func(c echo.Context) error { + c.Response().Header().Add("Server", fmt.Sprintf("cloud-identity-broker/%s", version)) + return next(c) + } + } +} diff --git a/cmd/web/server.go b/cmd/web/server.go index e76b6b2..d13cd58 100644 --- a/cmd/web/server.go +++ b/cmd/web/server.go @@ -25,12 +25,12 @@ import ( "golang.org/x/time/rate" ) -func Register(root *cobra.Command, embeddedTemplates fs.FS) { +func Register(root *cobra.Command, embeddedTemplates fs.FS, version string) { webCmd := &cobra.Command{ Use: "web [options]", Short: "Run web server", Run: func(c *cobra.Command, args []string) { - webMain(app.NewConfigFromCmd(c), embeddedTemplates) + webMain(app.NewConfigFromCmd(c), embeddedTemplates, version) }, } @@ -53,7 +53,7 @@ func Register(root *cobra.Command, embeddedTemplates fs.FS) { root.AddCommand(webCmd) } -func webMain(cfg app.Config, embeddedTemplates fs.FS) { +func webMain(cfg app.Config, embeddedTemplates fs.FS, version string) { ctx := context.Background() s, err := glecho.NewDefaultEchoWithConfig(glecho.EchoConfig{ @@ -86,6 +86,7 @@ func webMain(cfg app.Config, embeddedTemplates fs.FS) { if err = s.Init(); err != nil { log.Fatalf("Error initializing echo: %w", err) } + s.Use(middleware.AddServerHeader(version)) mongo, err := mongodb.Connect(ctx, cfg.MongoDbUri, cfg.MongodbVaultPath) if err != nil { diff --git a/main.go b/main.go index f262847..f785d87 100644 --- a/main.go +++ b/main.go @@ -17,6 +17,8 @@ import ( //go:embed templates var embeddedTemplates embed.FS +var appVersion string + func main() { rootCmd := &cobra.Command{ Use: "cloud-identity-broker", @@ -37,7 +39,7 @@ func main() { log.Fatalf("Error building sub-fs of embeded fs") } - web.Register(rootCmd, templates) + web.Register(rootCmd, templates, appVersion) if err := rootCmd.Execute(); err != nil { log.Fatalf("Error running root command: %s", err) -- cgit v1.2.3