2 # Delete one or more subnets or shared networks
4 require './dhcpd-lib.pl';
5 require './params-lib.pl';
7 &error_setup($text{'sdelete_err'});
8 @d = split(/\0/, $in{'d'});
9 @d || &error($text{'sdelete_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 ($idx, $pidx) = split(/\//, $d);
19 # Under a shared network
20 $par = $par->{'members'}->[$pidx];
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 ]);
28 $subnet_count++ if ($del->{'name'} eq 'subnet');
29 $shared_count++ if ($del->{'name'} eq 'shared-network');
34 foreach $pardel (@deleting) {
35 &save_directive($pardel->[0], [ $pardel->[1] ], [ ], 0);
38 &unlock_file($config{'dhcpd_conf'});
39 &webmin_log("delete", "subnets", scalar(@d));
44 &ui_print_header(undef, $text{'sdelete_title'}, "");
47 print &ui_form_start("delete_subnets.cgi", "post");
49 print &ui_hidden("d", $d),"\n";
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'} ] ]);
57 &ui_print_footer("", $text{'index_return'});