Handle hostnames with upper-case letters
[webmin.git] / dhcpd / delete_subnets.cgi
1 #!/usr/local/bin/perl
2 # Delete one or more subnets or shared networks
3
4 require './dhcpd-lib.pl';
5 require './params-lib.pl';
6 &ReadParse();
7 &error_setup($text{'sdelete_err'});
8 @d = split(/\0/, $in{'d'});
9 @d || &error($text{'sdelete_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 ($idx, $pidx) = split(/\//, $d);
17         local $par = $parent;
18         if ($pidx ne "") {
19                 # Under a shared network
20                 $par = $par->{'members'}->[$pidx];
21                 }
22         $del = $par->{'members'}->[$idx];
23         &error("$text{'eacl_np'} $text{'eacl_pds'}")
24                 if !&can('rw', \%access, $del, 1);
25         next if ($already{$par});       # don't delete subnet if parent is being
26         push(@deleting, [ $par, $del ]);
27         $already{$del}++;
28         $subnet_count++ if ($del->{'name'} eq 'subnet');
29         $shared_count++ if ($del->{'name'} eq 'shared-network');
30         }
31
32 if ($in{'confirm'}) {
33         # Do it!
34         foreach $pardel (@deleting) {
35                 &save_directive($pardel->[0], [ $pardel->[1] ], [ ], 0);
36                 }
37         &flush_file_lines();
38         &unlock_file($config{'dhcpd_conf'});
39         &webmin_log("delete", "subnets", scalar(@d));
40         &redirect("");
41         }
42 else {
43         # Ask first
44         &ui_print_header(undef, $text{'sdelete_title'}, "");
45
46         print "<center>\n";
47         print &ui_form_start("delete_subnets.cgi", "post");
48         foreach $d (@d) {
49                 print &ui_hidden("d", $d),"\n";
50                 }
51         $msg = $subnet_count && $shared_count ? 'sdelete_rusure1' :
52                $subnet_count ? 'sdelete_rusure2' : 'sdelete_rusure3';
53         print &text($msg, $subnet_count, $shared_count),"<p>\n";
54         print &ui_form_end([ [ "confirm", $text{'sdelete_ok'} ] ]);
55         print "</center>\n";
56
57         &ui_print_footer("", $text{'index_return'});
58         }
59