devicescripts.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var deviceScripts = {
  2. manualRouter: {
  3. onPacketReceived: function(device, packet) {
  4. for (var i = 0; i < device.rules.length; i++) {
  5. if (device.rules[i].dstip == packet.network.dstip) {
  6. sendPacket(device.id, device.rules[i].portNum, packet);
  7. }
  8. }
  9. }
  10. },
  11. hub: {
  12. onPacketReceived: function (device, packet) {
  13. //.
  14. }
  15. },
  16. ping: {
  17. onPacketReceived: function(device, packet) {
  18. if(packet.transport.proto == "ICMP"){
  19. var new_packet = {
  20. network: {
  21. srcip: packet.network.dstip,
  22. dstip: packet.network.srcip
  23. },
  24. transport: {
  25. proto: "ICMP"
  26. }
  27. };
  28. sendPacket(device.id, 0, new_packet);
  29. }
  30. }
  31. },
  32. modem: {
  33. onPacketReceived: function(device, packet) {
  34. if(packet.network.dstip == device.id){//look up ip in NAT table
  35. var new_packet = {
  36. network: {
  37. srcip: packet.network.srcip,
  38. dstip: getPortRecipient(device.id, 0)
  39. }
  40. };
  41. sendPacket(device.id, 0, new_packet);
  42. } else { //replace src ip with device IP and save in NAT table
  43. var new_packet = {
  44. network: {
  45. srcip: device.id,
  46. dstip: packet.network.dstip
  47. }
  48. };
  49. sendPacket(device.id, 1, new_packet);
  50. }
  51. }
  52. }
  53. }