Commit 2e809cae by bergquist

tech(alerting): enforce POST for webhooks

parent efea3bc9
......@@ -13,11 +13,10 @@ type SendEmailCommand struct {
}
type SendWebhook struct {
Url string
AuthUser string
AuthPassword string
Body string
Method string
Url string
User string
Password string
Body string
}
type SendResetPasswordEmailCommand struct {
......
......@@ -66,18 +66,19 @@ func (this *EmailNotifier) Dispatch(alertResult *AlertResult) {
}
type WebhookNotifier struct {
Url string
Method string
AuthUser string
AuthPassword string
log log.Logger
Url string
User string
Password string
log log.Logger
}
func (this *WebhookNotifier) Dispatch(alertResult *AlertResult) {
this.log.Info("Sending webhook")
cmd := &m.SendWebhook{
Url: this.Url,
Method: this.Method,
Url: this.Url,
User: this.User,
Password: this.Password,
Body: alertResult.Description,
}
bus.Dispatch(cmd)
......@@ -130,10 +131,9 @@ var createNotifier = func(notificationType string, settings *simplejson.Json) No
}
return &WebhookNotifier{
Url: settings.Get("url").MustString(),
Method: settings.Get("method").MustString(),
AuthUser: settings.Get("user").MustString(),
AuthPassword: settings.Get("password").MustString(),
log: log.New("alerting.notification.webhook"),
Url: settings.Get("url").MustString(),
User: settings.Get("user").MustString(),
Password: settings.Get("password").MustString(),
log: log.New("alerting.notification.webhook"),
}
}
......@@ -58,11 +58,10 @@ func Init() error {
func sendWebhook(cmd *m.SendWebhook) error {
addToWebhookQueue(&Webhook{
Url: cmd.Url,
AuthUser: cmd.AuthUser,
AuthPassword: cmd.AuthPassword,
Method: cmd.Method,
Body: cmd.Body,
Url: cmd.Url,
User: cmd.User,
Password: cmd.Password,
Body: cmd.Body,
})
return nil
......
package notifications
import (
"bytes"
"net/http"
"time"
"github.com/grafana/grafana/pkg/log"
"github.com/grafana/grafana/pkg/util"
)
type Webhook struct {
Url string
AuthUser string
AuthPassword string
Body string
Method string
Url string
User string
Password string
Body string
}
var webhookQueue chan *Webhook
......@@ -40,9 +41,14 @@ func processWebhookQueue() {
func sendWebRequest(webhook *Webhook) error {
webhookLog.Error("Sending stuff! ", "url", webhook.Url)
client := http.Client{Timeout: time.Duration(3 * time.Second)}
client := http.Client{
Timeout: time.Duration(3 * time.Second),
}
request, err := http.NewRequest(webhook.Method, webhook.Url, nil /*io.reader*/)
request, err := http.NewRequest("POST", webhook.Url, bytes.NewReader([]byte(webhook.Body)))
if webhook.User != "" && webhook.Password != "" {
request.Header.Add("Authorization", util.GetBasicAuthHeader(webhook.User, webhook.Password))
}
if err != nil {
return err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment