From 6260f20fc47bb50e03fc3f1cd694c0e8b07fd0cb Mon Sep 17 00:00:00 2001 From: Lukas Schulte Pelkum Date: Thu, 8 Jun 2023 19:55:43 +0200 Subject: [PATCH] implement info endpoint --- cmd/pasty/main.go | 6 +++++- internal/meta/metadata.go | 1 + internal/web/frontend_server.go | 2 +- internal/web/server.go | 11 ++++++++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cmd/pasty/main.go b/cmd/pasty/main.go index bbb3a9e..ddb0455 100644 --- a/cmd/pasty/main.go +++ b/cmd/pasty/main.go @@ -70,6 +70,10 @@ func main() { // Start the web server log.Info().Str("address", cfg.WebAddress).Msg("Starting the web server...") + var adminTokens []string + if cfg.ModificationTokenMaster != "" { + adminTokens = []string{cfg.ModificationTokenMaster} + } webServer := &web.Server{ Address: cfg.WebAddress, Storage: driver, @@ -80,7 +84,7 @@ func main() { ModificationTokensEnabled: cfg.ModificationTokens, ModificationTokenLength: cfg.ModificationTokenLength, ModificationTokenCharset: cfg.ModificationTokenCharacters, - AdminTokens: []string{cfg.ModificationTokenMaster}, + AdminTokens: adminTokens, } go func() { if err := webServer.Start(); err != nil && !errors.Is(err, http.ErrServerClosed) { diff --git a/internal/meta/metadata.go b/internal/meta/metadata.go index 59cbcf1..8085460 100644 --- a/internal/meta/metadata.go +++ b/internal/meta/metadata.go @@ -6,6 +6,7 @@ const devEnvironmentName = "dev" var ( Environment = devEnvironmentName + Version = "dev" ) func IsProdEnvironment() bool { diff --git a/internal/web/frontend_server.go b/internal/web/frontend_server.go index d8f9e9d..469b30a 100644 --- a/internal/web/frontend_server.go +++ b/internal/web/frontend_server.go @@ -59,7 +59,7 @@ func frontendHandler(notFoundHandler http.HandlerFunc) http.HandlerFunc { return } - writer.Header().Set("Content-Type", mime.TypeByExtension(fileInfo.Name())) + writer.Header().Set("Content-Type", mime.TypeByExtension(filepath.Ext(fileInfo.Name()))) writer.Header().Set("Content-Length", strconv.Itoa(len(content))) _, _ = writer.Write(content) } diff --git a/internal/web/server.go b/internal/web/server.go index 21684b9..040965d 100644 --- a/internal/web/server.go +++ b/internal/web/server.go @@ -3,6 +3,7 @@ package web import ( "context" "github.com/go-chi/chi/v5" + "github.com/lus/pasty/internal/meta" "github.com/lus/pasty/internal/pastes" "github.com/lus/pasty/internal/storage" "net/http" @@ -61,7 +62,15 @@ func (server *Server) Start() error { router.With(server.v2MiddlewareInjectPaste).Get("/api/v2/pastes/{paste_id}", server.v2EndpointGetPaste) router.Post("/api/v2/pastes", server.v2EndpointCreatePaste) router.With(server.v2MiddlewareInjectPaste, server.v2MiddlewareAuthorize).Patch("/api/v2/pastes/{paste_id}", server.v2EndpointModifyPaste) - router.Delete("/api/v2/pastes/{paste_id}", server.v2EndpointDeletePaste) + router.With(server.v2MiddlewareInjectPaste, server.v2MiddlewareAuthorize).Delete("/api/v2/pastes/{paste_id}", server.v2EndpointDeletePaste) + router.Get("/api/v2/info", func(writer http.ResponseWriter, request *http.Request) { + writeJSONOrErr(writer, http.StatusOK, map[string]any{ + "version": meta.Version, + "modificationTokens": server.ModificationTokensEnabled, + "reports": false, // TODO: Return report state + "pasteLifetime": -1, // TODO: Return paste lifetime + }) + }) // Start the HTTP server server.httpServer = &http.Server{