Interfaces.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php namespace helper;
  2. class Interfaces
  3. {
  4. public function getMacData()
  5. {
  6. $macData = array();
  7. exec("ifconfig -a | grep wlan | awk '{print \$1\" \"\$5}'", $interfaceArray);
  8. foreach ($interfaceArray as $interface) {
  9. $interface = explode(" ", $interface);
  10. $macData[$interface[0]] = $interface[1];
  11. }
  12. return $macData;
  13. }
  14. public function getUciID($interface)
  15. {
  16. $interfaceNumber = str_replace("wlan", "", $interface);
  17. if ($interfaceNumber === "0") {
  18. return 0;
  19. } elseif ($interfaceNumber === "0-1") {
  20. return 1;
  21. } elseif ($interfaceNumber === "0-2") {
  22. return 2;
  23. } else {
  24. return (intval($interfaceNumber) + 2);
  25. }
  26. }
  27. public function getRadioID($interface)
  28. {
  29. exec('wifi status', $wifiStatus);
  30. $radioArray = json_decode(implode("\n", $wifiStatus));
  31. foreach ($radioArray as $radio => $radioConfig) {
  32. if (isset($radioConfig->interfaces[0]->config->ifname)) {
  33. if ($radioConfig->interfaces[0]->config->ifname === $interface) {
  34. return $radio;
  35. }
  36. }
  37. }
  38. return false;
  39. }
  40. public function setMac($random, $interface, $newMac, $forceReload)
  41. {
  42. $uciID = $this->getUciID($interface);
  43. $interface = escapeshellarg($interface);
  44. if ($random) {
  45. $mac = exec("ifconfig {$interface} down && macchanger -A {$interface} | grep New | awk '{print \$3}'");
  46. } else {
  47. $requestMac = escapeshellarg($newMac);
  48. $mac = exec("ifconfig {$interface} down && macchanger -m {$requestMac} {$interface} | grep New | awk '{print \$3}'");
  49. }
  50. uciSet("wireless.@wifi-iface[{$uciID}].macaddr", $mac);
  51. if ($forceReload) {
  52. exec("wifi");
  53. } else {
  54. exec("ifconfig {$interface} up");
  55. }
  56. return array("success" => true, "uci" => $uciID);
  57. }
  58. public function resetMac($interface)
  59. {
  60. $uciID = $this->getUciID($interface);
  61. exec("uci set wireless.@wifi-iface[{$uciID}].macaddr=''");
  62. exec("wifi");
  63. return array("success" => true);
  64. }
  65. public function resetWirelessConfig()
  66. {
  67. execBackground("wifi config > /etc/config/wireless && wifi");
  68. return array("success" => true);
  69. }
  70. public function getInterfaceList()
  71. {
  72. exec("ifconfig -a | grep encap:Ethernet | awk '{print \$1\",\"\$5}'", $interfaceArray);
  73. return $interfaceArray;
  74. }
  75. public function getClientInterfaces()
  76. {
  77. $clientInterfaces = array();
  78. exec("ifconfig -a | grep wlan | awk '{print \$1}'", $interfaceArray);
  79. foreach ($interfaceArray as $interface) {
  80. //if (substr($interface, 0, 5) === "wlan0") {
  81. // continue;
  82. //}
  83. array_push($clientInterfaces, $interface);
  84. }
  85. return array_reverse($clientInterfaces);
  86. }
  87. }