SetNetworkInterface.qml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import QtQuick 2.5
  2. import ApplicationLauncher 1.0
  3. Item {
  4. property string mode: "static"
  5. property string ifacename: "eth0"
  6. property string address: "192.168.0.125"
  7. property string netmask: "255.255.255.0"
  8. property string gateway: "192.168.0.10"
  9. property string infile: "/etc/networks/interfaces"
  10. property string outfile: "/etc/networks/interfaces"
  11. function doSetInterface() {
  12. setInterface.launchScript();
  13. }
  14. Application {
  15. id: writeInterfaces
  16. outFName: outfile
  17. onAppFinished: {
  18. console.log("IfaceDone");
  19. }
  20. onAppStarted: {
  21. console.debug("IFACEappStarted :");
  22. }
  23. onAppError: {
  24. console.debug("IFACEappError : " + exitError + " appStatus : " + exitStatus + " appCode " + exitCode );
  25. }
  26. }
  27. Application {
  28. id: setInterface
  29. appName: "cat"
  30. arguments: infile
  31. onAppFinished: {
  32. console.debug("AppFinished :");
  33. //console.debug("appError : " + exitError + " appStatus : " + exitStatus + " appCode " + exitCode );
  34. console.debug("stdERR :" + stdERR);
  35. //console.debug("stdOUT :" + stdOUT);
  36. //console.debug("======================================");
  37. var lines = stdOUT.split(/[\r\n]+/g);
  38. var idx = 0;
  39. var iface = [];
  40. var inIface = 0;
  41. lines.forEach(function(entry) {
  42. if (entry.length > 0) {
  43. if(entry.charAt(0) === '#'){
  44. //console.log(idx + ":: " + "=======>:" + JSON.stringify(entry));
  45. } else {
  46. if (entry.indexOf("iface") !== -1){ //Interface Entry start
  47. var ifaceEntry = entry.split(" ");
  48. if ((ifaceEntry.length >=2) && (ifaceEntry[1] === "eth0")) {
  49. iface.push({index: idx, txt: entry});
  50. inIface = 1;
  51. } else {
  52. inIface = 0;
  53. }
  54. } else {
  55. if(inIface === 1) {
  56. iface.push({index: idx, txt: entry});
  57. }
  58. }
  59. }
  60. }
  61. ++idx;
  62. });
  63. lines.splice(iface[0].index, iface[iface.length - 1].index - iface[0].index + 1);
  64. var insertIdx = iface[0].index;
  65. var insertText;
  66. if(mode === "static") {
  67. insertText = "iface " + ifacename + " inet " + mode;
  68. lines.splice(insertIdx, 0, insertText);
  69. ++insertIdx;
  70. insertText = "\taddress " + address;
  71. lines.splice(insertIdx, 0, insertText);
  72. ++insertIdx;
  73. insertText = "\tnetmask " + netmask;
  74. lines.splice(insertIdx, 0, insertText);
  75. ++insertIdx;
  76. //Broadcas Adresse ausrechnen
  77. var wrkAddr = address.split(".");
  78. var ipAddress = new Uint8Array(4);
  79. var i;
  80. for (i = 0; i< 4; i++) {
  81. ipAddress[i] = wrkAddr[i];
  82. }
  83. wrkAddr = netmask.split(".");
  84. var ipMask = new Uint8Array(4);
  85. for (i = 0; i< 4; i++) {
  86. ipMask[i] = wrkAddr[i];
  87. }
  88. var broadcastUINT = new Uint8Array(4);
  89. for (i = 0; i< 4; i++) {
  90. broadcastUINT[i] = ipAddress[i] | (~ipMask[i]);
  91. }
  92. var broadcast = broadcastUINT[0] +"." +
  93. broadcastUINT[1] +"." + broadcastUINT[2] +"." +
  94. broadcastUINT[3];
  95. insertText = "\tbroadcast " + broadcast;
  96. lines.splice(insertIdx, 0, insertText);
  97. ++insertIdx;
  98. insertText = "\tpost-up echo " + "'nameserver " + gateway + "' > /etc/resolv.conf";
  99. lines.splice(insertIdx, 0, insertText);
  100. } else if (mode === "dhcp") {
  101. insertText = "iface " + ifacename + " inet " + mode;
  102. lines.splice(insertIdx, 0, insertText);
  103. ++insertIdx;
  104. }
  105. var cmd = "echo -e " + "\"";
  106. lines.forEach(function(entry){
  107. cmd = cmd + entry + "\\n"
  108. //console.log(JSON.stringify(entry));
  109. });
  110. cmd = cmd + "\"";
  111. writeInterfaces.appName = cmd;
  112. writeInterfaces.launchScript();
  113. }
  114. onAppStarted: {
  115. console.debug("appStarted :");
  116. console.debug("appError : " + exitError + " appStatus : " + exitStatus + " appCode " + exitCode );
  117. }
  118. onAppError: {
  119. console.debug("appError : " + exitError + " appStatus : " + exitStatus + " appCode " + exitCode );
  120. }
  121. }
  122. }