2 # Delete one or more hosts or groups
4 require './dhcpd-lib.pl';
5 require './params-lib.pl';
7 &error_setup($text{'hdelete_err'});
8 @d = split(/\0/, $in{'d'});
9 @d || &error($text{'hdelete_enone'});
10 %access = &get_module_acl();
12 # Work out what is being done
13 &lock_file($config{'dhcpd_conf'});
14 $parent = &get_parent_config();
16 local @subs = reverse(split(/\//, $d));
19 foreach my $s (@subs) {
21 $par = $par->{'members'}->[$s];
24 $del = $par->{'members'}->[$idx];
25 &error("$text{'eacl_np'} $text{'eacl_pdh'}")
26 if !&can('rw', \%access, $del, 1);
27 next if ($already{$par}); # don't delete host if group is being
28 push(@deleting, [ $par, $del ]);
30 $host_count++ if ($del->{'name'} eq 'host');
31 $group_count++ if ($del->{'name'} eq 'group');
36 foreach $pardel (@deleting) {
37 &save_directive($pardel->[0], [ $pardel->[1] ], [ ], 0);
40 &unlock_file($config{'dhcpd_conf'});
41 &webmin_log("delete", "hosts", scalar(@d));
46 &ui_print_header(undef, $text{'hdelete_title'}, "");
49 print &ui_form_start("delete_hosts.cgi", "post");
51 print &ui_hidden("d", $d),"\n";
53 $msg = $host_count && $group_count ? 'hdelete_rusure1' :
54 $host_count ? 'hdelete_rusure2' : 'hdelete_rusure3';
55 print &text($msg, $host_count, $group_count),"<p>\n";
56 print &ui_form_end([ [ "confirm", $text{'hdelete_ok'} ] ]);
59 &ui_print_footer("", $text{'index_return'});