亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? delete_zone.cgi

?? BIND 9 dynamic DNS webmin module. This module supports both static and dynamic zones, and IPv4 and I
?? CGI
字號(hào):
#! /usr/bin/perl##    B9DDNS - BIND 9 dynamic DNS webmin module.#    Copyright (C) 2003 John Horne. <john.horne@plymouth.ac.uk>#    Copyright (C) 2004 John Horne. <john.horne@plymouth.ac.uk>##    This program is free software; you can redistribute it and/or modify#    it under the terms of the GNU General Public License as published by#    the Free Software Foundation; either version 2 of the License, or#    (at your option) any later version.##    This program is distributed in the hope that it will be useful,#    but WITHOUT ANY WARRANTY; without even the implied warranty of#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the#    GNU General Public License for more details.##    You should have received a copy of the GNU General Public License#    along with this program; if not, write to the Free Software#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.### Delete a zone and all its records.#use strict;no strict 'vars';require './b9ddns-lib.pl';my $dynamic_zone = my $reverse = my $rev_zone_type = my $ipv4 = 0;my $count = my $no_named = 0;my $conf = my $zone_conf = my $view = my $type = my $server = '';my $file = my $real_file = my $record = my $oconf = my $ofile = my $orec = '';my $lref = my $user = my $zone = my $zone_hdr = my $origin = '';my $slave_parent = my $slave_conf = my $slave_zone_conf = '';my $slave_error = my $rev_zone_name = my $rev_file = '';my $dyn_rev_str = my $rev_zone_ref = my $rev_zone_rec_ref = my $err = '';my @servers = my @recs = my @orecs = ();my %wusers = my %uaccess = my %zone_type = my %rev_zone_recs = ();&ReadParse();$conf = &get_config();if ($in{'view'}) {	$view = $conf->[$in{'view'}];	$conf = $view->{'members'};}$zone_conf = $conf->[$in{'index'}];%access = &get_module_acl();unless (&can_edit_zone(\%access, $zone_conf, $view)) {	&terror('master_edelete');}if ($access{'ro'}) {	&terror('master_ero');}unless ($access{'delete'}) {	&terror('master_edeletecannot');}$origin = lc($zone_conf->{'value'});$origin .= '.' unless ($origin =~ /\.$/o);$dynamic_zone = &dynamic_zone($zone_conf, 1);$reverse++ if ($origin =~ /\.(in-addr|ip6)\.arpa\.$/o);$type = $in{'type'};$file = $in{'file'};$real_file = $config{'chroot'} . &absolute_path($file) if ($file);unless ($in{'confirm'}) {	#	# Ask the user if he/she is sure...	#	$zone_hdr = &zone_header($dynamic_zone, $origin, $text{ucfirst($type)});	&header($text{'delete_title'}, '', undef, 0, 0, 0, undef, undef, undef, $zone_hdr);	print '<hr>';	if ($type eq 'hint') {		print '<p>', $text{'hint_desc1'}, '<br><br>',		      $text{'hint_desc2'}, '<p>';		print '<center><p>', $text{'delete_mesg2'}, '<p>';	}	else {		if ($reverse) {			$orec = &ip6arpa_to_net(&arpa_to_ip($origin));		}		else {			$orec = $origin;			$orec =~ s/\.$//o unless ($origin eq '.');		}		print '<center><p>', &text('delete_mesg', "&nbsp;<b>$orec</b>");		print '&nbsp;&nbsp;', $text{'delete_mesg_file'} if ($file && -e $real_file);		print '<p>';	}	print "<form action=delete_zone.cgi>\n";	print '<input type=hidden name=index value=', $in{'index'}, '>';	print '<input type=hidden name=view value=', $in{'view'}, '>';	print '<input type=hidden name=file value=', $file, '>';	print '<input type=hidden name=type value=', $type, '>';	print '<input type=submit name=confirm value="', $text{'master_del'}, '">';	if ($type eq 'hint') {		print '&nbsp;' x 6, '<input type=checkbox name=del_hint value=1>', $text{'hint_del'};	}	elsif ($type eq 'master') {		print '<p>', $text{$reverse ? 'delete_fwd' : 'delete_rev'}, '&nbsp;&nbsp;';		print '<input type=radio name=rev value=1 checked> ', $text{'yes'};		print '<input type=radio name=rev value=0> ', $text{'no'}, '<br>';		&foreign_require('servers', 'servers-lib.pl');		@servers = grep { $_->{'user'} } &servers::list_servers();		if (@servers && $access{'remote'}) {			print $text{'delete_slave'}, ' <select name=slave>';			print '<option value="">&nbsp;';			foreach $server (@servers) {				printf "<option value=%s %s>%s\n",				    $server->{'host'},			    ($server->{'host'} eq $config{'default_slave'}) ?					'selected' : '',			    $server->{'desc'} ?					$server->{'desc'} : $server->{'host'};			}			print '</select><br>';		}	}	print '</form></center>';	print '<hr>';	&footer("edit_zone.cgi?index=$in{'index'}&view=$in{'view'}&type=$type", $text{'master_return'});	exit;}if ($in{'rev'} && $type eq 'master') {	#	# When deleting the forward/reverse records we do not want to increment	# the SOA serial number for each record deleted. The reason being that	# if a date format serial number is used then it could easily exceed	# the maximum of 100 changes per day. Since the reverse zone may be	# static or dynamic, we must find out the zone type first of all. Then,	# for static zones, we delete the record but increment the serial number	# after all the records have been deleted. For dynamic zones we have to	# store the record with the zone, and then at the end delete all the	# records for each reverse zone in one go. This way the serial number	# will only be incremented once.	#	# NOTE: There is no guarantee that a reverse record will be deleted -	# for example, the user may not have rights to edit that particular	# zone. As such it is the administrators responsibility to ensure that	# the zone is completely deleted.	#	$no_named = (&named_running() <= 0);	$ipv4 = ($origin =~ /\.in-addr\.arpa\.$/o);	if ($file) {				# This should always be true.		&lock_file($real_file);		@recs = &get_zone($zone_conf, $file, $origin, undef, 'master');	}	#	# We'll lock the named.conf file as well, just to be sure nobody else	# starts to move the zones around whilst we are deleting things.	#	&lock_file($config{'chroot'} . $zone_conf->{'file'});	#	# Find and delete the forward/reverse records.	#	foreach $record (@recs) {		if ($reverse) {			next if ($record->{'type'} ne 'PTR');			($oconf, $ofile, $orec) =					&find_forward($record->{'values'}->[0],						$record->{'fqdn'}, $ipv4);			next unless ($orec && &can_edit_zone(\%access, $oconf));		}		else {			next if ($record->{'type'} ne 'A' &&				 $record->{'type'} ne 'AAAA');			($oconf, $ofile, $orec) =				&find_reverse($record->{'values'}->[0],					      $record->{'fqdn'});			next unless ($orec && &can_edit_reverse($oconf));		}		$rev_zone_name = lc($oconf->{'value'});		$rev_zone_name .= '.' unless ($rev_zone_name =~ /\.$/o);		$rev_zone_ref = &get_zone_data($oconf);		if (defined($rev_zone_recs{$rev_zone_name})) {			#			# We must do this because non-updateable zones will			# have reset their zone type. Using this (reset) value			# will avoid us checking their SOA serial number every			# time.			#			$rev_zone_type = $rev_zone_recs{$rev_zone_name}->[0]->[0];		}		else {			$rev_zone_type = $rev_zone_ref->[1];		}		if ($rev_zone_type == 0) {		# A static zone.			#			# For static zones we can still delete the records,			# even if we cannot increment the serial number. The			# changes will then take place the next time named is			# restarted.			#			$rev_file = $config{'chroot'} . &absolute_path($ofile);			&lock_file($rev_file);			&delete_record($oconf, $ofile, $orec);			&unlock_file($rev_file);		}		elsif ($rev_zone_type == 1) {		# A dynamic zone.			#			# If named is not running then there is no way that we			# can delete dynamic zone records.			#			$rev_zone_type = 2 if ($no_named);		}		else {		# A dynamic zone which we cannot update or for			next;	# which we cannot update the serial number.		}		#		# We must now check the zones SOA serial number. If it is not		# updateable then we simply reset the zone type.		#		if ($config{'soa_date_style'} && $rev_zone_type != 2) {			$count = &check_soa_serial($rev_zone_ref, $oconf, undef, undef);			$rev_zone_type = 2 if ($count < 0);		}		push(@{ $rev_zone_recs{$rev_zone_name} },				[ $rev_zone_type, $oconf, $ofile, $orec ] );	}	#	# Get the first entry of the first record of each zone in order to	# determine the zone type. If it is a static zone then we have already	# deleted the record and just need to check the serial number and bump	# it up. For dynamic zones we first need to build up a string of the	# records to delete.	#	foreach $rev_zone_name (keys(%rev_zone_recs)) {		$rev_zone_type = $rev_zone_recs{$rev_zone_name}->[0]->[0];		if ($rev_zone_type == 0) {		# A static zone.			$rev_zone_rec_ref = $rev_zone_recs{$rev_zone_name}->[0];			$oconf = $rev_zone_rec_ref->[1];			$ofile = $rev_zone_rec_ref->[2];			$orec = $rev_zone_rec_ref->[3];		}		elsif ($rev_zone_type == 1) {		# A dynamic zone.			$count = 0;			$dyn_rev_str = 'local ' . $config{'ns_if_update'} . "\n";			$dyn_rev_str .= 'zone ' . $rev_zone_name . "\n";			foreach $rev_zone_rec_ref (@{ $rev_zone_recs{$rev_zone_name} }) {				$oconf = $rev_zone_rec_ref->[1];				$ofile = $rev_zone_rec_ref->[2];				$orec = $rev_zone_rec_ref->[3];				$count++;				$dyn_rev_str .= "update delete $orec->{'fqdn'} $orec->{'class'} $orec->{'type'} $orec->{'values'}->[0]\n";				#				# To ensure that the character string does not				# get excessively large, we update the zone				# after each 1000 records. This will, of course,				# result in the SOA serial number being				# increased for each thousand records. However,				# this should not be a problem unless the zone				# has a really large number of records.				#				if ($count >= 1000) {					$count = 0;					$dyn_rev_str .= "\n";					$err = `echo "$dyn_rev_str" | $config{'nsupdate_cmd'} >/dev/null 2>&1`;					$dyn_rev_str = 'local ' . $config{'ns_if_update'} . "\n";					$dyn_rev_str .= 'zone ' . $rev_zone_name . "\n";				}			}			if ($count) {				$dyn_rev_str .= "\n";				#				# We do not bother with errors because it is				# for the administrator to ensure that the zone				# records have been deleted.				#				$err = `echo "$dyn_rev_str" | $config{'nsupdate_cmd'} >/dev/null 2>&1`;			}		}		else {		# A non-updateable zone - ignore it.			next;		}		@recs = &get_zone($oconf, $ofile, $rev_zone_name, undef, 'master');		&bump_soa_record($oconf, \@recs, undef);	}}## Now delete the records file.#if ($file && ($type ne 'hint' || ($type eq 'hint' && $in{'del_hint'}))) {	&lock_file($real_file);	unlink $real_file, $real_file . '.jnl';	&unlock_file($real_file);}## Remove the zone directive.#&lock_file($config{'chroot'} . $zone_conf->{'file'});$lref = &read_file_lines($config{'chroot'} . $zone_conf->{'file'});splice(@$lref, $zone_conf->{'line'},			$zone_conf->{'eline'} - $zone_conf->{'line'} + 1);&flush_file_lines();&unlock_all_files();## Remove from acl files.#&read_acl(undef, \%wusers);$lref = $origin;$lref =~ s/\.$//o unless ($lref eq '.');foreach $user (keys(%wusers)) {	%uaccess = &get_module_acl($user);	if ($uaccess{'zones'} ne '*') {		$uaccess{'zones'} = join(' ', grep { $_ !~ /^$lref\.?$/i }					      split(/\s+/, $uaccess{'zones'}));		&save_module_acl(\%uaccess, $user);	}}## Also delete from slave servers.#if ($in{'slave'} && $access{'remote'}) {	&error_setup($text{'delete_err2'});	&remote_error_setup(\&slave_error_handler);	&remote_foreign_require($in{'slave'}, $module_name, 'b9ddns-lib.pl');	if ($slave_error) {		&error($slave_error);	}	$slave_parent = &remote_foreign_call($in{'slave'}, $module_name, 'get_config_parent');	$slave_conf = $slave_parent->{'members'};	foreach $zone (&find('zone', $slave_conf)) {		$slave_zone_conf = lc($zone->{'value'});		$slave_zone_conf .= '.' unless ($slave_zone_conf =~ /\.$/o);		if ($slave_zone_conf eq $origin) {			$slave_zone_conf = $zone;			last;		}	}	unless ($slave_zone_conf) {		&terror('slave_ezone');	}	&remote_foreign_call($in{'slave'}, $module_name, 'save_directive',			     $slave_parent, [ $slave_zone_conf ], [ ]);	&remote_foreign_call($in{'slave'}, $module_name, 'flush_file_lines');	&remote_foreign_call($in{'slave'}, $module_name, 'webmin_log',					'delete', 'slave', $origin, \%in);}&webmin_log('delete', $type, $origin, \%in);&redirect('');exit;## can_edit_reverse(&zone)#sub can_edit_reverse {	return $access{'reverse'} || &can_edit_zone(\%access, $_[0]);}sub slave_error_handler {	$slave_error = $_[0];	return;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清视频在线观看| 亚洲精品一卡二卡| 一本大道久久a久久精二百| 视频精品一区二区| 国产精品乱人伦中文| 91精品免费观看| av电影一区二区| 麻豆成人在线观看| 一区二区免费看| 日本一区二区三区国色天香| 欧美电影在哪看比较好| 91美女在线看| 国产成人午夜片在线观看高清观看| 亚洲综合小说图片| 国产精品欧美极品| 欧美精品一区二区不卡| 欧美群妇大交群的观看方式| 99久久精品久久久久久清纯| 国内外精品视频| 日韩国产成人精品| 亚洲午夜电影在线观看| 综合色天天鬼久久鬼色| 国产欧美精品一区二区色综合朱莉 | 久久精品一区二区三区四区| 欧美日韩在线观看一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产无一区二区| 日韩欧美一区二区久久婷婷| 在线国产亚洲欧美| 91网站最新地址| av成人老司机| 成人app网站| 成人性生交大片免费| 国产制服丝袜一区| 777午夜精品免费视频| 99久精品国产| 99re这里只有精品首页| 波多野结衣在线一区| 国产成人精品免费一区二区| 国产真实乱偷精品视频免| 精品一区二区三区影院在线午夜| 日本不卡一二三区黄网| 日韩国产欧美在线观看| 日本亚洲欧美天堂免费| 日本亚洲最大的色成网站www| 日韩电影网1区2区| 久久精品国产一区二区| 国内久久婷婷综合| 国产1区2区3区精品美女| 国产成人日日夜夜| av中文字幕不卡| 色综合欧美在线| 欧美色图12p| 3d动漫精品啪啪1区2区免费 | 国产成人99久久亚洲综合精品| 国产剧情一区二区三区| 成人小视频免费观看| 91丨porny丨最新| 欧美午夜影院一区| 日韩一级欧美一级| 国产亚洲综合性久久久影院| 国产精品毛片a∨一区二区三区| 亚洲色图欧美偷拍| 亚洲综合在线视频| 日韩精品每日更新| 韩国一区二区在线观看| 成人免费视频视频| 欧美亚洲综合一区| 日韩欧美国产三级| 国产精品萝li| 午夜激情久久久| 国内精品嫩模私拍在线| 成人精品鲁一区一区二区| 国产精品狼人久久影院观看方式| 日韩毛片一二三区| 日本成人中文字幕在线视频| 国内精品第一页| 91精彩视频在线观看| 日韩视频一区在线观看| 国产精品美女久久久久高潮| 午夜欧美电影在线观看| 国产永久精品大片wwwapp| 91在线观看污| 日韩一区二区精品葵司在线| 国产精品久久久久天堂| 天堂va蜜桃一区二区三区| 国产老肥熟一区二区三区| 欧美亚洲一区二区在线| 国产亚洲综合性久久久影院| 亚洲高清一区二区三区| 国产福利一区二区| 欧美疯狂做受xxxx富婆| 国产精品乱人伦| 麻豆精品视频在线| 91久久免费观看| 久久久久久久电影| 亚洲 欧美综合在线网络| 丁香网亚洲国际| 91麻豆精品国产91久久久更新时间| 国产日韩精品久久久| 日本亚洲天堂网| 色中色一区二区| 亚洲国产精品v| 蜜臀av一级做a爰片久久| 日本韩国精品一区二区在线观看| 久久久精品人体av艺术| 免费看黄色91| 欧美视频精品在线| 亚洲天堂av一区| 国产福利一区二区三区视频在线| 欧美男女性生活在线直播观看| 国产精品国产成人国产三级| 韩国中文字幕2020精品| 欧美一区二区三区在线视频 | 久久青草国产手机看片福利盒子 | 欧美羞羞免费网站| 久久久精品人体av艺术| 美腿丝袜一区二区三区| 欧美婷婷六月丁香综合色| 成人免费在线播放视频| 国产**成人网毛片九色| 精品国产乱码久久久久久图片| 午夜av一区二区| 欧美在线观看视频在线| 亚洲精品日韩一| 99久久精品免费精品国产| 国产精品视频yy9299一区| 国产毛片精品视频| 久久你懂得1024| 国产在线播放一区二区三区| 日韩精品一区二区三区视频在线观看| 调教+趴+乳夹+国产+精品| 欧美三级蜜桃2在线观看| 亚洲精品ww久久久久久p站| av成人免费在线| 亚洲三级在线看| 91免费视频网| 一区二区三区四区激情| 日本韩国欧美一区| 亚洲一区在线观看网站| 在线中文字幕不卡| 亚洲一区二区影院| 欧美日韩午夜在线| 日本伊人色综合网| 日韩一区二区在线看片| 久久成人久久鬼色| 国产性做久久久久久| 成人美女视频在线观看18| 成人欧美一区二区三区1314| av中文字幕亚洲| 亚洲综合小说图片| 亚洲一线二线三线视频| 欧美亚洲国产怡红院影院| 午夜电影网亚洲视频| 日韩一区二区高清| 国产高清在线精品| 国产精品成人免费| 欧美体内she精视频| 日韩激情一区二区| 久久久久免费观看| 99热在这里有精品免费| 亚洲www啪成人一区二区麻豆| 欧美电影在线免费观看| 国产九色精品成人porny| 国产精品视频免费| 欧美午夜不卡视频| 麻豆国产91在线播放| 国产精品丝袜久久久久久app| 色狠狠av一区二区三区| 日韩国产精品久久久| 国产偷国产偷亚洲高清人白洁| www.av亚洲| 日韩国产成人精品| 国产欧美精品一区二区色综合 | 亚洲另类中文字| 欧美一二三四区在线| 成人午夜免费视频| 亚洲成人精品一区| 国产日韩欧美不卡在线| 欧美在线免费观看亚洲| 国产在线日韩欧美| 一区二区三区欧美激情| 久久亚洲一级片| 欧美亚洲动漫精品| 国产精品456| 亚洲成人综合视频| 国产女主播一区| 欧美剧在线免费观看网站 | 欧美久久久久久蜜桃| 国产精品18久久久久| 亚洲一区在线视频观看| 国产欧美一区二区精品仙草咪| 欧美色图免费看| 成人99免费视频| 狂野欧美性猛交blacked| 亚洲欧美乱综合| 久久青草国产手机看片福利盒子| 欧美吻胸吃奶大尺度电影| 高清久久久久久| 毛片基地黄久久久久久天堂|