3 # Create a new forward zone
5 require './bind8-lib.pl';
7 &error_setup($text{'dcreate_err'});
8 $access{'delegation'} || &error($text{'dcreate_ecannot'});
9 $access{'ro'} && &error($text{'master_ero'});
10 $conf = &get_config();
11 if ($in{'view'} ne '') {
12 $view = $conf->[$in{'view'}];
13 &can_edit_view($view) || &error($text{'master_eviewcannot'});
14 $vconf = $view->{'members'};
23 ($ipv4 = &check_net_ip($in{'zone'})) ||
24 $config{'support_aaaa'} &&
25 (($in{'zone'} =~ /^([\w:]+)(\/\d+)$/) || &check_ip6address($1)) ||
26 &error(&text('create_enet', $in{'zone'}));
28 $in{'zone'} = &ip_to_arpa($in{'zone'});
31 $in{'zone'} = &net_to_ip6int($1, ($2 ? substr($2, 1) : "" ));
35 ($in{'zone'} =~ /^[\d\.]+$/ || $in{'zone'} =~ /^[\d\:]+(\/[\d]+)?$/) &&
36 &error(&text('create_edom2', $in{'zone'}));
37 &valdnsname($in{'zone'}, 0, ".") ||
38 &error(&text('create_edom', $in{'zone'}));
40 $in{'zone'} =~ s/\.$//;
41 foreach $z (&find("zone", $vconf)) {
42 if (lc($z->{'value'}) eq lc($in{'zone'})) {
43 &error($text{'master_etaken'});
48 @mdirs = map { { 'name' => $_ } } @masters;
49 $dir = { 'name' => 'zone',
50 'values' => [ $in{'zone'} ],
52 'members' => [ { 'name' => 'type',
53 'values' => [ 'delegation-only' ] }
57 # Create zone directive
58 &create_zone($dir, $conf, $in{'view'});
59 &webmin_log("create", "delegation", $in{'zone'}, \%in);
61 # Get the new zone's index
62 $idx = &get_zone_index($in{'zone'}, $in{'view'});
64 &add_zone_access($in{'zone'});
65 &redirect("edit_delegation.cgi?index=$idx&view=$in{'view'}");