From 972e55682340c16e9a4e24ddd6d11353befdb455 Mon Sep 17 00:00:00 2001 From: jim-p Date: Thu, 16 Apr 2009 23:13:53 -0400 Subject: Add ability to remove DHCP leases. Use "x" icon to delete the lease. Said icon only appears next to "offline" dynamic leases --- usr/local/www/diag_dhcp_leases.php | 42 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'usr/local/www') diff --git a/usr/local/www/diag_dhcp_leases.php b/usr/local/www/diag_dhcp_leases.php index 78bde63..36ff16c 100755 --- a/usr/local/www/diag_dhcp_leases.php +++ b/usr/local/www/diag_dhcp_leases.php @@ -42,6 +42,41 @@ require("guiconfig.inc"); $pgtitle = array("Status","DHCP leases"); + +$leasesfile = "{$g['dhcpd_chroot_path']}/var/db/dhcpd.leases"; + +if (($_GET['deleteip']) && (is_ipaddr($_GET['deleteip']))) { + // Stop DHCPD + killbyname("dhcpd"); + + // Read existing leases + $leases_contents = explode("\n", file_get_contents($leasesfile)); + $newleases_contents = array(); + $i=0; + while ($i < count($leases_contents)) { + // Find the lease(s) we want to delete + if ($leases_contents[$i] == "lease {$_GET['deleteip']} {") { + // Skip to the end of the lease declaration + do { + $i++; + } while ($leases_contents[$i] != "}"); + } else { + // It's a line we want to keep, copy it over. + $newleases_contents[] = $leases_contents[$i]; + } + $i++; + } + + // Write out the new leases file + $fd = fopen($leasesfile, 'w'); + fwrite($fd, implode("\n", $newleases_contents)); + fclose($fd); + + // Restart DHCP Service + services_dhcpd_configure(); + header("Location: diag_dhcp_leases.php"); +} + include("head.inc"); ?> @@ -69,7 +104,6 @@ function remove_duplicate($array, $field) return $new; } -$leasesfile = "{$g['dhcpd_chroot_path']}/var/db/dhcpd.leases"; $awk = "/usr/bin/awk"; /* this pattern sticks comments into a single array item */ $cleanpattern = "'{ gsub(\"#.*\", \"\");} { gsub(\";\", \"\"); print;}'"; @@ -332,7 +366,11 @@ foreach ($leases as $data) { echo "{$fspans}{$data['act']}{$fspane} \n"; if ($data['type'] == "dynamic") { - echo ""; + if ($data['online'] != "online") { + echo ""; + echo "\n"; + } + echo ""; echo "\n"; } else { echo ""; -- cgit v1.1