Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  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. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement