⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create_master.cgi

📁 Unix下基于Web的管理工具
💻 CGI
字号:
#!/usr/local/bin/perl# create_master.cgi# Create a new master zonerequire './dns-lib.pl';&ReadParse();$whatfailed = "Failed to create zone";%access = &get_module_acl();$access{'master'} || &error("You cannot create master zones");$conf = &get_config();# validate inputsif ($in{'rev'}) {	$in{'zone'} =~ /^[\d\.]+$/ ||		&error("'$in{'zone'}' is not a valid network");	$in{'zone'} = &ip_to_arpa($in{'zone'});	}else {	$in{'zone'} =~ /^[A-z0-9\-\.]+$/ ||		&error("'$in{'zone'}' is not a valid domain name");	$in{'zone'} !~ /^[0-9\.]+$/ ||		&error("'$in{'zone'}' must be a domain, not a network");	}$in{'zone'} =~ s/\.$//g;$in{'master'} =~ /^[A-z0-9\-\.]+$/ ||	&error("'$in{'master'}' is not a valid master server");if ($in{'master'} !~ /\.$/) { $in{'master'} .= "."; }$in{'email'} =~ /^\S+\@\S+$/ ||	&error("'$in{'email'}' is not a valid email address");$in{'email'} =~ s/\@/\./g;if ($in{'email'} !~ /\.$/) { $in{'email'} .= "."; }$in{'refresh'} =~ /^\S+$/ ||        &error("'$in{'refresh'}' is not a valid refresh time");$in{'retry'} =~ /^\S+$/ ||        &error("'$in{'retry'}' is not a valid transfer retry time");$in{'expiry'} =~ /^\S+$/ ||        &error("'$in{'expiry'}' is not a valid expiry time");$in{'minimum'} =~ /^\S+$/ ||        &error("'$in{'minimum'}' is not a valid default TTL");$base = $access{'dir'} eq '/' ? &base_directory($conf) : $access{'dir'};if (!$in{'file_def'}) {	$in{'file'} =~ /^\S+$/ ||		&error("'$in{'file'}' is not a valid filename");	if ($in{'file'} !~ /^\//) {		$in{'file'} = $base."/".$in{'file'};		}	&allowed_zone_file(\%access, $in{'file'}) ||		&error("'$in{'file'}' is not an allowable zone file");	}elsif ($in{'rev'}) {	# create filename for reverse zone	$in{'file'} = $base."/".&arpa_to_ip($in{'zone'}).".rev";	}else {	# create filename for forward zone	$in{'file'} = $base."/$in{'zone'}.hosts";	}open(ZONE, "> $in{'file'}") || &error("Failed to create '$in{'file'}' : $?");close(ZONE);# create the SOA and NS recordsif ($config{'soa_style'} == 1) {	$serial = &date_serial()."00";	}else {	$serial = time();	}$vals = "$in{'master'} $in{'email'} (\n".        "\t\t\t$serial\n".        "\t\t\t$in{'refresh'}\n".        "\t\t\t$in{'retry'}\n".        "\t\t\t$in{'expiry'}\n".        "\t\t\t$in{'minimum'} )";&foreign_call("bind8", "create_record",	      $in{'file'}, "$in{'zone'}.", undef, "IN", "SOA", $vals);&foreign_call("bind8", "create_record",	      $in{'file'}, "$in{'zone'}.", undef, "IN", "NS", $in{'master'});# create the zone directive&create_zone({ 'name' => 'primary', 'values' => [ $in{'zone'}, $in{'file'} ]});# Add the new zone to the access listif ($access{'zones'} ne '*') {        $access{'zones'} .= " ".$in{'zone'};        &save_module_acl(\%access);        }&redirect("");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -