%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.248 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/bind8/ |
Upload File : |
#!/usr/bin/perl # Delete multiple records from a zone file use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; # Globals our (%access, %text, %in, %config); require './bind8-lib.pl'; &ReadParse(); &error_setup($text{'drecs_err'}); my $zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); my $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'recs_ecannot'}); &can_edit_type($in{'type'}, \%access) || &error($text{'recs_ecannottype'}); # Find the records my @d = split(/\0/, $in{'d'}); @d || &error($text{'drecs_enone'}); # Check if confirmation is needed if (!$in{'confirm'} && $config{'confirm_rec'}) { # Ask first &ui_print_header(undef, $text{'drecs_title'}, ""); print &ui_confirmation_form("delete_recs.cgi", &text('drecs_rusure', scalar(@d), $dom), [ [ 'zone', $in{'zone'} ], [ 'view', $in{'view'} ], [ 'rev', $in{'rev'} ], [ 'type', $in{'type'} ], map { [ 'd', $_ ] } @d ], [ [ 'confirm', $text{'drecs_ok'} ] ], ); &ui_print_footer("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=$in{'sort'}", $text{'recs_return'}); } else { # Delete them &before_editing($zone); my @recs = &read_zone_file($zone->{'file'}, $dom); my %bumpedrev; my @delr; foreach my $d (sort { $b <=> $a } @d) { my ($num, $id) = split(/\//, $d, 2); my $r = &find_record_by_id(\@recs, $id, $num); next if (!$r); if ($in{'rev'}) { # Find the reverse my $fulloldvalue0 = &convert_to_absolute( $r->{'values'}->[0], $dom); my $fulloldname = &convert_to_absolute( $r->{'name'}, $dom); my ($orevconf, $orevfile, $orevrec) = &find_reverse( $r->{'values'}->[0], $in{'view'}); if ($orevrec && &can_edit_reverse($orevconf) && $fulloldname eq $orevrec->{'values'}->[0] && ($r->{'type'} eq "A" || $r->{'type'} eq "AAAA" && &expandall_ip6($r->{'values'}->[0]) eq &expandall_ip6(&ip6int_to_net($orevrec->{'name'})))) { &lock_file(&make_chroot($orevrec->{'file'})); &delete_record($orevrec->{'file'} , $orevrec); &lock_file(&make_chroot($orevfile)); my @orrecs = &read_zone_file($orevfile, $orevconf->{'name'}); if (!$bumpedrev{$orevfile}++) { &bump_soa_record($orevfile, \@orrecs); } &sign_dnssec_zone_if_key($orevconf, \@orrecs); } } # Delete the actual record &lock_file(&make_chroot($r->{'file'})); &delete_record($r->{'file'}, $r); splice(@recs, $d, 1); push(@delr, $r); } &bump_soa_record($zone->{'file'}, \@recs); &sign_dnssec_zone_if_key($zone, \@recs); &after_editing($zone); &unlock_all_files(); if (@delr == 1) { &webmin_log('delete', 'record', $dom, $delr[0]); } else { &webmin_log("delete", "recs", scalar(@delr), { 'dom' => $dom }); } &redirect("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=$in{'sort'}"); }