3 # Delete a subnet, shared network or host
5 require './dhcpd-lib.pl';
6 require './params-lib.pl';
12 &lock_file($config{'dhcpd_conf'});
13 $par = &get_parent_config();
14 foreach $i ($in{'sidx'}, $in{'uidx'}) {
16 $par = $par->{'members'}->[$i];
19 $parconf = $par->{'members'};
20 $to_del = $parconf->[$in{'idx'}];
21 @host = &find("host", $to_del->{'members'});
22 @group = &find("group", $to_del->{'members'});
23 @subn = &find("subnet", $to_del->{'members'});
26 %access = &get_module_acl();
27 &error_setup($text{'eacl_aviol'});
28 if ($to_del->{'name'} eq "group") {
29 &error("$text{'eacl_np'} $text{'eacl_pdg'}")
30 if !&can('rw', \%access, $to_del, 1);
32 elsif ($to_del->{'name'} eq "subnet") {
34 &error("$text{'eacl_np'} $text{'eacl_pds'}")
35 if !&can('rw', \%access, $to_del, 1);
37 &error("$text{'eacl_np'} $text{'eacl_pdg'}")
38 if !&can('rw', \%access, $g, 1);
41 elsif ($to_del->{'name'} eq "shared-network") {
42 &error("$text{'eacl_np'} $text{'eacl_pdn'}")
43 if !&can('rw', \%access, $to_del, 1);
45 &error("$text{'eacl_np'} $text{'eacl_pds'}")
46 if !&can('rw', \%access, $s, 1);
49 &error("$text{'eacl_np'} $text{'eacl_pdg'}")
50 if !&can('rw', \%access, $g, 1);
54 &error($text{'cdel_eunknown'});
58 &error("$text{'eacl_np'} $text{'eacl_pdh'}")
59 if !&can('rw', \%access, $h, 1);
63 &drop_dhcpd_acl($type, \%access, $to_del);
65 &save_directive($par, [ $to_del ], [ ], 0);
67 &unlock_file($config{'dhcpd_conf'});
68 if ($to_del->{'name'} eq "group") {
69 @count = &find("host", $group->{'members'});
70 &webmin_log('delete', 'group', join(",", map { $_->{'values'}->[0] } @count), \%in);
72 elsif ($to_del->{'name'} eq "subnet") {
73 &webmin_log('delete', 'subnet', "$sub->{'values'}->[0]/$sub->{'values'}->[2]", \%in);
75 elsif ($to_del->{'name'} eq "shared") {
76 &webmin_log('delete', 'shared', $sha->{'values'}->[0], \%in);