📄 delete_zone.cgi
字号:
#!/usr/local/bin/perl# delete_zone.cgi# Delete an existing master, slave or secondary zone, and it's records filerequire './bind8-lib.pl';&ReadParse();$conf = &get_config();$zconf = $conf->[$in{'index'}];%access = &get_module_acl();&can_edit_zone(\%access, $zconf->{'value'}) || &error($text{'master_edelete'});$access{'ro'} && &error($text{'master_ero'});if ($zconf->{'value'} =~ /in-addr.arpa/i) { # find and delete reverse records @recs = &read_zone_file(&find("file", $zconf->{'members'})->{'value'}, $zconf->{'value'}); foreach $r (@recs) { next if ($r->{'type'} ne "A"); ($orevconf, $orevfile, $orevrec) = &find_reverse($r->{'values'}->[0]); if ($orevrec && &can_edit_reverse($orevconf) && $r->{'name'} eq $orevrec->{'values'}->[0] && $r->{'values'}->[0] eq &arpa_to_ip($orevrec->{'name'})) { &delete_record($orevrec->{'file'} , $orevrec); @orrecs = &read_zone_file($orevfile, $orevconf->{'value'}); &bump_soa_record($orevfile, \@orrecs); } } }# delete the records file$f = &find("file", $zconf->{'members'});unlink(&absolute_path($f->{'value'})) if ($f);# remove the zone directive$lref = &read_file_lines($zconf->{'file'});splice(@$lref, $zconf->{'line'}, $zconf->{'eline'} - $zconf->{'line'} + 1);&flush_file_lines();# remove from acl files&read_acl(undef, \%wusers);foreach $u (keys %wusers) { %uaccess = &get_module_acl($u); if ($uaccess{'zones'} ne '*') { $uaccess{'zones'} = join(' ', grep { $_ ne $zconf->{'value'} } split(/\s+/, $uaccess{'zones'})); &save_module_acl(\%uaccess, $u); } }&redirect("");# can_edit_reverse(&zone)sub can_edit_reverse{return $access{'reverse'} || &can_edit_zone(\%access, $_[0]->{'value'});}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -