mirror of
https://github.com/ncarlier/webhookd.git
synced 2025-04-07 14:43:44 +00:00
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/ncarlier/webhookd/pkg/auth"
|
|
"github.com/ncarlier/webhookd/pkg/config"
|
|
"github.com/ncarlier/webhookd/pkg/logger"
|
|
"github.com/ncarlier/webhookd/pkg/middleware"
|
|
"github.com/ncarlier/webhookd/pkg/pubkey"
|
|
)
|
|
|
|
var commonMiddlewares = middleware.Middlewares{
|
|
middleware.Cors,
|
|
middleware.Logger,
|
|
middleware.Tracing(nextRequestID),
|
|
}
|
|
|
|
func buildMiddlewares(conf *config.Config) middleware.Middlewares {
|
|
var middlewares = commonMiddlewares
|
|
if conf.TLS {
|
|
middlewares = middlewares.UseAfter(middleware.HSTS)
|
|
}
|
|
|
|
// Load trust store...
|
|
trustStore, err := pubkey.NewTrustStore(conf.TrustStoreFile)
|
|
if err != nil {
|
|
logger.Warning.Printf("unable to load trust store (\"%s\"): %s\n", conf.TrustStoreFile, err)
|
|
}
|
|
if trustStore != nil {
|
|
middlewares = middlewares.UseAfter(middleware.HTTPSignature(trustStore))
|
|
}
|
|
|
|
// Load authenticator...
|
|
authenticator, err := auth.NewHtpasswdFromFile(conf.PasswdFile)
|
|
if err != nil {
|
|
logger.Debug.Printf("unable to load htpasswd file (\"%s\"): %s\n", conf.PasswdFile, err)
|
|
}
|
|
if authenticator != nil {
|
|
middlewares = middlewares.UseAfter(middleware.AuthN(authenticator))
|
|
}
|
|
return middlewares
|
|
}
|
|
|
|
func routes(conf *config.Config) Routes {
|
|
middlewares := buildMiddlewares(conf)
|
|
return Routes{
|
|
route(
|
|
"/",
|
|
index,
|
|
middlewares.UseBefore(middleware.Methods("GET", "POST"))...,
|
|
),
|
|
route(
|
|
"/static/",
|
|
static("/static/"),
|
|
middlewares.UseBefore(middleware.Methods("GET"))...,
|
|
),
|
|
route(
|
|
"/healthz",
|
|
healthz,
|
|
commonMiddlewares.UseBefore(middleware.Methods("GET"))...,
|
|
),
|
|
route(
|
|
"/varz",
|
|
varz,
|
|
middlewares.UseBefore(middleware.Methods("GET"))...,
|
|
),
|
|
}
|
|
}
|