[#965] fix: 404 error for different host name and port (#966)

This commit is contained in:
YotaHamada 2025-05-31 16:20:07 +09:00 committed by GitHub
parent 757e0e9dc1
commit 5cb885a718
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 123 additions and 142 deletions

View File

@ -5074,107 +5074,105 @@ func (sh *strictHandler) GetHealthStatus(w http.ResponseWriter, r *http.Request)
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"/66u/LgZHNdcnV79XwAAAP//Yg/GnPGnAAA=",
"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",
}
// GetSwagger returns the content of the embedded swagger specification file

View File

@ -112,6 +112,9 @@ type Server struct {
// Permissions defines the permissions allowed in the UI and API.
Permissions map[Permission]bool
// StrictValidation enables strict validation of API requests.
StrictValidation bool
}
// Permission represents a permission string used in the application.

View File

@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"net/http"
"path"
"reflect"
"github.com/dagu-org/dagu/api/v2"
@ -68,18 +69,28 @@ func (a *API) ConfigureRoutes(r chi.Router, baseURL string) error {
swagger.Servers = append(swagger.Servers, &openapi3.Server{URL: url})
}
// Setup the API base path
if a.config.Server.BasePath != "" {
swagger.Servers = append(swagger.Servers, &openapi3.Server{
URL: path.Join(baseURL, a.config.Server.BasePath),
})
}
// Create the oapi-codegen validator middleware
validator := oapimiddleware.OapiRequestValidatorWithOptions(
swagger, &oapimiddleware.Options{
SilenceServersWarning: true,
Options: openapi3filter.Options{
AuthenticationFunc: func(_ context.Context, _ *openapi3filter.AuthenticationInput) error {
return nil
if a.config.Server.StrictValidation {
// It is problematic to use the validator behind a reverse proxy
validator := oapimiddleware.OapiRequestValidatorWithOptions(
swagger, &oapimiddleware.Options{
SilenceServersWarning: true,
Options: openapi3filter.Options{
AuthenticationFunc: func(_ context.Context, _ *openapi3filter.AuthenticationInput) error {
return nil
},
},
},
},
)
r.Use(validator)
)
r.Use(validator)
}
options := api.StrictHTTPServerOptions{
ResponseErrorHandlerFunc: a.handleError,

View File

@ -9,7 +9,6 @@ import (
"os"
"os/signal"
"path"
"runtime/debug"
"strconv"
"strings"
"syscall"
@ -78,7 +77,7 @@ func (srv *Server) Serve(ctx context.Context) error {
r.Use(middleware.RealIP)
r.Use(middleware.Compress(5))
r.Use(httplog.RequestLogger(requestLogger))
r.Use(middleware.Recoverer) // Use built-in Chi recoverer instead of custom one
r.Use(middleware.Recoverer)
r.Use(cors.Handler(cors.Options{
AllowedOrigins: []string{"*"}, // TODO: Update to specific origins for better security
AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
@ -245,33 +244,3 @@ func (srv *Server) setupGracefulShutdown(ctx context.Context) {
logger.Error(ctx, "Failed to shutdown server gracefully", "err", err)
}
}
// CustomRecoverer provides a middleware that recovers from panics
// Note: Can be used instead of Chi's built-in Recoverer if custom handling is needed
func CustomRecoverer(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
if rvr := recover(); rvr != nil {
if rvr == http.ErrAbortHandler {
// We don't recover http.ErrAbortHandler so the response
// to the client is aborted, this should not be logged
panic(rvr)
}
st := string(debug.Stack())
logger.Error(r.Context(), "Panic recovered in HTTP handler",
"error", rvr,
"stacktrace", st,
"url", r.URL.String(),
"method", r.Method,
)
if r.Header.Get("Connection") != "Upgrade" {
w.WriteHeader(http.StatusInternalServerError)
}
}
}()
next.ServeHTTP(w, r)
})
}