Browse Source
Merge pull request #133 from NiNiyas/lunasea-support
Adds support for LunaSea notifications
pull/145/head
Louis Lam
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
56 additions and
27 deletions
-
server/notification.js
-
src/components/NotificationDialog.vue
|
|
@ -235,6 +235,41 @@ class Notification { |
|
|
|
|
|
|
|
return Notification.apprise(notification, msg) |
|
|
|
|
|
|
|
} else if (notification.type === "lunasea") { |
|
|
|
let lunaseadevice = "https://notify.lunasea.app/v1/custom/device/" + notification.lunaseaDevice |
|
|
|
|
|
|
|
try { |
|
|
|
if (heartbeatJSON == null) { |
|
|
|
let testdata = { |
|
|
|
"title": "Uptime Kuma Alert", |
|
|
|
"body": "Testing Successful.", |
|
|
|
} |
|
|
|
await axios.post(lunaseadevice, testdata) |
|
|
|
return okMsg; |
|
|
|
} |
|
|
|
|
|
|
|
if (heartbeatJSON["status"] == 0) { |
|
|
|
let downdata = { |
|
|
|
"title": "UptimeKuma Alert:" + monitorJSON["name"], |
|
|
|
"body": "[🔴 Down]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], |
|
|
|
} |
|
|
|
await axios.post(lunaseadevice, downdata) |
|
|
|
return okMsg; |
|
|
|
} |
|
|
|
|
|
|
|
if (heartbeatJSON["status"] == 1) { |
|
|
|
let updata = { |
|
|
|
"title": "UptimeKuma Alert:" + monitorJSON["name"], |
|
|
|
"body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], |
|
|
|
} |
|
|
|
await axios.post(lunaseadevice, updata) |
|
|
|
return okMsg; |
|
|
|
} |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
throwGeneralAxiosError(error) |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
throw new Error("Notification type is not supported") |
|
|
|
} |
|
|
|
|
|
@ -13,33 +13,16 @@ |
|
|
|
<div class="mb-3"> |
|
|
|
<label for="type" class="form-label">Notification Type</label> |
|
|
|
<select id="type" v-model="notification.type" class="form-select"> |
|
|
|
<option value="telegram"> |
|
|
|
Telegram |
|
|
|
</option> |
|
|
|
<option value="webhook"> |
|
|
|
Webhook |
|
|
|
</option> |
|
|
|
<option value="smtp"> |
|
|
|
Email (SMTP) |
|
|
|
</option> |
|
|
|
<option value="discord"> |
|
|
|
Discord |
|
|
|
</option> |
|
|
|
<option value="signal"> |
|
|
|
Signal |
|
|
|
</option> |
|
|
|
<option value="gotify"> |
|
|
|
Gotify |
|
|
|
</option> |
|
|
|
<option value="slack"> |
|
|
|
Slack |
|
|
|
</option> |
|
|
|
<option value="pushover"> |
|
|
|
Pushover |
|
|
|
</option> |
|
|
|
<option value="apprise"> |
|
|
|
Apprise (Support 50+ Notification services) |
|
|
|
</option> |
|
|
|
<option value="telegram">Telegram</option> |
|
|
|
<option value="webhook">Webhook</option> |
|
|
|
<option value="smtp">Email (SMTP)</option> |
|
|
|
<option value="discord">Discord</option> |
|
|
|
<option value="signal">Signal</option> |
|
|
|
<option value="gotify">Gotify</option> |
|
|
|
<option value="slack">Slack</option> |
|
|
|
<option value="pushover">Pushover</option> |
|
|
|
<option value="lunasea">LunaSea</option> |
|
|
|
<option value="apprise">Apprise (Support 50+ Notification services)</option> |
|
|
|
</select> |
|
|
|
</div> |
|
|
|
|
|
|
@ -323,6 +306,17 @@ |
|
|
|
</p> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-if="notification.type === 'lunasea'"> |
|
|
|
<div class="mb-3"> |
|
|
|
<label for="lunasea-device" class="form-label">LunaSea Device ID<span style="color:red;"><sup>*</sup></span></label> |
|
|
|
<input id="lunasea-device" v-model="notification.lunaseaDevice" type="text" class="form-control" required> |
|
|
|
<div class="form-text"> |
|
|
|
<p><span style="color:red;"><sup>*</sup></span>Required</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="modal-footer"> |
|
|
|
<button v-if="id" type="button" class="btn btn-danger" :disabled="processing" @click="deleteConfirm"> |
|
|
|