From 63ddfcaf88686d038f129fe6ec8e2057efdee984 Mon Sep 17 00:00:00 2001 From: Alvin Pergens Date: Wed, 26 Jan 2022 15:54:17 +0100 Subject: [PATCH] add alerta service --- server/notification-providers/alerta.js | 64 +++++++++++++++++++++++++ server/notification.js | 4 +- src/components/notifications/Alerta.vue | 14 ++++++ src/components/notifications/index.js | 4 +- src/languages/bg-BG.js | 1 + src/languages/da-DK.js | 1 + src/languages/de-DE.js | 1 + src/languages/en.js | 6 +++ src/languages/es-ES.js | 1 + src/languages/et-EE.js | 1 + src/languages/fa.js | 1 + src/languages/fr-FR.js | 1 + src/languages/hr-HR.js | 1 + src/languages/hu.js | 1 + src/languages/id-ID.js | 1 + src/languages/it-IT.js | 1 + src/languages/ja.js | 1 + src/languages/ko-KR.js | 1 + src/languages/nb-NO.js | 1 + src/languages/nl-NL.js | 1 + src/languages/pl.js | 1 + src/languages/pt-BR.js | 1 + src/languages/ru-RU.js | 1 + src/languages/sl-SI.js | 3 +- src/languages/sr-latn.js | 1 + src/languages/sr.js | 1 + src/languages/sv-SE.js | 1 + src/languages/tr-TR.js | 1 + src/languages/vi.js | 1 + src/languages/zh-CN.js | 1 + src/languages/zh-HK.js | 1 + src/languages/zh-TW.js | 1 + 32 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 server/notification-providers/alerta.js create mode 100644 src/components/notifications/Alerta.vue diff --git a/server/notification-providers/alerta.js b/server/notification-providers/alerta.js new file mode 100644 index 000000000..9ade19f53 --- /dev/null +++ b/server/notification-providers/alerta.js @@ -0,0 +1,64 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class Alerta extends NotificationProvider { + + name = "alerta"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + let alertaUrl = `${notification.alertaapiEndpoint}/alert`; + let config = { + headers: { + "Content-Type": "application/json", + "Authorization": "Key " + notification.alertaapiKey, + "Accept": "text/json" + } + }; + let data = { + environment: notification.alertaenvironment, + severity: notification.alertaalertState, // critical + status: notification.alertarecoverState, // cleared + correlate: [], + service: [ "UptimeKuma" ], + group: "UptimeKuma-" + monitorJSON["type"], // Type de Sonde + value: "Timeout", + tags: [ "uptimekuma" ], + attributes: {}, + origin: "uptimekuma", + type: "browserAlert", + resource: monitorJSON["name"] + }; + + if (heartbeatJSON == null) { + let testdata = Object.assign( { + event: "TestAlert", + text: "Testing Successful.", + }, data ); + await axios.post(alertaUrl, testdata) + } else if (heartbeatJSON["status"] == DOWN) { + let downdata = Object.assign( { + event: monitorJSON["name"], + value: "DOWN", + text: "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], + }, data ); + await axios.post(alertaUrl, downdata) + } else if (heartbeatJSON["status"] == UP) { + let updata = Object.assign( { + event: monitorJSON["name"], + value: "UP", + text: "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], + }, data ); + await axios.post(alertaUrl, updata) + } + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error) + } + + } +} + +module.exports = Alerta; diff --git a/server/notification.js b/server/notification.js index 4d72c81c7..05aafb415 100644 --- a/server/notification.js +++ b/server/notification.js @@ -27,6 +27,7 @@ const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); const WeCom = require("./notification-providers/wecom"); const GoogleChat = require("./notification-providers/google-chat"); +const Alerta = require("./notification-providers/alerta"); class Notification { @@ -65,7 +66,8 @@ class Notification { new SerwerSMS(), new Stackfield(), new WeCom(), - new GoogleChat() + new GoogleChat(), + new Alerta() ]; for (let item of list) { diff --git a/src/components/notifications/Alerta.vue b/src/components/notifications/Alerta.vue new file mode 100644 index 000000000..72d5f429c --- /dev/null +++ b/src/components/notifications/Alerta.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 03945f90e..17731b2ee 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -26,6 +26,7 @@ import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; import WeCom from "./WeCom.vue"; import GoogleChat from "./GoogleChat.vue"; +import Alerta from "./Alerta.vue"; /** * Manage all notification form. @@ -60,7 +61,8 @@ const NotificationFormList = { "serwersms": SerwerSMS, "stackfield": Stackfield, "WeCom": WeCom, - "GoogleChat": GoogleChat + "GoogleChat": GoogleChat, + "alerta": Alerta }; export default NotificationFormList; diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index e73abf846..f0a28aced 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -360,4 +360,5 @@ export default { smtpDkimHashAlgo: "Хеш алгоритъм (по желание)", smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)", smtpDkimskipFields: "Хедър ключове, които да не се подписват (по желание)", + alerta: "Alerta", }; diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 21f030ea7..8a6cd9b4c 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -352,4 +352,5 @@ export default { serwersmsPhoneNumber: "Telefonnummer", serwersmsSenderName: "SMS Afsender Navn (registreret via kundeportal)", stackfield: "Stackfield", + alerta: "Alerta", }; diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 48cdd2e3b..5a6e34928 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -350,4 +350,5 @@ export default { serwersmsPhoneNumber: "Telefonnummer", serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)", "stackfield": "Stackfield", + alerta: "Alerta", }; diff --git a/src/languages/en.js b/src/languages/en.js index 47513466c..da1688a22 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -361,4 +361,10 @@ export default { smtpDkimHashAlgo: "Hash Algorithm (Optional)", smtpDkimheaderFieldNames: "Header Keys to sign (Optional)", smtpDkimskipFields: "Header Keys not to sign (Optional)", + alerta: "Alerta", + apiEndpoint: "API Endpoint", + environment: "Environment", + apiKey: "API Key", + alertState: "Alert State", + recoverState: "Recover State", }; diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index d772db060..18c1d02ad 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -203,4 +203,5 @@ export default { records: "registros", "One record": "Un registro", steamApiKeyDescription: "Para monitorear un servidor de juegos de Steam, necesita una clave Steam Web-API. Puede registrar su clave API aquí: ", + alerta: "Alerta", }; diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js index 52439f5f6..822a884e7 100644 --- a/src/languages/et-EE.js +++ b/src/languages/et-EE.js @@ -197,4 +197,5 @@ export default { pushbullet: "Pushbullet", line: "LINE", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/fa.js b/src/languages/fa.js index aa5b129f7..28a7e932a 100644 --- a/src/languages/fa.js +++ b/src/languages/fa.js @@ -202,4 +202,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 04dede1b5..77233f132 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -304,4 +304,5 @@ export default { steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ", "Current User": "Utilisateur actuel", recent: "Récent", + alerta: "Alerta", }; diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 129403fa2..0d0a78ee8 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -347,4 +347,5 @@ export default { Cancel: "Otkaži", "Powered by": "Pokreće", Saved: "Spremljeno", + alerta: "Alerta", }; diff --git a/src/languages/hu.js b/src/languages/hu.js index adcfce286..7855a9cd6 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -350,4 +350,5 @@ export default { serwersmsAPIPassword: "API jelszó", serwersmsPhoneNumber: "Telefonszám", serwersmsSenderName: "SMS feladó neve (regisztrált név az oldalon)", + alerta: "Alerta", }; diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js index 5bad2a7e5..552fd99c8 100644 --- a/src/languages/id-ID.js +++ b/src/languages/id-ID.js @@ -280,4 +280,5 @@ export default { promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)", promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu WebHookUrl", + alerta: "Alerta", }; diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 175ade0cb..341f36bd4 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -361,4 +361,5 @@ export default { smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)", smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)", GoogleChat: "Google Chat (solo per Google Workspace)", + alerta: "Alerta", }; diff --git a/src/languages/ja.js b/src/languages/ja.js index 9446c78c9..7c8002eff 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -198,4 +198,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index a9ff4b60d..e961b7eca 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -351,4 +351,5 @@ export default { serwersmsPhoneNumber: "휴대전화 번호", serwersmsSenderName: "보내는 사람 이름 (registered via customer portal)", stackfield: "Stackfield", + alerta: "Alerta", }; diff --git a/src/languages/nb-NO.js b/src/languages/nb-NO.js index 0e566a01c..86bef5d54 100644 --- a/src/languages/nb-NO.js +++ b/src/languages/nb-NO.js @@ -279,4 +279,5 @@ export default { promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + alerta: "Alerta", }; diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index ff18832d7..d0641a2ec 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -204,4 +204,5 @@ export default { PushUrl: "Push URL", HeadersInvalidFormat: "The request headers is geen geldige JSON: ", BodyInvalidFormat: "De request body is geen geldige JSON: ", + alerta: "Alerta", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index b352e691a..10c6b774f 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -361,4 +361,5 @@ export default { smtpDkimHashAlgo: "Algorytm Hashowania (Opcjonalne)", smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (Opcjonalne)", smtpDkimskipFields: "Klucze nagłówka do pominięcia (Opcjonalne)", + alerta: "Alerta", }; diff --git a/src/languages/pt-BR.js b/src/languages/pt-BR.js index 70647fd9f..d0a26e982 100644 --- a/src/languages/pt-BR.js +++ b/src/languages/pt-BR.js @@ -197,4 +197,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index bb62de5b1..0402ef9cd 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -317,4 +317,5 @@ export default { "Cancel": "Отмена", "Created:": "Создано:", "Show Tags": "Показать тэги", + alerta: "Alerta", }; diff --git a/src/languages/sl-SI.js b/src/languages/sl-SI.js index fff2cbb66..39142802d 100644 --- a/src/languages/sl-SI.js +++ b/src/languages/sl-SI.js @@ -352,4 +352,5 @@ export default { serwersmsPhoneNumber: "Telefonska številka", serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)", "stackfield": "Stackfield", -}; \ No newline at end of file + alerta: "Alerta", +}; diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index 9e66aa541..fac191e6f 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -198,4 +198,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/sr.js b/src/languages/sr.js index df8e98997..0865461ab 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -198,4 +198,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index e29d355c2..01c8a10be 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -198,4 +198,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index e26306037..e24b829fc 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -197,4 +197,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/vi.js b/src/languages/vi.js index bc2e86de0..afd90ac0c 100644 --- a/src/languages/vi.js +++ b/src/languages/vi.js @@ -307,4 +307,5 @@ export default { steamApiKeyDescription: "Để monitor các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ", "Current User": "User hiện tại", recent: "Gần đây", + alerta: "Alerta", }; diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 8bbd0dcdd..6804f43cc 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -291,4 +291,5 @@ export default { "Internal Room Id": "Internal Room Id", matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", + alerta: "Alerta", }; diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 7f5e2259b..785dfcec3 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -198,4 +198,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + alerta: "Alerta", }; diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 0e9052601..3b1a72a93 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -353,4 +353,5 @@ export default { serwersmsPhoneNumber: "電話號碼", serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)", "stackfield": "Stackfield", + alerta: "Alerta", };