From 8050cb8e99fed911f69b78b2d99994e2f180ef14 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sat, 11 Dec 2021 23:43:12 +0100 Subject: [PATCH 1/7] implement google chat notification type --- server/notification-providers/google-chat.js | 46 ++++++++++++++++++++ server/notification.js | 2 + src/components/notifications/GoogleChat.vue | 13 ++++++ src/components/notifications/index.js | 2 + 4 files changed, 63 insertions(+) create mode 100644 server/notification-providers/google-chat.js create mode 100644 src/components/notifications/GoogleChat.vue diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js new file mode 100644 index 000000000..f73f4b5a5 --- /dev/null +++ b/server/notification-providers/google-chat.js @@ -0,0 +1,46 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { setting } = require("../util-server"); +const { getMonitorRelativeURL } = require("../../src/util"); + +class GoogleChat extends NotificationProvider { + + name = "Google Chat"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + try { + // Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic + + let textMsg = '' + if (heartbeatJSON && heartbeatJSON.status === UP) { + textMsg = `✅ Application is back online`; + } else { + textMsg = `🔴 Application went down`; + } + + if (monitorJSON && monitorJSON.name) { + textMsg += `\n*${monitorJSON.name}*`; + } + + textMsg += `\n${msg}`; + + const baseURL = await setting("primaryBaseURL"); + if (baseURL) { + textMsg += `\n${baseURL + getMonitorRelativeURL(monitorJSON.id)}`; + } + + const data = { + "text": textMsg, + }; + + await axios.post(notification.googleChatWebhookURL, data); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + + } +} + +module.exports = GoogleChat; diff --git a/server/notification.js b/server/notification.js index 3eb5f97bf..56a7e84d8 100644 --- a/server/notification.js +++ b/server/notification.js @@ -25,6 +25,7 @@ const DingDing = require("./notification-providers/dingding"); const Bark = require("./notification-providers/bark"); const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); +const GoogleChat = require("./notification-providers/google-chat"); class Notification { @@ -62,6 +63,7 @@ class Notification { new Bark(), new SerwerSMS(), new Stackfield(), + new GoogleChat() ]; for (let item of list) { diff --git a/src/components/notifications/GoogleChat.vue b/src/components/notifications/GoogleChat.vue new file mode 100644 index 000000000..c19cae0de --- /dev/null +++ b/src/components/notifications/GoogleChat.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 155a1ab26..678106102 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -24,6 +24,7 @@ import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; +import GoogleChat from './GoogleChat.vue'; /** * Manage all notification form. @@ -57,6 +58,7 @@ const NotificationFormList = { "Bark": Bark, "serwersms": SerwerSMS, "stackfield": Stackfield, + "Google Chat": GoogleChat } export default NotificationFormList From 83984668608fc9f3ff8e01f6c90fec4d8ecffff3 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sat, 11 Dec 2021 23:50:03 +0100 Subject: [PATCH 2/7] order notification types by name --- src/components/notifications/index.js | 44 +++++++++++++-------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 678106102..a7c967edf 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -32,33 +32,33 @@ import GoogleChat from './GoogleChat.vue'; * @type { Record } */ const NotificationFormList = { - "telegram": Telegram, - "webhook": Webhook, - "smtp": STMP, - "discord": Discord, - "teams": Teams, - "signal": Signal, - "gotify": Gotify, - "slack": Slack, - "rocket.chat": RocketChat, - "pushover": Pushover, - "pushy": Pushy, - "octopush": Octopush, - "promosms": PromoSMS, - "clicksendsms": ClickSendSMS, - "lunasea": LunaSea, - "Feishu": Feishu, "AliyunSMS": AliyunSMS, "apprise": Apprise, - "pushbullet": Pushbullet, - "line": Line, - "mattermost": Mattermost, - "matrix": Matrix, - "DingDing": DingDing, "Bark": Bark, + "clicksendsms": ClickSendSMS, + "DingDing": DingDing, + "discord": Discord, + "smtp": STMP, + "Feishu": Feishu, + "Google Chat": GoogleChat, + "gotify": Gotify, + "line": Line, + "lunasea": LunaSea, + "matrix": Matrix, + "mattermost": Mattermost, + "octopush": Octopush, + "promosms": PromoSMS, + "pushbullet": Pushbullet, + "pushover": Pushover, + "pushy": Pushy, + "rocket.chat": RocketChat, "serwersms": SerwerSMS, + "signal": Signal, + "slack": Slack, "stackfield": Stackfield, - "Google Chat": GoogleChat + "teams": Teams, + "telegram": Telegram, + "webhook": Webhook } export default NotificationFormList From a71569379ea9bbab2360ed0b129865124721ebf3 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sun, 12 Dec 2021 00:01:12 +0100 Subject: [PATCH 3/7] add missing import --- server/notification-providers/google-chat.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index f73f4b5a5..897dd691b 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -2,6 +2,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); +const { UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { From 8ad6bd31d40f67c58f542cfc8775765eed7cb47b Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sun, 12 Dec 2021 00:08:33 +0100 Subject: [PATCH 4/7] Revert "order notification types by name" This reverts commit 83984668608fc9f3ff8e01f6c90fec4d8ecffff3. --- src/components/notifications/index.js | 42 +++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index a7c967edf..678106102 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -32,33 +32,33 @@ import GoogleChat from './GoogleChat.vue'; * @type { Record } */ const NotificationFormList = { - "AliyunSMS": AliyunSMS, - "apprise": Apprise, - "Bark": Bark, - "clicksendsms": ClickSendSMS, - "DingDing": DingDing, - "discord": Discord, + "telegram": Telegram, + "webhook": Webhook, "smtp": STMP, - "Feishu": Feishu, - "Google Chat": GoogleChat, + "discord": Discord, + "teams": Teams, + "signal": Signal, "gotify": Gotify, - "line": Line, - "lunasea": LunaSea, - "matrix": Matrix, - "mattermost": Mattermost, - "octopush": Octopush, - "promosms": PromoSMS, - "pushbullet": Pushbullet, + "slack": Slack, + "rocket.chat": RocketChat, "pushover": Pushover, "pushy": Pushy, - "rocket.chat": RocketChat, + "octopush": Octopush, + "promosms": PromoSMS, + "clicksendsms": ClickSendSMS, + "lunasea": LunaSea, + "Feishu": Feishu, + "AliyunSMS": AliyunSMS, + "apprise": Apprise, + "pushbullet": Pushbullet, + "line": Line, + "mattermost": Mattermost, + "matrix": Matrix, + "DingDing": DingDing, + "Bark": Bark, "serwersms": SerwerSMS, - "signal": Signal, - "slack": Slack, "stackfield": Stackfield, - "teams": Teams, - "telegram": Telegram, - "webhook": Webhook + "Google Chat": GoogleChat } export default NotificationFormList From a6072a0e306d44c5a5094601e8d6661e31f50878 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Wed, 15 Dec 2021 13:40:21 +0100 Subject: [PATCH 5/7] google chat: only show offline message in notification when service went down --- server/notification-providers/google-chat.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index 897dd691b..1610553c7 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -2,7 +2,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); -const { UP } = require("../../src/util"); +const { DOWN, UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { @@ -15,16 +15,16 @@ class GoogleChat extends NotificationProvider { let textMsg = '' if (heartbeatJSON && heartbeatJSON.status === UP) { - textMsg = `✅ Application is back online`; - } else { - textMsg = `🔴 Application went down`; + textMsg = `✅ Application is back online\n`; + } else if (heartbeatJSON && heartbeatJSON.status === DOWN) { + textMsg = `🔴 Application went down\n`; } if (monitorJSON && monitorJSON.name) { - textMsg += `\n*${monitorJSON.name}*`; + textMsg += `*${monitorJSON.name}*\n`; } - textMsg += `\n${msg}`; + textMsg += `${msg}`; const baseURL = await setting("primaryBaseURL"); if (baseURL) { From f6fc3737fcb7d27582bd0dde6732157efc43138f Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 30 Dec 2021 00:10:54 +0800 Subject: [PATCH 6/7] Change name from "Google Chat" to Google Chat (Google Workspace only) --- src/components/notifications/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 678106102..9d870f91c 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -1,4 +1,4 @@ -import STMP from "./SMTP.vue" +import STMP from "./SMTP.vue"; import Telegram from "./Telegram.vue"; import Discord from "./Discord.vue"; import Webhook from "./Webhook.vue"; @@ -23,8 +23,8 @@ import AliyunSMS from "./AliyunSms.vue"; import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; import SerwerSMS from "./SerwerSMS.vue"; -import Stackfield from './Stackfield.vue'; -import GoogleChat from './GoogleChat.vue'; +import Stackfield from "./Stackfield.vue"; +import GoogleChat from "./GoogleChat.vue"; /** * Manage all notification form. @@ -58,7 +58,7 @@ const NotificationFormList = { "Bark": Bark, "serwersms": SerwerSMS, "stackfield": Stackfield, - "Google Chat": GoogleChat -} + "Google Chat (Google Workspace only)": GoogleChat +}; -export default NotificationFormList +export default NotificationFormList; From d7cb4fa331260514f5d1fddab242bfb0623bc9e5 Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Thu, 30 Dec 2021 08:12:25 +0200 Subject: [PATCH 7/7] Update bg-BG.js - Updated Bulgarian language file --- src/languages/bg-BG.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index 180b766d1..a731ad09a 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -200,7 +200,7 @@ export default { "Primary Base URL": "Основен базов URL адрес", "Push URL": "Генериран Push URL адрес", needPushEvery: "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди", - pushOptionalParams: "Допълнителни, но незадължителни параметри: {0}", + pushOptionalParams: "Допълнителни, но не задължителни параметри: {0}", defaultNotificationName: "Моето {notification} известяване ({number})", here: "тук", Required: "Задължително поле", @@ -351,4 +351,13 @@ export default { serwersmsPhoneNumber: "Телефон номер", serwersmsSenderName: "SMS Подател име (регистриран през клиентския портал)", stackfield: "Stackfield", + smtpDkimSettings: "DKIM Настройки", + smtpDkimDesc: "Моля, вижте Nodemailer DKIM {0} за инструкции.", + documentation: "документация", + smtpDkimDomain: "Домейн", + smtpDkimKeySelector: "Селектор на ключ", + smtpDkimPrivateKey: "Частен ключ", + smtpDkimHashAlgo: "Хеш алгоритъм (по желание)", + smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)", + smtpDkimskipFields: "Хедър ключове, които да не се подписеат (по желание)", };