From d47553c28c2b9aeebb028ce5a745ddfedfb26418 Mon Sep 17 00:00:00 2001 From: Patrick Connolly Date: Tue, 30 Oct 2018 00:42:29 +0800 Subject: [PATCH] Read webhook token from viper config. --- bridge/config/config.go | 1 + gateway/webhook/webhook.go | 6 ++---- matterbridge.go | 17 +++++++++++------ matterbridge.toml.sample | 5 +++++ 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/bridge/config/config.go b/bridge/config/config.go index c29422ec..df3249e6 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -171,6 +171,7 @@ type ConfigValues struct { General Protocol Gateway []Gateway SameChannelGateway []SameChannelGateway + ConfigWebhookToken string } type Config struct { diff --git a/gateway/webhook/webhook.go b/gateway/webhook/webhook.go index 06095828..c84e2b18 100644 --- a/gateway/webhook/webhook.go +++ b/gateway/webhook/webhook.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/labstack/echo" "github.com/labstack/echo/middleware" + "github.com/spf13/viper" ) func Serve() { @@ -13,12 +14,9 @@ func Serve() { e.Logger.Fatal(e.Start(":1323")) } -var ( - secretToken = "1234567890" -) - func reloadConfig(c echo.Context) error { providedToken := c.QueryParam("token") + secretToken := viper.GetString("ConfigWebhookToken") if providedToken != secretToken { return c.String(http.StatusUnauthorized, "Unauthorized") } diff --git a/matterbridge.go b/matterbridge.go index a670a36d..1eb2f128 100644 --- a/matterbridge.go +++ b/matterbridge.go @@ -10,6 +10,7 @@ import ( "github.com/42wim/matterbridge/gateway" "github.com/42wim/matterbridge/gateway/webhook" "github.com/google/gops/agent" + "github.com/spf13/viper" prefixed "github.com/matterbridge/logrus-prefixed-formatter" log "github.com/sirupsen/logrus" ) @@ -41,18 +42,22 @@ func main() { flog.Info("Enabling debug") log.SetLevel(log.DebugLevel) } - if *flagWebhook { - fmt.Printf("Starting webhook for reloading remote config...") - fmt.Printf("Serving at: POST /webhook") - webhook.Serve() - return - } flog.Printf("Running version %s %s", version, githash) if strings.Contains(version, "-dev") { flog.Println("WARNING: THIS IS A DEVELOPMENT VERSION. Things may break.") } cfg := config.NewConfig(*flagConfig) cfg.General.Debug = *flagDebug + if *flagWebhook { + // TODO: Find out why this reverts after config load + log.SetFormatter(&prefixed.TextFormatter{PrefixPadding: 13, DisableColors: true, FullTimestamp: true}) + flog.Println("Starting webhook for reloading remote config...") + if viper.GetString("ConfigWebhookToken") == "" { + flog.Fatalf("Must set config webhook's auth token to use.") + } + flog.Println("Serving at: POST /webhook") + webhook.Serve() + } r, err := gateway.NewRouter(cfg) if err != nil { flog.Fatalf("Starting gateway failed: %s", err) diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample index 0ec55962..1407a0af 100644 --- a/matterbridge.toml.sample +++ b/matterbridge.toml.sample @@ -1,3 +1,8 @@ +# If you are serving the config reload webhook, you will need to set this +# security token the will be needed to trigger reload. +# OPTIONAL (default "") +ConfigWebhookToken=1234567890 + #This is configuration for matterbridge. #WARNING: as this file contains credentials, be sure to set correct file permissions ###################################################################