From 30ab71c9d970821e1baa3ba140f0685a0d059849 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 4 Apr 2018 21:07:54 -0500 Subject: [PATCH] Add missing healthcheck router for gateway (#5764) --- cmd/gateway-main.go | 35 ++++----------------- cmd/routers.go | 76 ++++++++++++++++++++++----------------------- 2 files changed, 44 insertions(+), 67 deletions(-) diff --git a/cmd/gateway-main.go b/cmd/gateway-main.go index ce9174737..199e034ca 100644 --- a/cmd/gateway-main.go +++ b/cmd/gateway-main.go @@ -171,41 +171,18 @@ func StartGateway(ctx *cli.Context, gw Gateway) { router := mux.NewRouter().SkipClean(true) + // Add healthcheck router + registerHealthCheckRouter(router) + // Register web router when its enabled. if globalIsBrowserEnabled { fatalIf(registerWebRouter(router), "Unable to configure web browser") } + + // Add API router. registerAPIRouter(router) - var handlerFns = []HandlerFunc{ - // Validate all the incoming paths. - setPathValidityHandler, - // Limits all requests size to a maximum fixed limit - setRequestSizeLimitHandler, - // Adds 'crossdomain.xml' policy handler to serve legacy flash clients. - setCrossDomainPolicy, - // Validates all incoming requests to have a valid date header. - // Redirect some pre-defined browser request paths to a static location prefix. - setBrowserRedirectHandler, - // Validates if incoming request is for restricted buckets. - setReservedBucketHandler, - // Adds cache control for all browser requests. - setBrowserCacheControlHandler, - // Validates all incoming requests to have a valid date header. - setTimeValidityHandler, - // CORS setting for all browser API requests. - setCorsHandler, - // Validates all incoming URL resources, for invalid/unsupported - // resources client receives a HTTP error. - setIgnoreResourcesHandler, - // Auth handler verifies incoming authorization headers and - // routes them accordingly. Client receives a HTTP error for - // invalid/unsupported signatures. - setAuthHandler, - // Add new handlers here. - } - - globalHTTPServer = miniohttp.NewServer([]string{gatewayAddr}, registerHandlers(router, handlerFns...), globalTLSCertificate) + globalHTTPServer = miniohttp.NewServer([]string{gatewayAddr}, registerHandlers(router, globalHandlers...), globalTLSCertificate) // Start server, automatically configures TLS if certs are available. go func() { diff --git a/cmd/routers.go b/cmd/routers.go index 49081eb9b..0e35421f1 100644 --- a/cmd/routers.go +++ b/cmd/routers.go @@ -57,6 +57,43 @@ func registerDistXLRouters(mux *router.Router, endpoints EndpointList) error { return registerBrowserPeerRPCRouter(mux) } +// List of some generic handlers which are applied for all incoming requests. +var globalHandlers = []HandlerFunc{ + // Ratelimit the incoming requests using a token bucket algorithm + setRateLimitHandler, + // Validate all the incoming paths. + setPathValidityHandler, + // Network statistics + setHTTPStatsHandler, + // Limits all requests size to a maximum fixed limit + setRequestSizeLimitHandler, + // Limits all header sizes to a maximum fixed limit + setRequestHeaderSizeLimitHandler, + // Adds 'crossdomain.xml' policy handler to serve legacy flash clients. + setCrossDomainPolicy, + // Redirect some pre-defined browser request paths to a static location prefix. + setBrowserRedirectHandler, + // Validates if incoming request is for restricted buckets. + setReservedBucketHandler, + // Adds cache control for all browser requests. + setBrowserCacheControlHandler, + // Validates all incoming requests to have a valid date header. + setTimeValidityHandler, + // CORS setting for all browser API requests. + setCorsHandler, + // Validates all incoming URL resources, for invalid/unsupported + // resources client receives a HTTP error. + setIgnoreResourcesHandler, + // Auth handler verifies incoming authorization headers and + // routes them accordingly. Client receives a HTTP error for + // invalid/unsupported signatures. + setAuthHandler, + // filters HTTP headers which are treated as metadata and are reserved + // for internal use only. + filterReservedMetadata, + // Add new handlers here. +} + // configureServer handler returns final handler for the http server. func configureServerHandler(endpoints EndpointList) (http.Handler, error) { // Initialize router. `SkipClean(true)` stops gorilla/mux from @@ -90,43 +127,6 @@ func configureServerHandler(endpoints EndpointList) (http.Handler, error) { // Add API router. registerAPIRouter(mux) - // List of some generic handlers which are applied for all incoming requests. - var handlerFns = []HandlerFunc{ - // Ratelimit the incoming requests using a token bucket algorithm - setRateLimitHandler, - // Validate all the incoming paths. - setPathValidityHandler, - // Network statistics - setHTTPStatsHandler, - // Limits all requests size to a maximum fixed limit - setRequestSizeLimitHandler, - // Limits all header sizes to a maximum fixed limit - setRequestHeaderSizeLimitHandler, - // Adds 'crossdomain.xml' policy handler to serve legacy flash clients. - setCrossDomainPolicy, - // Redirect some pre-defined browser request paths to a static location prefix. - setBrowserRedirectHandler, - // Validates if incoming request is for restricted buckets. - setReservedBucketHandler, - // Adds cache control for all browser requests. - setBrowserCacheControlHandler, - // Validates all incoming requests to have a valid date header. - setTimeValidityHandler, - // CORS setting for all browser API requests. - setCorsHandler, - // Validates all incoming URL resources, for invalid/unsupported - // resources client receives a HTTP error. - setIgnoreResourcesHandler, - // Auth handler verifies incoming authorization headers and - // routes them accordingly. Client receives a HTTP error for - // invalid/unsupported signatures. - setAuthHandler, - // filters HTTP headers which are treated as metadata and are reserved - // for internal use only. - filterReservedMetadata, - // Add new handlers here. - } - // Register rest of the handlers. - return registerHandlers(mux, handlerFns...), nil + return registerHandlers(mux, globalHandlers...), nil }