mirror of
https://github.com/grafana/grafana.git
synced 2025-01-16 11:42:35 -06:00
tech(alerting): enforce POST for webhooks
This commit is contained in:
parent
efea3bc9cb
commit
2e809cae05
@ -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
|
||||
|
@ -1,18 +1,19 @@
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user