Handle hostnames with upper-case letters
[webmin.git] / dhcpd / delete_hosts.cgi
1 #!/usr/local/bin/perl
2 # Delete one or more hosts or groups
3
4 require './dhcpd-lib.pl';
5 require './params-lib.pl';
6 &ReadParse();
7 &error_setup($text{'hdelete_err'});
8 @d = split(/\0/, $in{'d'});
9 @d || &error($text{'hdelete_enone'});
10 %access = &get_module_acl();
11
12 # Work out what is being done
13 &lock_file($config{'dhcpd_conf'});
14 $parent = &get_parent_config();
15 foreach $d (@d) {
16         local @subs = reverse(split(/\//, $d));
17         $idx = pop(@subs);
18         local $par = $parent;
19         foreach my $s (@subs) {
20                 if ($s ne "") {
21                         $par = $par->{'members'}->[$s];
22                         }
23                 }
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 ]);
29         $already{$del}++;
30         $host_count++ if ($del->{'name'} eq 'host');
31         $group_count++ if ($del->{'name'} eq 'group');
32         }
33
34 if ($in{'confirm'}) {
35         # Do it!
36         foreach $pardel (@deleting) {
37                 &save_directive($pardel->[0], [ $pardel->[1] ], [ ], 0);
38                 }
39         &flush_file_lines();
40         &unlock_file($config{'dhcpd_conf'});
41         &webmin_log("delete", "hosts", scalar(@d));
42         &redirect("");
43         }
44 else {
45         # Ask first
46         &ui_print_header(undef, $text{'hdelete_title'}, "");
47
48         print "<center>\n";
49         print &ui_form_start("delete_hosts.cgi", "post");
50         foreach $d (@d) {
51                 print &ui_hidden("d", $d),"\n";
52                 }
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'} ] ]);
57         print "</center>\n";
58
59         &ui_print_footer("", $text{'index_return'});
60         }
61