📄 create_master.cgi
字号:
#!/usr/local/bin/perl# create_master.cgi# Create a new master zonerequire './bind8-lib.pl';&ReadParse();&error_setup($text{'mcreate_err'});%access = &get_module_acl();$access{'master'} || &error($text{'mcreate_ecannot'});$access{'ro'} && &error($text{'master_ero'});$conf = &get_config();# validate inputsif ($in{'rev'}) { $in{'zone'} =~ /^[0-9\.]+$/ || &error(&text('mcreate_enet', $in{'zone'})); $in{'zone'} = &ip_to_arpa($in{'zone'}); }else { $in{'zone'} =~ /^[A-z0-9\-\.]+$/ || &error(&text('mcreate_edom', $in{'zone'})); $in{'zone'} !~ /^[0-9\.]+$/ || &error(&text('mcreate_edom2', $in{'zone'})); }$in{'zone'} =~ s/\.$//g;$in{'master'} =~ /^[A-z0-9\-\.]+$/ || &error(&text('master_emaster', $in{'master'}));if ($in{'master'} !~ /\.$/) { $in{'master'} .= "."; }$in{'email'} =~ /^\S+$/ || &error(&text('master_eemail', $in{'email'}));if ($in{'email'} =~ s/\@/\./) { $in{'email'} .= "."; }$in{'refresh'} =~ /^\S+$/ || &error(&text('master_erefresh', $in{'refresh'}));$in{'retry'} =~ /^\S+$/ || &error(&text('master_eretry', $in{'retry'}));$in{'expiry'} =~ /^\S+$/ || &error(&text('master_eexpiry', $in{'expiry'}));$in{'minimum'} =~ /^\S+$/ || &error(&text('master_eminimum', $in{'minimum'}));$base = $access{'dir'} eq '/' ? &base_directory($conf) : $access{'dir'};if (!$in{'file_def'}) { $in{'file'} =~ /^\S+$/ || &error(&text('mcreate_efile', $in{'file'})); if ($in{'file'} !~ /^\//) { $in{'file'} = $base."/".$in{'file'}; } &allowed_zone_file(\%access, $in{'file'}) || &error(&text('mcreate_efile2', $in{'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(&text('mcreate_efile3', $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'} )";&create_record($in{'file'}, "$in{'zone'}.", undef, "IN", "SOA", $vals);&create_record($in{'file'}, "$in{'zone'}.", undef, "IN", "NS", $in{'master'});# create the zone directiveopen(CONF, ">> $config{'named_conf'}");print CONF "zone \"$in{'zone'}\" {\n";print CONF "\ttype master;\n";print CONF "\tfile \"$in{'file'}\";\n";print CONF "\t};\n";print CONF "\n";close(CONF);# 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 + -