Interfaces.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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)
  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. exec("wifi");
  52. return array("success" => true, "uci" => $uciID);
  53. }
  54. public function resetMac($interface)
  55. {
  56. $uciID = $this->getUciID($interface);
  57. exec("uci set wireless.@wifi-iface[{$uciID}].macaddr=''");
  58. exec("wifi");
  59. return array("success" => true);
  60. }
  61. public function resetWirelessConfig()
  62. {
  63. execBackground("wifi config > /etc/config/wireless && wifi");
  64. return array("success" => true);
  65. }
  66. public function getInterfaceList()
  67. {
  68. exec("ifconfig -a | grep encap:Ethernet | awk '{print \$1\",\"\$5}'", $interfaceArray);
  69. return $interfaceArray;
  70. }
  71. public function getClientInterfaces()
  72. {
  73. $clientInterfaces = array();
  74. exec("ifconfig -a | grep wlan | awk '{print \$1}'", $interfaceArray);
  75. foreach ($interfaceArray as $interface) {
  76. if (substr($interface, 0, 5) === "wlan0") {
  77. continue;
  78. }
  79. array_push($clientInterfaces, $interface);
  80. }
  81. return array_reverse($clientInterfaces);
  82. }
  83. }