Merge pull request #54 from pushbits/trustedproxies

Add support for setting trusted proxies
This commit is contained in:
Raphael Eikenberg 2022-04-25 21:35:57 +02:00 committed by GitHub
commit db3f669c5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 5 deletions

View file

@ -82,7 +82,10 @@ func main() {
log.L.Fatal(err)
}
engine := router.Create(c.Debug, cm, db, dp, &c.Alertmanager)
engine, err := router.Create(c.Debug, c.HTTP.TrustedProxies, cm, db, dp, &c.Alertmanager)
if err != nil {
log.L.Fatal(err)
}
err = runner.Run(engine, c.HTTP.ListenAddress, c.HTTP.Port)
if err != nil {

View file

@ -13,6 +13,9 @@ http:
# The port to listen on.
port: 8080
# What proxies to trust.
trustedproxies: []
database:
# Currently sqlite3 and mysql are supported.
dialect: 'sqlite3'

View file

@ -43,8 +43,9 @@ type Alertmanager struct {
type Configuration struct {
Debug bool `default:"false"`
HTTP struct {
ListenAddress string `default:""`
Port int `default:"8080"`
ListenAddress string `default:""`
Port int `default:"8080"`
TrustedProxies []string `default:"[]"`
}
Database struct {
Dialect string `default:"sqlite3"`

View file

@ -15,7 +15,7 @@ import (
)
// Create a Gin engine and setup all routes.
func Create(debug bool, cm *credentials.Manager, db *database.Database, dp *dispatcher.Dispatcher, alertmanagerConfig *configuration.Alertmanager) *gin.Engine {
func Create(debug bool, trustedProxies []string, cm *credentials.Manager, db *database.Database, dp *dispatcher.Dispatcher, alertmanagerConfig *configuration.Alertmanager) (*gin.Engine, error) {
log.L.Println("Setting up HTTP routes.")
if !debug {
@ -36,6 +36,16 @@ func Create(debug bool, cm *credentials.Manager, db *database.Database, dp *disp
r := gin.New()
r.Use(log.GinLogger(log.L), gin.Recovery())
var err error
if len(trustedProxies) > 0 {
err = r.SetTrustedProxies(trustedProxies)
} else {
err = r.SetTrustedProxies(nil)
}
if err != nil {
return nil, err
}
r.Use(location.Default())
applicationGroup := r.Group("/application")
@ -67,5 +77,5 @@ func Create(debug bool, cm *credentials.Manager, db *database.Database, dp *disp
r.POST("/alert", auth.RequireApplicationToken(), alertmanagerHandler.CreateAlert)
return r
return r, nil
}