mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-06 20:29:54 -06:00
* feat: add CSP and other security related headers in the oCIS proxy service * fix: consolidate security related headers - drop middleware.Secure * fix: use github.com/DeepDiver1975/secure * fix: acceptance tests * feat: support env var replacements in csp.yaml
80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package debug
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"net/http"
|
|
"net/http/pprof"
|
|
|
|
chimiddleware "github.com/go-chi/chi/v5/middleware"
|
|
"github.com/justinas/alice"
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/cors"
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/middleware"
|
|
graphMiddleware "github.com/owncloud/ocis/v2/services/graph/pkg/middleware"
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
"go.opentelemetry.io/contrib/zpages"
|
|
)
|
|
|
|
// NewService initializes a new debug service.
|
|
func NewService(opts ...Option) *http.Server {
|
|
dopts := newOptions(opts...)
|
|
mux := http.NewServeMux()
|
|
|
|
mux.Handle("/metrics", alice.New(
|
|
graphMiddleware.Token(
|
|
dopts.Token,
|
|
),
|
|
).Then(
|
|
promhttp.Handler(),
|
|
))
|
|
|
|
mux.HandleFunc("/healthz", dopts.Health)
|
|
mux.HandleFunc("/readyz", dopts.Ready)
|
|
|
|
if dopts.ConfigDump != nil {
|
|
mux.HandleFunc("/config", dopts.ConfigDump)
|
|
}
|
|
|
|
if dopts.Pprof {
|
|
mux.HandleFunc("/debug/pprof/", pprof.Index)
|
|
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
|
|
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
|
|
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
|
|
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
|
|
}
|
|
|
|
if dopts.Zpages {
|
|
h := zpages.NewTracezHandler(zpages.NewSpanProcessor())
|
|
mux.Handle("/debug", h)
|
|
}
|
|
|
|
baseCtx := dopts.Context
|
|
if baseCtx == nil {
|
|
baseCtx = context.Background()
|
|
}
|
|
|
|
return &http.Server{
|
|
Addr: dopts.Address,
|
|
BaseContext: func(_ net.Listener) context.Context {
|
|
return baseCtx
|
|
},
|
|
Handler: alice.New(
|
|
chimiddleware.RealIP,
|
|
chimiddleware.RequestID,
|
|
middleware.NoCache,
|
|
middleware.Cors(
|
|
cors.AllowedOrigins(dopts.CorsAllowedOrigins),
|
|
cors.AllowedMethods(dopts.CorsAllowedMethods),
|
|
cors.AllowedHeaders(dopts.CorsAllowedHeaders),
|
|
cors.AllowCredentials(dopts.CorsAllowCredentials),
|
|
),
|
|
middleware.Version(
|
|
dopts.Name,
|
|
dopts.Version,
|
|
),
|
|
).Then(
|
|
mux,
|
|
),
|
|
}
|
|
}
|