2024-05-08 01:56:48 +02:00
|
|
|
package notification
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"log"
|
|
|
|
|
"net/http"
|
|
|
|
|
"os"
|
2024-05-09 15:27:45 +02:00
|
|
|
"strconv"
|
2024-05-08 01:56:48 +02:00
|
|
|
"wazuh-notify/types"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func SendDiscord(params types.Params) {
|
2024-05-09 15:27:45 +02:00
|
|
|
embedDescription := "\n\n" +
|
|
|
|
|
"**Agent:** " + params.WazuhMessage.Parameters.Alert.Agent.Name + "\n" +
|
|
|
|
|
"**Event id:** " + params.WazuhMessage.Parameters.Alert.Rule.ID + "\n" +
|
|
|
|
|
"**Description:** " + params.WazuhMessage.Parameters.Alert.Rule.Description + "\n" +
|
|
|
|
|
"**Threat level:** " + strconv.Itoa(params.WazuhMessage.Parameters.Alert.Rule.Level) + "\n" +
|
|
|
|
|
"**Times fired:** " + strconv.Itoa(params.WazuhMessage.Parameters.Alert.Rule.Firedtimes) +
|
|
|
|
|
"\n\n" +
|
|
|
|
|
"Priority: " + strconv.Itoa(params.Priority) + "\n" +
|
|
|
|
|
"Tags: " + params.Tags + "\n\n" +
|
|
|
|
|
params.Click
|
2024-05-08 01:56:48 +02:00
|
|
|
|
2024-05-09 17:52:16 +02:00
|
|
|
var color int
|
|
|
|
|
|
|
|
|
|
switch params.Priority {
|
|
|
|
|
case 1:
|
|
|
|
|
color = 0x339900
|
|
|
|
|
case 2:
|
|
|
|
|
color = 0x99cc33
|
|
|
|
|
case 3:
|
|
|
|
|
color = 0xffcc00
|
|
|
|
|
case 4:
|
|
|
|
|
color = 0xff9966
|
|
|
|
|
case 5:
|
|
|
|
|
color = 0xcc3300
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-08 01:56:48 +02:00
|
|
|
message := types.Message{
|
|
|
|
|
Username: params.Sender,
|
|
|
|
|
Embeds: []types.Embed{
|
|
|
|
|
{
|
2024-05-09 15:27:45 +02:00
|
|
|
Title: params.Sender,
|
2024-05-08 01:56:48 +02:00
|
|
|
Description: embedDescription,
|
2024-05-09 17:52:16 +02:00
|
|
|
Color: color,
|
2024-05-08 01:56:48 +02:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
payload := new(bytes.Buffer)
|
|
|
|
|
|
|
|
|
|
err := json.NewEncoder(payload).Encode(message)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-09 19:03:34 +02:00
|
|
|
_, err = http.Post(os.Getenv("DISCORD_URL"), "application/json", payload)
|
2024-05-08 01:56:48 +02:00
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("An Error Occured %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|