index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. const express = require('express');
  2. const bodyparser = require('body-parser');
  3. const async = require('async');
  4. const ejs = require('ejs');
  5. const serve = require('./serve');
  6. var app = express();
  7. var engine = require("./engine");
  8. app.set('view engine', 'ejs');
  9. app.set('views', __dirname + '/web');
  10. // app.engine('ejs', require('ejs').renderFile);
  11. var locals = {
  12. title: "Simple Stats"
  13. };
  14. var localf = function (req, res, next) {
  15. res.locals = Object.assign(res.locals, locals);
  16. next();
  17. };
  18. app.use(localf);
  19. app.use(bodyparser.urlencoded({
  20. extended: true
  21. }));
  22. app.use(bodyparser.json());
  23. // Space for site requests
  24. app.use(serve("web", "ejs"));
  25. app.use("/api", function (req, res, next) {
  26. res.type("json");
  27. next();
  28. });
  29. app.get("/api/types", function (req, res) {
  30. res.send(JSON.stringify(engine.st.getServerTypes()));
  31. });
  32. app.get("/api/servers/list", function (req,res) {
  33. engine.serverMenager.list(function (data) {
  34. res.send(JSON.stringify(data));
  35. });
  36. });
  37. app.get("/api/servers/get/:id", function (req,res) {
  38. engine.serverMenager.getByID(Number(req.params.id), function (err, data) {
  39. if(err){
  40. res.send(JSON.stringify({
  41. success:false,
  42. msg: err
  43. }));
  44. return;
  45. }
  46. var server = data;
  47. engine.statusGrabber.getDetails(server.type, server.address, function(data) {
  48. if(data){
  49. data._id = Number(req.params.id);
  50. res.send(JSON.stringify(data));
  51. }else{
  52. res.send(JSON.stringify({
  53. success:false,
  54. msg: "Intertnal Error"
  55. }));
  56. }
  57. });
  58. });
  59. });
  60. app.post("/api/servers/add", function (req,res) {
  61. var type = req.body.type;
  62. var name = req.body.name;
  63. var address = req.body.address;
  64. engine.serverMenager.add(type, address, name);
  65. res.send(JSON.stringify({
  66. success: true
  67. }));
  68. });
  69. app.get("/api/servers/remove/:id", function (req, res) {
  70. var id = req.params.id;
  71. engine.serverMenager.remove(id);
  72. res.send(JSON.stringify({
  73. success: true
  74. }));
  75. });
  76. app.get("/api/trafic/update", function (req, res) {
  77. engine.serverMenager.list(function (data) {
  78. async.map(data, function (data, callback) {
  79. var server = data;
  80. engine.statusGrabber.getStatus(server.type, server.address, function(data) {
  81. var h = engine.statusGrabber.getResponseHandler(server.type);
  82. h(data, server.get("id"));
  83. callback(null, data);
  84. });
  85. }, function (err, map) {
  86. res.send(JSON.stringify(map));
  87. });
  88. });
  89. });
  90. app.get("/api/trafic/update/:id", function (req, res) {
  91. engine.serverMenager.getByID(Number(req.params.id), function (err, data) {
  92. if(err){
  93. res.send(JSON.stringify({
  94. success:false,
  95. msg: err
  96. }));
  97. return;
  98. }
  99. var server = data;
  100. engine.statusGrabber.getStatus(server.type, server.address, function(data) {
  101. var h = engine.statusGrabber.getResponseHandler(server.type);
  102. h(data, server.get("id"));
  103. res.send(JSON.stringify(data));
  104. });
  105. });
  106. });
  107. app.get("/api/trafic/get/all", function (req, res) {
  108. engine.statusGrabber.getTraffic(function (data) {
  109. res.send(JSON.stringify(data));
  110. });
  111. });
  112. app.get("/api/status", function (req, res) {
  113. engine.serverMenager.list(function (data) {
  114. async.map(data, function (data, callback) {
  115. var server = data;
  116. engine.statusGrabber.getStatus(server.type, server.address, function(data) {
  117. callback(null, data);
  118. });
  119. }, function (err, map) {
  120. res.send(JSON.stringify(map));
  121. });
  122. });
  123. });
  124. app.get("/api/status/:id", function (req, res) {
  125. engine.serverMenager.getByID(Number(req.params.id), function (err, data) {
  126. if(err){
  127. res.send(JSON.stringify({
  128. success:false,
  129. msg: err
  130. }));
  131. return;
  132. }
  133. var server = data;
  134. engine.statusGrabber.getStatus(server.type, server.address, function(data) {
  135. if(data){
  136. data._id = Number(req.params.id);
  137. res.send(JSON.stringify(data));
  138. }else{
  139. res.send("Intertnal Error");
  140. }
  141. });
  142. });
  143. });
  144. var cache = "";
  145. app.get("/api/details/cached", function (req, res) {
  146. res.send(cache);
  147. });
  148. app.get("/api/details", function (req, res) {
  149. engine.serverMenager.list(function (data) {
  150. async.map(data, function (data, callback) {
  151. var server = data;
  152. engine.statusGrabber.getStatus(server.type, server.address, function(data) {
  153. var h = engine.statusGrabber.getResponseHandler(server.type);
  154. data = h(data, server.get("id"), true);
  155. // data.name = server.name;
  156. var temp = {
  157. id: server.id,
  158. address: server.address,
  159. type: server.type,
  160. fullType: engine.st.getFullServerType(server.type),
  161. name: server.name,
  162. maxPlayers: data.traffic.maxplayers,
  163. players: data.traffic.players
  164. };
  165. callback(null, temp);
  166. });
  167. }, function (err, map) {
  168. var obj = JSON.stringify(map);
  169. cache = obj;
  170. res.send(obj);
  171. });
  172. });
  173. });
  174. app.use(function(req, res, next){
  175. res.render('index');
  176. });
  177. app.listen(80);