SHARE
TWEET

Untitled

a guest Jan 22nd, 2020 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function () {
  2.     const fs = require("fs");
  3.     let functions = require("./functions.js");
  4.     let Gamedig;
  5.     let guild;
  6.     let client;
  7.  
  8.     module.exports.startServerMonitor = function (gamedig, Guild, Client) {
  9.         console.log("Starting server status checker ...");
  10.         Gamedig = gamedig;
  11.         guild = Guild;
  12.         client = Client;
  13.         functions.readConfig();
  14.         serverOfflineDetector();
  15.         console.log("server status checker started");
  16.     };
  17.  
  18.     module.exports.rereadConfig = function () {
  19.         functions.readConfig();
  20.     };
  21.  
  22.     /*recursive function that checks the status of the server*/
  23.     async function serverOfflineDetector() {
  24.         while (configReloadInProgress) {
  25.             functions.sleep(5);
  26.         }
  27.         for (let i = 0; i < servers.length; i++) {
  28.             let server = servers[i];
  29.  
  30.             await Gamedig.query({
  31.                 type: server.serverType,
  32.                 host: server.serverIP,
  33.                 port: server.serverPort
  34.             })
  35.                 .then(state => {
  36.                     if (server.logPlayerNumers) {
  37.                         let fileLoc = `logs/${server.serverName}.csv`;
  38.  
  39.                         if (!fs.existsSync(fileLoc)) {
  40.                             fs.writeFile(fileLoc, "time;playercount\n", err => {
  41.                                 if (err != null) console.error(err)
  42.                             });
  43.                         }
  44.  
  45.                         let data = new Date().toLocaleString() + ";";
  46.  
  47.                         if (server.serverType === "arma3") {
  48.                             data = data + state.raw.numplayers;
  49.                         }
  50.                         if (server.serverType === "teamspeak3") {
  51.                             data = data + state.raw.virtualserver_clientsonline;
  52.                         }
  53.                         data = data + "\n";
  54.                         fs.appendFile(fileLoc, data, err => {
  55.                             if (err != null) console.error(err)
  56.                         });
  57.                     }
  58.                 })
  59.                 .catch(async error => {
  60.                     if (!server.notifyIfDown) return;
  61.  
  62.                     let currentDate = new Date();
  63.                     let startDate = new Date(currentDate.getTime());
  64.                     let endDate = new Date(currentDate.getTime());
  65.  
  66.                     startDate.setHours(doNotNotifyStart.toString().split(":")[0]);
  67.                     startDate.setMinutes(doNotNotifyStart.toString().split(":")[1]);
  68.  
  69.                     endDate.setHours(doNotNotifyEnd.toString().split(":")[0]);
  70.                     endDate.setMinutes(doNotNotifyEnd.toString().split(":")[1]);
  71.  
  72.                     currentDate.setHours(currentDate.getUTCHours());
  73.                     currentDate.setMinutes(currentDate.getUTCMinutes());
  74.  
  75.                     startDate.getTime();
  76.                     endDate.getTime();
  77.                     currentDate.getTime();
  78.  
  79.                     if (startDate < currentDate && endDate > currentDate) {
  80.                         console.log("Not notifying people because downtime is within planned period");
  81.                         return;
  82.                     }
  83.  
  84.                     if (server.lastDownPing == null) {
  85.                         server.lastDownPing = currentDate;
  86.                     } else if ((server.lastDownPing.getTime() + serverDownTimeout * 60000) > currentDate.getTime()) {
  87.                         console.log("Not notifying people");
  88.                         return;
  89.                     }
  90.  
  91.                     let channel = client.channels.get(channelID);
  92.  
  93.                     let users = [];
  94.                     for (let j = 0; j < mentionWhenDownUserIDs.length; j++) {
  95.                         await client.fetchUser(mentionWhenDownUserIDs[j])
  96.                             .then(user => users.push(user))
  97.                             .catch(e => console.error(e));
  98.                     }
  99.  
  100.                     users.forEach(user => msg = msg + " " + user);
  101.                     channel.send(msg);
  102.  
  103.                     server.lastDownPing = currentDate;
  104.                 });
  105.  
  106.         }
  107.  
  108.         await functions.sleep(downDetectorInterval);
  109.         serverOfflineDetector();
  110.     }
  111. })();
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top