app.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const Discord = require("discord.js");
  2. const client = new Discord.Client();
  3. const config = require("config");
  4. const WebHooks = require('node-webhooks');
  5. const express = require("express");
  6. const myParser = require("body-parser");
  7. const fs = require('fs');
  8. const app = express();
  9. let currentComponent;
  10. client.on('ready', () => {
  11. discordClientCBS.forEach((cb) => {
  12. cb();
  13. });
  14. console.log(`DISCORD Logged in as ${client.user.username}!`);
  15. });
  16. client.login(config.get('discord.token'));
  17. let discordClientCBS = [];
  18. const getDiscordClient = (cb) => {
  19. if (client.status === 0) return cb();
  20. else discordClientCBS.push(cb);
  21. };
  22. const logToDiscord = (message, critical, extraFields, cb = ()=>{}) => {
  23. getDiscordClient(() => {
  24. let richEmbed = new Discord.RichEmbed();
  25. richEmbed.setAuthor(config.get("alerterName"), config.get("favicon"), config.get("statusPage"));
  26. if (critical === true) {
  27. richEmbed.setColor("#d9534f");
  28. } else if (critical === false) {
  29. richEmbed.setColor("#4ca74c");
  30. }
  31. richEmbed.setDescription(message);
  32. // richEmbed.setFooter("Footer", "https://musare.com/favicon-194x194.png");
  33. // richEmbed.setImage("https://musare.com/favicon-194x194.png");
  34. richEmbed.setThumbnail(config.get("thumbail"));
  35. richEmbed.setTimestamp(new Date());
  36. richEmbed.setTitle(config.get("alertName"));
  37. richEmbed.setURL(config.get("statusPage"));
  38. if(typeof extraFields !== 'undefined' && extraFields) {
  39. extraFields.forEach((extraField) => {
  40. richEmbed.addField(extraField.name, extraField.value, extraField.inline);
  41. });
  42. }
  43. client.channels.get(config.get('discord.loggingChannel')).sendEmbed(richEmbed).then(() => {
  44. cb();
  45. }).then((reason) => {
  46. cb(reason);
  47. });
  48. });
  49. };
  50. app.use(myParser.urlencoded({extended : true}));
  51. app.post("/", function(request, response) {
  52. let alertType = request.body.alertTypeFriendlyName;
  53. if (alertType === "Up") {
  54. var critical = false;
  55. } else if (alertType === "Down") {
  56. var critical = true;
  57. }
  58. 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}]);
  59. response.end('{"success" : "Logged Successfully", "status" : 200}');
  60. });
  61. app.listen(config.get("listenerPort"));