You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

60 lines
1.1 KiB

  1. //Imports
  2. const router = require('../security/router');
  3. //Events
  4. const onHandshake = socket => {
  5. cons.onHandshake(socket);
  6. };
  7. const onDisconnect = socket => {
  8. cons.onDisconnect(socket);
  9. };
  10. const onRequest = (socket, msg, callback) => {
  11. msg.callback = callback;
  12. if (!msg.data)
  13. msg.data = {};
  14. if (msg.cpn) {
  15. if (!router.allowedCpn(msg))
  16. return;
  17. delete msg.threadModule;
  18. delete msg.module;
  19. cons.route(socket, msg);
  20. } else if (msg.threadModule) {
  21. if (!router.allowedGlobalCall(msg.threadModule, msg.method))
  22. return;
  23. delete msg.cpn;
  24. delete msg.module;
  25. cons.route(socket, msg);
  26. } else {
  27. if (!router.allowedGlobal(msg))
  28. return;
  29. const source = cons.players.find(p => p.socket.id === socket.id);
  30. msg.socket = socket;
  31. if (source)
  32. msg.data.sourceId = source.id;
  33. global[msg.module][msg.method](msg);
  34. }
  35. };
  36. const onConnection = socket => {
  37. socket.on('handshake', onHandshake.bind(null, socket));
  38. socket.on('disconnect', onDisconnect.bind(null, socket));
  39. socket.on('request', onRequest.bind(null, socket));
  40. socket.emit('handshake');
  41. };
  42. //Exports
  43. module.exports = onConnection;