Handle hostnames with upper-case letters
[webmin.git] / dhcp-dns / delete.cgi
1 #!/usr/local/bin/perl
2 # Delete multiple hosts
3
4 require './dhcp-dns-lib.pl';
5 &ReadParse();
6 &error_setup($text{'delete_err'});
7 @d = split(/\0/, $in{'d'});
8 @d || &error($text{'delete_enone'});
9
10 # Do each host
11 @hosts = &list_dhcp_hosts();
12 foreach $d (@d) {
13         ($host) = grep { $_->{'values'}->[0] eq $d } @hosts;
14         if ($host) {
15                 $fixed = &dhcpd::find("fixed-address", $host->{'members'});
16                 &dhcpd::save_directive($host->{'parent'}, [ $host ], [ ], $indent);
17                 }
18         else {
19                 $fixed = undef;
20                 }
21         ($fn, $recs) = &get_dns_zone();
22         ($old) = grep { lc($_->{'name'}) eq lc($d).'.' } @$recs;
23         if (!$old) {
24                 # Search by hostname only
25                 ($old) = grep { lc($_->{'name'}) eq
26                                 lc($d).'.'.lc($config{'domain'}).'.' } @$recs;
27                 }
28         if ($old) {
29                 &bind8::delete_record($fn, $old);
30                 &bind8::bump_soa_record($fn, $recs);
31                 }
32         if ($fixed) {
33                 ($rfn, $rrecs, $arpa, $rzone) = &get_reverse_dns_zone(
34                                                         $fixed->{'values'}->[0]);
35                 if ($rfn) {
36                         ($old) = grep { $_->{'name'} eq $arpa."." } @$rrecs;
37                         if ($old) {
38                                 &bind8::delete_record($rfn, $old);
39                                 &bind8::bump_soa_record($rfn, $rrecs);
40                                 }
41                         }
42                 }
43         }
44
45 # Apply config
46 &flush_file_lines();
47 &redirect("");