diff --git a/app/js/custom.js b/app/js/custom.js index dc886d07..09b6176f 100644 --- a/app/js/custom.js +++ b/app/js/custom.js @@ -54,16 +54,19 @@ $(document).on("click", ".js-add-dhcp-static-lease", function(e) { var container = $(".js-new-dhcp-static-lease"); var mac = $("input[name=mac]", container).val().trim(); var ip = $("input[name=ip]", container).val().trim(); + var comment = $("input[name=comment]", container).val().trim(); if (mac == "" || ip == "") { return; } var row = $("#js-dhcp-static-lease-row").html() .replace("{{ mac }}", mac) - .replace("{{ ip }}", ip); + .replace("{{ ip }}", ip) + .replace("{{ comment }}", comment); $(".js-dhcp-static-lease-container").append(row); $("input[name=mac]", container).val(""); $("input[name=ip]", container).val(""); + $("input[name=comment]", container).val(""); }); $(document).on("click", ".js-remove-dhcp-static-lease", function(e) { diff --git a/app/lib/system.php b/app/lib/system.php index ddf31bad..3b09fb84 100644 --- a/app/lib/system.php +++ b/app/lib/system.php @@ -1,11 +1,24 @@ + * @license https://github.com/raspap/raspap-webgui/blob/master/LICENSE + */ + +namespace RaspAP\System; + +class Sysinfo +{ + public function hostname() + { return shell_exec("hostname -f"); } - public function uptime() { + public function uptime() + { $uparray = explode(" ", exec("cat /proc/uptime")); $seconds = round($uparray[0], 0); $minutes = $seconds / 60; @@ -15,10 +28,10 @@ class System { $minutes = floor($minutes - ($days * 24 * 60) - ($hours * 60)); $uptime= ''; if ($days != 0) { - $uptime .= $days . ' day' . (($days > 1)? 's ':' '); + $uptime .= $days . ' day' . (($days > 1)? 's ':' '); } if ($hours != 0) { - $uptime .= $hours . ' hour' . (($hours > 1)? 's ':' '); + $uptime .= $hours . ' hour' . (($hours > 1)? 's ':' '); } if ($minutes != 0) { $uptime .= $minutes . ' minute' . (($minutes > 1)? 's ':' '); @@ -27,33 +40,40 @@ class System { return $uptime; } - public function usedMemory() { + public function usedMemory() + { $used = shell_exec("free -m | awk '/Mem:/ { total=$2 ; used=$3 } END { print used/total*100}'"); return floor($used); } - public function processorCount() { + public function processorCount() + { $procs = shell_exec("nproc --all"); return intval($procs); } - public function loadAvg1Min() { + public function loadAvg1Min() + { $load = exec("awk '{print $1}' /proc/loadavg"); return floatval($load); } - public function systemLoadPercentage() { + public function systemLoadPercentage() + { return intval(($this->loadAvg1Min() * 100) / $this->processorCount()); } - public function systemTemperature() { + public function systemTemperature() + { $cpuTemp = file_get_contents("/sys/class/thermal/thermal_zone0/temp"); return number_format((float)$cpuTemp/1000, 1); } - public function hostapdStatus() { + public function hostapdStatus() + { exec('pidof hostapd | wc -l', $status); return $status; } } + diff --git a/includes/dhcp.php b/includes/dhcp.php index bf109da2..9fd7e338 100755 --- a/includes/dhcp.php +++ b/includes/dhcp.php @@ -154,6 +154,20 @@ function validateDHCPInput() return $errors; } +/** + * Compares to string IPs + * + * @param string $ip1 + * @param string $ip2 + * @return boolean $result + */ +function compareIPs($ip1, $ip2) +{ + $ipu1 = sprintf('%u', ip2long($ip1["ip"])) + 0; + $ipu2 = sprintf('%u', ip2long($ip2["ip"])) + 0; + return $ipu1 > $ipu2; +} + /** * Updates a dnsmasq configuration * @@ -171,13 +185,25 @@ function updateDnsmasqConfig($iface,$status) $config .= $_POST['RangeLeaseTime']; } $config .= $_POST['RangeLeaseTimeUnits'].PHP_EOL; + // Static leases + $staticLeases = array(); for ($i=0; $i < count($_POST["static_leases"]["mac"]); $i++) { $mac = trim($_POST["static_leases"]["mac"][$i]); $ip = trim($_POST["static_leases"]["ip"][$i]); + $comment = trim($_POST["static_leases"]["comment"][$i]); if ($mac != "" && $ip != "") { - $config .= "dhcp-host=$mac,$ip".",set:known".PHP_EOL; + $staticLeases[] = array('mac' => $mac, 'ip' => $ip, 'comment' => $comment); } } + // Sort ascending by IPs + usort($staticLeases, "compareIPs"); + // Update config + for ($i = 0; $i < count($staticLeases); $i++) { + $mac = $staticLeases[$i]['mac']; + $ip = $staticLeases[$i]['ip']; + $comment = $staticLeases[$i]['comment']; + $config .= "dhcp-host=$mac,$ip # $comment".PHP_EOL; + } if ($_POST['no-resolv'] == "1") { $config .= "no-resolv".PHP_EOL; } @@ -191,9 +217,6 @@ function updateDnsmasqConfig($iface,$status) } $config .= PHP_EOL; } - if ($_POST['dhcp-ignore'] == "1") { - $config .= 'dhcp-ignore=tag:!known'.PHP_EOL; - } file_put_contents("/tmp/dnsmasqdata", $config); $msg = file_exists(RASPI_DNSMASQ_PREFIX.$iface.'.conf') ? 'updated' : 'added'; system('sudo cp /tmp/dnsmasqdata '.RASPI_DNSMASQ_PREFIX.$iface.'.conf', $result); diff --git a/includes/sysstats.php b/includes/sysstats.php index 591672ba..5122c91c 100755 --- a/includes/sysstats.php +++ b/includes/sysstats.php @@ -2,7 +2,7 @@ require_once 'app/lib/system.php'; -$system = new System(); +$system = new \RaspAP\System\Sysinfo; $hostname = $system->hostname(); $uptime = $system->uptime(); diff --git a/includes/system.php b/includes/system.php index 046cadac..7cd53b24 100755 --- a/includes/system.php +++ b/includes/system.php @@ -153,7 +153,7 @@ function DisplaySystem() ); #fetch system status variables. - $system = new System(); + $system = new \RaspAP\System\Sysinfo; $hostname = $system->hostname(); $uptime = $system->uptime(); diff --git a/templates/about/general.php b/templates/about/general.php index df44bc77..144bd51b 100644 --- a/templates/about/general.php +++ b/templates/about/general.php @@ -8,7 +8,7 @@ with the contributions of our developer community and language translators. Learn more about joining the project as a code contributor, - translator or financial sponsor with immediate access to exclusive features available to Insiders. + translator or financial sponsor with immediate access to exclusive features available to Insiders.