Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. 'use strict';
  2.  
  3. import exec from 'ssh-exec';
  4. import express from 'express';
  5. import zt from 'zt';
  6. import routine from 'promise-routine';
  7. import { createConnection } from 'mysql2';
  8. import { CronJob } from 'cron';
  9.  
  10. const app = express();
  11. app.set('json spaces', 3);
  12. const command = 'netstat -anp |grep 25565 |wc -l';
  13. const servers = [
  14. {loc: 'New Jersey', host: 'root@**.**.**.***'},
  15. {loc: 'Atlanta', host: 'root@**.**.***.**'},
  16. {loc: 'Los Angeles', host: 'root@**.**.**.*'}
  17. ];
  18. const db = createConnection({
  19. user: 'root',
  20. password: 'root',
  21. host: '127.0.0.1',
  22. database: 'xaph'
  23. });
  24.  
  25. let queryServers = function() {
  26. let promises = [];
  27. for(let server of servers) {
  28. let promise = new Promise((resolve, reject) => {
  29. exec(command, server.host, (err, stdout, stderror) => {
  30. if(err) reject(err); if(stderror) reject(stderror);
  31. resolve({loc: server.loc, players: parseInt(stdout.trim())});
  32. });
  33. });
  34. promises.push(promise);
  35. }
  36. return promises;
  37. }
  38.  
  39. let addDataPoint = function() {
  40. let date = new Date().getTime();
  41. Promise.all(queryServers()).then(servers => {
  42. for(let server of servers) {
  43. db.execute('INSERT INTO `servers` VALUES(?, ?, ?, ?)', [null, server.loc, server.players, date], (err, rows) => {
  44. if(err) return console.log(err);
  45. zt.log(`Successfully created new data point for ${server.loc}`);
  46. });
  47. }
  48. });
  49. }
  50.  
  51. let getDataPoints = function() {
  52. let data = [];
  53. return new Promise((resolve, reject) => resolve(data));
  54. // return new Promise((resolve, reject) => {
  55. // let json = [];
  56. // for(let server of servers) {
  57. // let data = [];
  58. // db.execute('SELECT `server`, `timestamp`, `players` FROM `servers` WHERE `server`=?', [server.loc], (err, rows) => {
  59. // rows = rows.sort((given, compared) => {
  60. // return given.timestamp - compared.timestamp;
  61. // });
  62. // for(let row of rows) {
  63. // data.push([
  64. // parseInt(row.timestamp),
  65. // row.players
  66. // ]);
  67. // }
  68. // json.push({
  69. // name: server.loc,
  70. // data: data
  71. // });
  72. // });
  73. // }
  74. // setTimeout(() => resolve(json), 100);
  75. // });
  76. }
  77.  
  78. let transact = new CronJob('* * * * * *', () => addDataPoint(), null, true, '');
  79.  
  80. //getDataPoints().then(data => console.log(data));
  81. app.get('/', (req, res) => {
  82. routine(server => {
  83. let json = [];
  84. let data = [];
  85. return new Promise((resolve, reject) => {
  86. db.execute('SELECT `server`, `timestamp`, `players` FROM `servers` WHERE `server`=?', [server.loc], (err, rows) => {
  87. if(err) reject(err);
  88. rows = rows.sort((a, b) => { return a.timestamp - b.timestamp });
  89. for(let row of rows) {
  90. data.push([
  91. parseInt(row.timestamp),
  92. row.players
  93. ]);
  94. }
  95. json.push({
  96. name: server.loc,
  97. data: data
  98. })
  99. resolve(json[0]);
  100. });
  101. });
  102. }, ...servers).then((data) => {
  103. res.status(200).jsonp(data)
  104. });
  105. });
  106.  
  107. app.listen(3333, () => zt.log('Listning on port 3333'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement