mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-24 07:14:04 +00:00
Merge branch 'louislam:master' into bulgarian
This commit is contained in:
commit
1baee42cf5
11 changed files with 183 additions and 3 deletions
45
server/notification-providers/onebot.js
Normal file
45
server/notification-providers/onebot.js
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
const NotificationProvider = require("./notification-provider");
|
||||||
|
const axios = require("axios");
|
||||||
|
|
||||||
|
class OneBot extends NotificationProvider {
|
||||||
|
|
||||||
|
name = "OneBot";
|
||||||
|
|
||||||
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
let okMsg = "Sent Successfully.";
|
||||||
|
try {
|
||||||
|
let httpAddr = notification.httpAddr;
|
||||||
|
if (!httpAddr.startsWith("http")) {
|
||||||
|
httpAddr = "http://" + httpAddr;
|
||||||
|
}
|
||||||
|
if (!httpAddr.endsWith("/")) {
|
||||||
|
httpAddr += "/";
|
||||||
|
}
|
||||||
|
let onebotAPIUrl = httpAddr + "send_msg";
|
||||||
|
let config = {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Authorization": "Bearer " + notification.accessToken,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let pushText = "UptimeKuma Alert: " + msg;
|
||||||
|
let data = {
|
||||||
|
"auto_escape": true,
|
||||||
|
"message": pushText,
|
||||||
|
};
|
||||||
|
if (notification.msgType == "group") {
|
||||||
|
data["message_type"] = "group";
|
||||||
|
data["group_id"] = notification.recieverId;
|
||||||
|
} else {
|
||||||
|
data["message_type"] = "private";
|
||||||
|
data["user_id"] = notification.recieverId;
|
||||||
|
}
|
||||||
|
await axios.post(onebotAPIUrl, data, config);
|
||||||
|
return okMsg;
|
||||||
|
} catch (error) {
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = OneBot;
|
52
server/notification-providers/pushdeer.js
Normal file
52
server/notification-providers/pushdeer.js
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
const NotificationProvider = require("./notification-provider");
|
||||||
|
const axios = require("axios");
|
||||||
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
|
class PushDeer extends NotificationProvider {
|
||||||
|
|
||||||
|
name = "PushDeer";
|
||||||
|
|
||||||
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
let okMsg = "Sent Successfully.";
|
||||||
|
let pushdeerlink = "https://api2.pushdeer.com/message/push";
|
||||||
|
|
||||||
|
let valid = msg != null && monitorJSON != null && heartbeatJSON != null;
|
||||||
|
|
||||||
|
let title;
|
||||||
|
if (valid && heartbeatJSON.status == UP) {
|
||||||
|
title = "## Uptime Kuma: " + monitorJSON.name + " up";
|
||||||
|
} else if (valid && heartbeatJSON.status == DOWN) {
|
||||||
|
title = "## Uptime Kuma: " + monitorJSON.name + " down";
|
||||||
|
} else {
|
||||||
|
title = "## Uptime Kuma Message";
|
||||||
|
}
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
"pushkey": notification.pushdeerKey,
|
||||||
|
"text": title,
|
||||||
|
"desp": msg.replace(/\n/g, "\n\n"),
|
||||||
|
"type": "markdown",
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
let res = await axios.post(pushdeerlink, data);
|
||||||
|
|
||||||
|
if ("error" in res.data) {
|
||||||
|
let error = res.data.error;
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
}
|
||||||
|
if (res.data.content.result.length === 0) {
|
||||||
|
let error = "Invalid PushDeer key";
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
} else if (JSON.parse(res.data.content.result[0]).success != "ok") {
|
||||||
|
let error = "Unknown error";
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
}
|
||||||
|
return okMsg;
|
||||||
|
} catch (error) {
|
||||||
|
this.throwGeneralAxiosError(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = PushDeer;
|
|
@ -31,6 +31,8 @@ const WeCom = require("./notification-providers/wecom");
|
||||||
const GoogleChat = require("./notification-providers/google-chat");
|
const GoogleChat = require("./notification-providers/google-chat");
|
||||||
const Gorush = require("./notification-providers/gorush");
|
const Gorush = require("./notification-providers/gorush");
|
||||||
const Alerta = require("./notification-providers/alerta");
|
const Alerta = require("./notification-providers/alerta");
|
||||||
|
const OneBot = require("./notification-providers/onebot");
|
||||||
|
const PushDeer = require("./notification-providers/pushdeer");
|
||||||
|
|
||||||
class Notification {
|
class Notification {
|
||||||
|
|
||||||
|
@ -73,6 +75,8 @@ class Notification {
|
||||||
new GoogleChat(),
|
new GoogleChat(),
|
||||||
new Gorush(),
|
new Gorush(),
|
||||||
new Alerta(),
|
new Alerta(),
|
||||||
|
new OneBot(),
|
||||||
|
new PushDeer(),
|
||||||
];
|
];
|
||||||
|
|
||||||
for (let item of list) {
|
for (let item of list) {
|
||||||
|
|
|
@ -1228,7 +1228,7 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only starts importing if the backup file contains at least one proxy
|
// Only starts importing if the backup file contains at least one proxy
|
||||||
if (proxyListData.length >= 1) {
|
if (proxyListData && proxyListData.length >= 1) {
|
||||||
const proxies = await R.findAll("proxy");
|
const proxies = await R.findAll("proxy");
|
||||||
|
|
||||||
// Loop over proxy list and save proxies
|
// Loop over proxy list and save proxies
|
||||||
|
|
|
@ -286,6 +286,7 @@ export default {
|
||||||
|
|
||||||
.dark &:hover {
|
.dark &:hover {
|
||||||
background: $dark-font-color;
|
background: $dark-font-color;
|
||||||
|
color: $dark-font-color2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
src/components/notifications/OneBot.vue
Normal file
34
src/components/notifications/OneBot.vue
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<template>
|
||||||
|
<div class="mb-3">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="onebot-http-addr" class="form-label">{{ $t("onebotHttpAddress") }}<span style="color: red;"><sup>*</sup></span></label>
|
||||||
|
<input id="HttpUrl" v-model="$parent.notification.httpAddr" type="text" class="form-control" required>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="onebot-access-token" class="form-label">AccessToken<span style="color: red;"><sup>*</sup></span></label>
|
||||||
|
<input id="HttpUrl" v-model="$parent.notification.accessToken" type="text" class="form-control" required>
|
||||||
|
<div class="form-text">
|
||||||
|
<p>{{ $t("onebotSafetyTips") }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="onebot-msg-type" class="form-label">{{ $t("onebotMessageType") }}</label>
|
||||||
|
<select id="onebot-msg-type" v-model="$parent.notification.msgType" class="form-select">
|
||||||
|
<option value="group">{{ $t("onebotGroupMessage") }}</option>
|
||||||
|
<option value="private">{{ $t("onebotPrivateMessage") }}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="onebot-reciever-id" class="form-label">{{ $t("onebotUserOrGroupId") }}<span style="color: red;"><sup>*</sup></span></label>
|
||||||
|
<input id="secretKey" v-model="$parent.notification.recieverId" type="text" class="form-control" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-text">
|
||||||
|
<i18n-t tag="p" keypath="Read more:">
|
||||||
|
<a href="https://github.com/botuniverse/onebot-11" target="_blank">https://github.com/botuniverse/onebot-11</a>
|
||||||
|
</i18n-t>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
19
src/components/notifications/PushDeer.vue
Normal file
19
src/components/notifications/PushDeer.vue
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<template>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="pushdeer-key" class="form-label">{{ $t("PushDeer Key") }}</label>
|
||||||
|
<HiddenInput id="pushdeer-key" v-model="$parent.notification.pushdeerKey" :required="true" autocomplete="one-time-code" placeholder="PDUxxxx"></HiddenInput>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<i18n-t tag="p" keypath="More info on:" style="margin-top: 8px;">
|
||||||
|
<a href="http://www.pushdeer.com/" rel="noopener noreferrer" target="_blank">http://www.pushdeer.com/</a>
|
||||||
|
</i18n-t>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import HiddenInput from "../HiddenInput.vue";
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
HiddenInput,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -29,6 +29,8 @@ import WeCom from "./WeCom.vue";
|
||||||
import GoogleChat from "./GoogleChat.vue";
|
import GoogleChat from "./GoogleChat.vue";
|
||||||
import Gorush from "./Gorush.vue";
|
import Gorush from "./Gorush.vue";
|
||||||
import Alerta from "./Alerta.vue";
|
import Alerta from "./Alerta.vue";
|
||||||
|
import OneBot from "./OneBot.vue";
|
||||||
|
import PushDeer from "./PushDeer.vue";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manage all notification form.
|
* Manage all notification form.
|
||||||
|
@ -67,6 +69,8 @@ const NotificationFormList = {
|
||||||
"GoogleChat": GoogleChat,
|
"GoogleChat": GoogleChat,
|
||||||
"gorush": Gorush,
|
"gorush": Gorush,
|
||||||
"alerta": Alerta,
|
"alerta": Alerta,
|
||||||
|
"OneBot": OneBot,
|
||||||
|
"PushDeer": PushDeer,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default NotificationFormList;
|
export default NotificationFormList;
|
||||||
|
|
|
@ -445,4 +445,11 @@ export default {
|
||||||
"Domain Name Expiry Notification": "Domain Name Expiry Notification",
|
"Domain Name Expiry Notification": "Domain Name Expiry Notification",
|
||||||
"Proxy": "Proxy",
|
"Proxy": "Proxy",
|
||||||
"Date Created": "Date Created",
|
"Date Created": "Date Created",
|
||||||
|
onebotHttpAddress: "OneBot HTTP Address",
|
||||||
|
onebotMessageType: "OneBot Message Type",
|
||||||
|
onebotGroupMessage: "Group",
|
||||||
|
onebotPrivateMessage: "Private",
|
||||||
|
onebotUserOrGroupId: "Group/User ID",
|
||||||
|
onebotSafetyTips: "For safety, must set access token",
|
||||||
|
"PushDeer Key": "PushDeer Key",
|
||||||
};
|
};
|
||||||
|
|
|
@ -374,8 +374,8 @@ export default {
|
||||||
serwersmsSenderName: "SMS Имя Отправителя (регистрированный через пользовательский портал)",
|
serwersmsSenderName: "SMS Имя Отправителя (регистрированный через пользовательский портал)",
|
||||||
stackfield: "Stackfield",
|
stackfield: "Stackfield",
|
||||||
smtpDkimSettings: "DKIM Настройки",
|
smtpDkimSettings: "DKIM Настройки",
|
||||||
smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.",
|
smtpDkimDesc: "Пожалуйста ознакомьтесь с {0} Nodemailer DKIM для использования.",
|
||||||
documentation: "документация",
|
documentation: "документацией",
|
||||||
smtpDkimDomain: "Имя Домена",
|
smtpDkimDomain: "Имя Домена",
|
||||||
smtpDkimKeySelector: "Ключ",
|
smtpDkimKeySelector: "Ключ",
|
||||||
smtpDkimPrivateKey: "Приватный ключ",
|
smtpDkimPrivateKey: "Приватный ключ",
|
||||||
|
@ -389,4 +389,12 @@ export default {
|
||||||
alertaApiKey: "Ключ API",
|
alertaApiKey: "Ключ API",
|
||||||
alertaAlertState: "Состояние алерта",
|
alertaAlertState: "Состояние алерта",
|
||||||
alertaRecoverState: "Состояние восстановления",
|
alertaRecoverState: "Состояние восстановления",
|
||||||
|
Proxies: "Прокси",
|
||||||
|
default: "По умолчанию",
|
||||||
|
enabled: "Включено",
|
||||||
|
setAsDefault: "Установлено по умолчанию",
|
||||||
|
deleteProxyMsg: "Вы действительно хотите удалить этот прокси для всех мониторов?",
|
||||||
|
proxyDescription: "Прокси должны быть привязаны к монитору, чтобы работать.",
|
||||||
|
enableProxyDescription: "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.",
|
||||||
|
setAsDefaultProxyDescription: "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.",
|
||||||
};
|
};
|
||||||
|
|
|
@ -452,4 +452,10 @@ export default {
|
||||||
"Domain Name Expiry Notification": "域名到期时通知",
|
"Domain Name Expiry Notification": "域名到期时通知",
|
||||||
"Proxy": "代理",
|
"Proxy": "代理",
|
||||||
"Date Created": "创建于",
|
"Date Created": "创建于",
|
||||||
|
onebotHttpAddress: "OneBot HTTP 地址",
|
||||||
|
onebotMessageType: "OneBot 消息类型",
|
||||||
|
onebotGroupMessage: "群聊",
|
||||||
|
onebotPrivateMessage: "私聊",
|
||||||
|
onebotUserOrGroupId: "群组/用户ID",
|
||||||
|
onebotSafetyTips: "出于安全原因,请务必设置AccessToken",
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue