server.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // ZeroTier distributed HTTP test coordinator and result-reporting server
  2. // ---------------------------------------------------------------------------
  3. // Customizable parameters:
  4. var SERVER_PORT = 18080;
  5. // ---------------------------------------------------------------------------
  6. var fs = require('fs');
  7. var express = require('express');
  8. var app = express();
  9. app.use(function(req,res,next) {
  10. req.rawBody = '';
  11. req.on('data', function(chunk) { req.rawBody += chunk.toString(); });
  12. req.on('end', function() { return next(); });
  13. });
  14. var knownAgents = {};
  15. app.get('/:agentId',function(req,res) {
  16. var agentId = req.params.agentId;
  17. if ((!agentId)||(agentId.length !== 32))
  18. return res.status(404).send('');
  19. knownAgents[agentId] = Date.now();
  20. return res.status(200).send(JSON.stringify(Object.keys(knownAgents)));
  21. });
  22. app.post('/:testNumber/:agentId',function(req,res) {
  23. var testNumber = req.params.testNumber;
  24. var agentId = req.params.agentId;
  25. if ((!agentId)||(agentId.length !== 32))
  26. return res.status(404).send('');
  27. var receiveTime = Date.now();
  28. var resultData = null;
  29. try {
  30. resultData = JSON.parse(req.rawBody);
  31. } catch (e) {
  32. resultData = req.rawBody;
  33. }
  34. result = {
  35. agentId: agentId,
  36. testNumber: parseInt(testNumber),
  37. receiveTime: receiveTime,
  38. results: resultData
  39. };
  40. testNumber = testNumber.toString();
  41. while (testNumber.length < 10)
  42. testNumber = '0' + testNumber;
  43. fs.writeFile('result_'+testNumber+'_'+agentId,JSON.stringify(result),function(err) {
  44. console.log(result);
  45. });
  46. return res.status(200).send('');
  47. });
  48. var expressServer = app.listen(SERVER_PORT,function () {
  49. console.log('LISTENING ON '+SERVER_PORT);
  50. console.log('');
  51. });