From 34963499c32b6900316f16cfddc5d0e60ae9a779 Mon Sep 17 00:00:00 2001 From: Davidson Francis Date: Sun, 28 Jul 2024 14:39:02 -0300 Subject: [PATCH] Initial setup for Teams & Discord --- notifiers.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 7 deletions(-) diff --git a/notifiers.c b/notifiers.c index 7c946f4..c9cf5fb 100644 --- a/notifiers.c +++ b/notifiers.c @@ -212,9 +212,9 @@ static int send_generic_webhook(const char *url, const char *text) } -//////////////////////////////////////////////////////////////////////////////// -//////////////////////////////// TELEGRAM ////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +//////////////////////////////// TELEGRAM ///////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// /* Telegram & request settings. */ static char *telegram_bot_token; @@ -271,9 +271,9 @@ static int send_telegram_notification(const char *msg) return do_curl(hnd, escaped_msg, NULL); } -//////////////////////////////////////////////////////////////////////////////// -////////////////////////////////// SLACK /////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +////////////////////////////////// SLACK ////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// /* Slack settings. */ static char *slack_webhook_url; @@ -296,12 +296,66 @@ static int send_slack_notification(const char *msg) { return send_generic_webhook(slack_webhook_url, msg); } +/////////////////////////////////////////////////////////////////////////////// +////////////////////////////////// TEAMS ////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +/* Teams settings. */ +static char *teams_webhook_url; + +void setup_teams(void) +{ + static int setup = 0; + if (setup) + return; + + teams_webhook_url = getenv("TEAMS_WEBHOOK_URL"); + if (!teams_webhook_url) { + panic("Unable to find env vars for Teams, please check if you have set " + "the TEAMS_WEBHOOK_URL!!\n"); + } + setup = 1; +} + +static int send_teams_notification(const char *msg) { + return send_generic_webhook(teams_webhook_url, msg); +} + +/////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// DISCORD ///////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +/* Discord settings. */ +static char *discord_webhook_url; + +void setup_discord(void) +{ + static int setup = 0; + if (setup) + return; + + discord_webhook_url = getenv("DISCORD_WEBHOOK_URL"); + if (!discord_webhook_url) { + panic("Unable to find env vars for Discord, please check if you have set " + "the DISCORD_WEBHOOK_URL!!\n"); + } + setup = 1; +} + +/* Discord in Slack-compatible mode. */ +static int send_discord_notification(const char *msg) { + struct str_ab url; + ab_init(&url); + if (ab_append_fmt("%s/slack", discord_webhook_url) < 0) + return 1; + return send_generic_webhook(url.buff, msg); +} ////////////////////////////////// END //////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// const char *const notifiers_str[] = { - "Telegram", "Slack", "Discord", "Teams", + "Telegram", "Slack", "Teams", "Discord", "Generic1", "Generic2", "Generic3", "Generic4" }; @@ -315,5 +369,15 @@ struct notifier notifiers[] = { { .setup = setup_slack, .send_notification = send_slack_notification + }, + /* Teams. */ + { + .setup = setup_teams, + .send_notification = send_teams_notification + }, + /* Discord. */ + { + .setup = setup_discord, + .send_notification = send_discord_notification } };