devicescripts.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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.hasOwnProperty("proto")){
  19. if(packet.transport.proto == "ICMP"){
  20. var new_packet = {
  21. network: {
  22. srcip: packet.network.dstip,
  23. dstip: packet.network.srcip
  24. },
  25. transport: {
  26. proto: "ICMP"
  27. }
  28. };
  29. sendPacket(device.id, 0, new_packet);
  30. }
  31. }
  32. }
  33. },
  34. modem: {
  35. onPacketReceived: function(device, packet) {
  36. if(packet.network.dstip == device.id){//look up ip in NAT table
  37. var new_packet = {};
  38. for (var i = 0; i < packetFields.length; i++) {
  39. console.log("copying layer " + packetFields[i].layer);
  40. if(packet.hasOwnProperty(packetFields[i].layer)){
  41. new_packet[packetFields[i].layer] = {};
  42. for (var j = 0; j < packetFields[i].fields.length; j++) {
  43. console.log("copying field " + packetFields[i].fields[j]);
  44. if(packet.hasOwnProperty(packetFields[i].fields[j])){
  45. console.log("FOUND field!");
  46. new_packet[packetFields[i].layer][ packetFields[i].fields[j] ] = packet[packetFields[i].layer][ packetFields[i].fields[j] ];
  47. console.log(new_packet[packetFields[i].layer]);
  48. }
  49. }
  50. }
  51. }
  52. new_packet.network.dstip = getPortRecipient(device.id, 0);
  53. sendPacket(device.id, 0, new_packet);
  54. } else { //replace src ip with device IP and save in NAT table
  55. var new_packet = {};
  56. console.log(packet);
  57. for (var i = 0; i < packetFields.length; i++) {
  58. console.log("copying layer " + packetFields[i].layer);
  59. if(packet.hasOwnProperty(packetFields[i].layer)){
  60. new_packet[packetFields[i].layer] = {};
  61. for (var j = 0; j < packetFields[i].fields.length; j++) {
  62. console.log("copying field " + packetFields[i].fields[j]);
  63. if(packet.hasOwnProperty(packetFields[i].fields[j])){
  64. new_packet[packetFields[i].layer][ packetFields[i].fields[j] ] = packet[packetFields[i].layer][ packetFields[i].fields[j] ];
  65. }
  66. }
  67. }
  68. }
  69. new_packet.network.srcip = device.id;
  70. sendPacket(device.id, 1, new_packet);
  71. }
  72. }
  73. }
  74. }