3 # Save $generate records
5 require './bind8-lib.pl';
7 $access{'gen'} || &error($text{'gen_ecannot'});
8 $zone = &get_zone_name($in{'index'}, $in{'view'});
9 $dom = $zone->{'name'};
10 &can_edit_zone($zone) ||
11 &error($text{'recs_ecannot'});
12 $file = $zone->{'file'};
13 @recs = &read_zone_file($file, $dom);
14 @gens = grep { $_->{'generate'} } @recs;
17 # Just show what would be generated
18 $desc = &text('recs_header', &ip6int_to_net(&arpa_to_ip($dom)));
19 &ui_print_header($desc, $text{'gen_title2'}, "",
20 undef, undef, undef, undef, &restart_links($zone));
22 print &ui_columns_start([ $text{'recs_name'}, $text{'recs_type'},
23 $text{'recs_ttl'}, $text{'recs_vals'},
24 $text{'gen_raw'} ], 100);
26 @gv = @{$g->{'generate'}};
27 if ($gv[0] =~ /^(\d+)-(\d+)\/(\d+)$/) {
28 $start = $1; $end = $2; $skip = $3;
30 elsif ($gv[0] =~ /^(\d+)-(\d+)$/) {
31 $start = $1; $end = $2; $skip = 1;
34 for($i=$start; $i<=$end; $i+=$skip) {
39 $lhsfull = $lhs =~ /\.$/ ? $lhs :
40 $dom eq "." ? "$lhs." : "$lhs.$dom";
46 $rhsfull = $rhs =~ /\.$/ ? $rhs :
47 $dom eq "." ? "$rhs." : "$rhs.$dom";
49 print &ui_columns_row([
50 &arpa_to_ip($lhsfull), $gv[2],
51 $text{'default'}, &arpa_to_ip($rhsfull),
52 "<tt>$lhs IN $gv[2] $rhs</tt>" ]);
55 print &ui_columns_end();
57 &ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}",
58 $text{'master_return'});
62 # Parse and validate inputs
63 &error_setup($text{'gen_err'});
64 for($i=0; defined($in{"type_$i"}); $i++) {
67 $in{"start_$i"} =~ /^\d+$/ ||
68 &error(&text('gen_estart', $i+1));
69 $in{"stop_$i"} =~ /^\d+$/ ||
70 &error(&text('gen_estop', $i+1));
71 $in{"start_$i"} <= $in{"stop_$i"} ||
72 &error(&text('gen_erange', $i+1));
73 $in{"skip_$i"} =~ /^\d*$/ ||
74 &error(&text('gen_eskip', $i+1));
75 push(@gv, $in{"start_$i"}."-".$in{"stop_$i"});
77 $gv[$#gv] .= "/".$in{"skip_$i"};
79 $in{"name_$i"} =~ /^[A-Za-z0-9\.\-$uscore$star\$]+$/ ||
80 &error(&text('gen_ename', $i+1));
81 push(@gv, $in{"name_$i"});
82 push(@gv, $in{"type_$i"});
83 $in{"value_$i"} =~ /^[A-Za-z0-9\.\-$uscore$star\$]+$/ ||
84 &error(&text('gen_evalue', $i+1));
85 push(@gv, $in{"value_$i"});
86 push(@gv, $in{"cmt_$i"}) if ($in{"cmt_$i"});
88 &modify_generator($gens[$i]->{'file'}, $gens[$i], @gv);
91 &create_generator($file, @gv);
96 &delete_generator($gens[$i]->{'file'}, $gens[$i]);
98 if ($g->{'line'} > $gens[$i]->{'line'}) {
105 &bump_soa_record($file, \@recs);
106 &sign_dnssec_zone_if_key($zone, \@recs);
107 &redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}");