12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- const Discord = require("discord.js");
- const client = new Discord.Client();
- const config = require("config");
- const WebHooks = require('node-webhooks');
- const express = require("express");
- const myParser = require("body-parser");
- const fs = require('fs');
- const app = express();
- let currentComponent;
- client.on('ready', () => {
- discordClientCBS.forEach((cb) => {
- cb();
- });
- console.log(`DISCORD Logged in as ${client.user.username}!`);
- });
- client.login(config.get('discord.token'));
- let discordClientCBS = [];
- const getDiscordClient = (cb) => {
- if (client.status === 0) return cb();
- else discordClientCBS.push(cb);
- };
- const logToDiscord = (message, critical, extraFields, cb = ()=>{}) => {
- getDiscordClient(() => {
- let richEmbed = new Discord.RichEmbed();
- richEmbed.setAuthor(config.get("alerterName"), config.get("favicon"), config.get("statusPage"));
- if (critical === true) {
- richEmbed.setColor("#d9534f");
- } else if (critical === false) {
- richEmbed.setColor("#4ca74c");
- }
- richEmbed.setDescription(message);
- // richEmbed.setFooter("Footer", "https://musare.com/favicon-194x194.png");
- // richEmbed.setImage("https://musare.com/favicon-194x194.png");
- richEmbed.setThumbnail(config.get("thumbail"));
- richEmbed.setTimestamp(new Date());
- richEmbed.setTitle(config.get("alertName"));
- richEmbed.setURL(config.get("statusPage"));
- if(typeof extraFields !== 'undefined' && extraFields) {
- extraFields.forEach((extraField) => {
- richEmbed.addField(extraField.name, extraField.value, extraField.inline);
- });
- }
- client.channels.get(config.get('discord.loggingChannel')).sendEmbed(richEmbed).then(() => {
- cb();
- }).then((reason) => {
- cb(reason);
- });
- });
- };
- app.use(myParser.urlencoded({extended : true}));
- app.post("/", function(request, response) {
- let alertType = request.body.alertTypeFriendlyName;
- if (alertType === "Up") {
- var critical = false;
- } else if (alertType === "Down") {
- var critical = true;
- }
- logToDiscord(config.get("alertDescription"), critical, [{name: "Name:", value: request.body.monitorFriendlyName, inline: false}, {name: "URL:", value: request.body.monitorURL, inline: false}, {name: "Status:", value: request.body.alertTypeFriendlyName, inline: false}]);
- response.end('{"success" : "Logged Successfully", "status" : 200}');
- });
- app.listen(config.get("listenerPort"));
|