Expired leases fix and ui-libification
authorJamie Cameron <jcameron@webmin.com>
Wed, 22 Apr 2009 17:42:42 +0000 (17:42 +0000)
committerJamie Cameron <jcameron@webmin.com>
Wed, 22 Apr 2009 17:42:42 +0000 (17:42 +0000)
dhcpd/CHANGELOG
dhcpd/index.cgi
dhcpd/list_leases.cgi

index 6b05064..e0a40c3 100644 (file)
@@ -31,3 +31,6 @@ When a subnet or host is renamed, the user's ACL is updated to match.
 ---- Changes since 1.470 ----
 Added a Module Config option to specify an alternate file to add new top-level objects (like subnets) to. This must be referenced by an include directive in the main dhcpd.conf though.
 String custom options are now always quoted.
+---- Changes since 1.480 ----
+Converted buttons on the module's main page to use the Webmin UI library.
+Expired leases are no longer counted towards usage on the DHCP Leases page.
index 9f12c36..3da83b3 100755 (executable)
@@ -474,73 +474,55 @@ if ($config{'dhcpd_version'} >= 3) {
        print &ui_hr();
 
 }
-############ END ZONES #####
 
-print "<table>\n";
+# Buttons for global actions
+print &ui_buttons_start();
+
 if ($access{'global'}) {
-       print "<form action=edit_options.cgi>\n";
-       print "<input type=hidden name=global value=1>\n";
-       print "<tr> <td><input type=submit value=\"$text{'index_buttego'}\"></td>\n";
-       print "<td>$text{'index_ego'} \n";
-       print "</td> </tr>\n";
-       print "</form>\n";
+       # Edit global client options
+       print &ui_buttons_row("edit_options.cgi",
+               $text{'index_buttego'}, $text{'index_ego'},
+               &ui_hidden("global", 1));
+       }
+
+if ($config{'dhcpd_version'} >= 3 && $access{'global'}) {
+       # TSIG keys
+       print &ui_buttons_row("edit_keys.cgi",
+               $text{'index_buttekey'}, $text{'index_key'});
        }
-if ($config{'dhcpd_version'} >= 3) {
-       if ($access{'global'}) {
-               print "<form action=edit_keys.cgi>\n";
-               print "<tr> <td><input type=submit value=\"$text{'index_buttekey'}\"></td>\n";
-               print "<td>$text{'index_key'} \n";
-               print "</td> </tr>\n";
-               print "</form>\n";
-               }
-}
 if (!$access{'noconfig'}) {
-       print "<form action=edit_text.cgi>\n";
-       print "<tr> <td><input type=submit value=\"$text{'index_buttetext'}\"></td>\n";
-       print "<td>$text{'index_text'} \n";
-       print "</td> </tr>\n";
-       print "</form>\n";
+       # Manually edit config file
+       print &ui_buttons_row("edit_text.cgi",
+               $text{'index_buttetext'}, $text{'index_text'});
        }
 if (!$access{'noconfig'}) {
-       print "<form action=edit_iface.cgi>\n";
-       print "<tr> <td><input type=submit value=\"$text{'index_buttiface'}\"></td>\n";
-       print "<td>$text{'index_iface'} \n";
-       print "</td> </tr>\n";
-       print "</form>\n";
+       # Select network interfaces
+       print &ui_buttons_row("edit_iface.cgi",
+               $text{'index_buttiface'}, $text{'index_iface'});
        }
 if ($access{'r_leases'}) {
-       print "<form action=list_leases.cgi>\n";
-       print "<tr> <td><input type=submit value=\"$text{'index_buttlal'}\"></td>\n";
-       print "<td>$text{'index_lal'} \n";
-       print "</td> </tr>\n";
-       print "</form>\n";
+       # Show active leases
+       print &ui_buttons_row("list_leases.cgi",
+               $text{'index_buttlal'}, $text{'index_lal'});
        }
 if ($access{'apply'}) {
        $pid = &is_dhcpd_running();
        if ($pid) {
-               print "<form action=restart.cgi>\n";
-               print "<input type=hidden name=pid value=$pid>\n";
-               print "<tr> <td><input type=submit value=\"$text{'index_buttapply'}\"></td>\n";
-               print "<td>$text{'index_apply'} \n";
-               print "</td></tr>\n";
-               print "</form>\n";
-
-               print "<form action=stop.cgi>\n";
-               print "<input type=hidden name=pid value=$pid>\n";
-               print "<tr> <td><input type=submit value=\"$text{'index_stop'}\"></td>\n";
-               print "<td>$text{'index_stopdesc'} \n";
-               print "</td></tr>\n";
-               print "</form>\n";
+               # Apply and stop buttons
+               print &ui_buttons_row("restart.cgi",
+                       $text{'index_buttapply'}, $text{'index_apply'},
+                       &ui_hidden("pid", $pid));
+               print &ui_buttons_row("stop.cgi",
+                       $text{'index_stop'}, $text{'index_stopdesc'},
+                       &ui_hidden("pid", $pid));
                }
        else {
-               print "<form action=start.cgi>\n";
-               print "<tr> <td><input type=submit value=\"$text{'index_buttstart'}\"></td>\n";
-               print "<td>$text{'index_start'} \n";
-               print "</td> </tr>\n";
-               print "</form>\n";
+               # Start button
+               print &ui_buttons_row("start.cgi",
+                       $text{'index_buttstart'}, $text{'index_start'});
                }
        }
-print "</table>\n";
+print &ui_buttons_end();
 
 &ui_print_footer("/", $text{'index_return'});
 
index 32b5430..36a308a 100755 (executable)
@@ -18,7 +18,7 @@ if ($in{'network'}) {
        }
 &ui_print_header($desc, $text{'listl_header'}, "");
 
-# Work out how many IPs we have in our pools
+# Work out how many IPs we have in our subnet ranges
 %ranges = ( );
 $conf = &get_config();
 @subnets = &find("subnet", $conf);
@@ -38,11 +38,11 @@ foreach $subnet (@subnets) {
        }
 
 if (!-r $config{'lease_file'}) {
-       print "<b>";
-       print(&text('listl_lfnotexist',$config{'lease_file'}));
-       print "</b><p>\n";
+       # No leases file
+       print "<b>".&text('listl_lfnotexist',$config{'lease_file'})."</b><p>\n";
        }
 elsif (!&tokenize_file($config{'lease_file'}, \@tok)) {
+       # Leases file is not valid or empty
        print "<b>",&text('listl_lfnotcont',$config{'lease_file'}),"</b><p>\n";
        }
 else {
@@ -66,6 +66,7 @@ else {
                push(@leases, $lease);
                }
        if (@leases) {
+               # Sort leases by selected type
                if ($in{'sort'} eq 'ipaddr') {
                        @leases = sort { &ip_compare($a, $b) } @leases;
                        }
@@ -94,7 +95,8 @@ else {
                $leased = 0;
                foreach $lease (@leases) {
                        $ip = $lease->{'values'}->[0];
-                       if ($ranges{$ip} && !$donelease{$ip}++) {
+                       if ($ranges{$ip} && !$donelease{$ip}++ &&
+                           !$lease->{'expired'}) {
                                $leased++;
                                }
                        }
@@ -157,12 +159,11 @@ else {
                      "</b><p>\n";
                }
        if (!$in{'all'}) {
-               print "<form action=list_leases.cgi>\n";
-               print "<input type=hidden name=all value=1>\n";
-               print "<input type=hidden name=network value='$in{'network'}'>\n";
-               print "<input type=hidden name=netmask value='$in{'netmask'}'>\n";
-               print "<input type=submit value='$text{'listl_all'}'>\n";
-               print "</form>\n";
+               print &ui_form_start("list_leases.cgi");
+               print &ui_hidden("all", 1);
+               print &ui_hidden("network", $in{'network'});
+               print &ui_hidden("netmask", $in{'netmask'});
+               print &ui_form_end([ [ undef, $text{'listl_all'} ] ]);
                }
        }