diff --git a/bind8/conf_trusted.cgi b/bind8/conf_trusted.cgi index 305d9d01e..84f4119c6 100755 --- a/bind8/conf_trusted.cgi +++ b/bind8/conf_trusted.cgi @@ -34,54 +34,61 @@ if (&supports_dnssec_client() == 2) { $text{'default'}, undef); } -print &ui_table_hr(); - -# Trusted DLVs -my @dtable = ( ); -my $i = 0; -foreach my $d (@dlv, { 'values' => [ '.' ] }) { - my $dlv = $d->{'values'}->[0]; - $dlv = "" if ($dlv eq "."); - push(@dtable, [ &ui_opt_textbox("anchor_$i", $d->{'values'}->[2], +# Trusted DLVs (obsolete) +if (@dlv) { + my @dtable = ( ); + my $i = 0; + foreach my $d (@dlv, { 'values' => [ '.' ] }) { + my $dlv = $d->{'values'}->[0]; + $dlv = "" if ($dlv eq "."); + push(@dtable, [ + &ui_opt_textbox("anchor_$i", $d->{'values'}->[2], 30, $text{'trusted_none'}), &ui_opt_textbox("dlv_$i", $dlv, 20, $text{'trusted_root'}) ]); - $i++; - } -print &ui_table_row($text{'trusted_dlvs'}, - &ui_radio("dlv_auto", + $i++; + } + print &ui_table_row($text{'trusted_dlvs'}, + &ui_radio("dlv_auto", + @dlv == 0 ? 2 : @dlv == 1 && $dlv[0]->{'values'}->[0] eq 'auto' ? 1 : 0, [ [ 1, $text{'trusted_dlvs1'} ], + [ 2, $text{'trusted_dlvs2'} ], [ 0, $text{'trusted_dlvs0'} ] ])."
\n". - &ui_columns_table([ $text{'trusted_anchor'}, $text{'trusted_dlv'} ], - undef, - \@dtable), 3); + &ui_columns_table([ $text{'trusted_anchor'}, + $text{'trusted_dlv'} ], + undef, + \@dtable), 3); + } # Trusted keys -my @ktable = ( ); -$i = 0; -foreach my $k (@{$tkeys->{'members'}}, { 'values' => [ ] }) { - my @v = @{$k->{'values'}}; - my @wrapped = ( ); - while(length($v[3]) > 30) { - push(@wrapped, substr($v[3], 0, 30)); - $v[3] = substr($v[3], 30); - } - push(@wrapped, $v[3]); - push(@ktable, [ &ui_opt_textbox("zone_$i", $k->{'name'}, 20, +if (@{$tkeys->{'members'}}) { + my @ktable = ( ); + my $i = 0; + foreach my $k (@{$tkeys->{'members'}}, { 'values' => [ ] }) { + my @v = @{$k->{'values'}}; + my @wrapped = ( ); + while(length($v[3]) > 30) { + push(@wrapped, substr($v[3], 0, 30)); + $v[3] = substr($v[3], 30); + } + push(@wrapped, $v[3]); + push(@ktable, [ + &ui_opt_textbox("zone_$i", $k->{'name'}, 20, $text{'trusted_none'}), - &ui_textbox("flags_$i", $v[0], 6), - &ui_textbox("proto_$i", $v[1], 6), - &ui_textbox("alg_$i", $v[2], 6), + &ui_textbox("flags_$i", $v[0], 6), + &ui_textbox("proto_$i", $v[1], 6), + &ui_textbox("alg_$i", $v[2], 6), &ui_textarea("key_$i", join("\n", @wrapped), 4, 32) ]); - $i++; + $i++; + } + print &ui_table_row($text{'trusted_keys'}, + &ui_columns_table([ + $text{'trusted_zone'}, $text{'trusted_flags'}, + $text{'trusted_proto'}, $text{'trusted_alg'}, + $text{'trusted_key'} ], + undef, \@ktable), 3); } -print &ui_table_row($text{'trusted_keys'}, - &ui_columns_table([ $text{'trusted_zone'}, $text{'trusted_flags'}, - $text{'trusted_proto'}, $text{'trusted_alg'}, - $text{'trusted_key'} ], - undef, - \@ktable), 3); print &ui_table_end(); print &ui_form_end([ [ undef, $text{'save'} ] ]); diff --git a/bind8/lang/en b/bind8/lang/en index 9932f1e39..e56ed8ec3 100644 --- a/bind8/lang/en +++ b/bind8/lang/en @@ -1254,6 +1254,7 @@ trusted_auto=Yes (automatic mode) trusted_dlvs=Additional trust anchors trusted_dlvs1=Determine automatically trusted_dlvs0=Listed below ... +trusted_dlvs2=None trusted_anchor=Anchor zone trusted_dlv=Real zone trusted_keys=Additional trusted keys diff --git a/bind8/save_trusted.cgi b/bind8/save_trusted.cgi index e3806687f..07a8b9e8e 100755 --- a/bind8/save_trusted.cgi +++ b/bind8/save_trusted.cgi @@ -21,67 +21,78 @@ if (&supports_dnssec_client() == 2) { } # Save DLV zones -my @dlvs = ( ); -if ($in{'dlv_auto'}) { - # Automatic mode - push(@dlvs, { 'name' => 'dnssec-lookaside', - 'values' => [ 'auto' ] }); - } -else { - # Listed zones - my $dlv; - for(my $i=0; defined($in{"anchor_$i"}); $i++) { - if (!$in{"anchor_${i}_def"}) { - $in{"anchor_$i"} =~ /^[a-z0-9\.\-\_]+$/ || - &error(&text('trusted_eanchor', $i+1)); - $in{"anchor_$i"} .= "." if ($in{"anchor_$i"} !~ /\.$/); - if ($in{"dlv_${i}_def"}) { - $dlv = "."; +if (defined($in{'dlv_auto'})) { + my @dlvs = ( ); + if ($in{'dlv_auto'} == 1) { + # Automatic mode + push(@dlvs, { 'name' => 'dnssec-lookaside', + 'values' => [ 'auto' ] }); + } + elsif ($in{'dlv_auto'} == 0) { + # Listed zones + my $dlv; + for(my $i=0; defined($in{"anchor_$i"}); $i++) { + if (!$in{"anchor_${i}_def"}) { + $in{"anchor_$i"} =~ /^[a-z0-9\.\-\_]+$/ || + &error(&text('trusted_eanchor', $i+1)); + $in{"anchor_$i"} .= "." + if ($in{"anchor_$i"} !~ /\.$/); + if ($in{"dlv_${i}_def"}) { + $dlv = "."; + } + else { + $in{"dlv_$i"} =~ /^[a-z0-9\.\-\_]+$/ || + &error(&text('trusted_edlv', $i+1)); + $dlv = $in{"dlv_$i"}; + $dlv .= "." if ($dlv !~ /\.$/); + } + push(@dlvs, { 'name' => 'dnssec-lookaside', + 'values' => [ + $dlv, "trust-anchor", + $in{"anchor_$i"} ] }); } - else { - $in{"dlv_$i"} =~ /^[a-z0-9\.\-\_]+$/ || - &error(&text('trusted_edlv', $i+1)); - $dlv = $in{"dlv_$i"}; - $dlv .= "." if ($dlv !~ /\.$/); - } - push(@dlvs, { 'name' => 'dnssec-lookaside', - 'values' => [ $dlv, "trust-anchor", - $in{"anchor_$i"} ] }); } } + elsif ($in{'dlv_auto'} == 2) { + # None + @dlvs = ( ); + } + &save_directive($options, "dnssec-lookaside", \@dlvs, 1); } -&save_directive($options, "dnssec-lookaside", \@dlvs, 1); # Save trusted keys -my @keys = ( ); -my $trusted = &find("trusted-keys", $conf); -for(my $i=0; defined($in{"zone_$i"}); $i++) { - next if ($in{"zone_${i}_def"}); - $in{"zone_$i"} =~ /^[a-z0-9\.\-\_]+$/ || - &error(&text('trusted_ezone', $i+1)); - $in{"zone_$i"} .= "." if ($in{"zone_$i"} !~ /\.$/); - $in{"flags_$i"} =~ /^\d+$/ || - &error(&text('trusted_eflags', $i+1)); - $in{"proto_$i"} =~ /^\d+$/ || - &error(&text('trusted_eproto', $i+1)); - $in{"alg_$i"} =~ /^\d+$/ || - &error(&text('trusted_ealg', $i+1)); - $in{"key_$i"} =~ s/\s//g; - $in{"key_$i"} || &error(&text('trusted_ekey', $i+1)); - push(@keys, { 'name' => $in{"zone_$i"}, - 'values' => [ $in{"flags_$i"}, $in{"proto_$i"}, - $in{"alg_$i"}, '"'.$in{"key_$i"}.'"' ], - }); +if (defined($in{'zone_0'})) { + my @keys = ( ); + my $trusted = &find("trusted-keys", $conf); + for(my $i=0; defined($in{"zone_$i"}); $i++) { + next if ($in{"zone_${i}_def"}); + $in{"zone_$i"} =~ /^[a-z0-9\.\-\_]+$/ || + &error(&text('trusted_ezone', $i+1)); + $in{"zone_$i"} .= "." if ($in{"zone_$i"} !~ /\.$/); + $in{"flags_$i"} =~ /^\d+$/ || + &error(&text('trusted_eflags', $i+1)); + $in{"proto_$i"} =~ /^\d+$/ || + &error(&text('trusted_eproto', $i+1)); + $in{"alg_$i"} =~ /^\d+$/ || + &error(&text('trusted_ealg', $i+1)); + $in{"key_$i"} =~ s/\s//g; + $in{"key_$i"} || &error(&text('trusted_ekey', $i+1)); + push(@keys, { 'name' => $in{"zone_$i"}, + 'values' => [ $in{"flags_$i"}, $in{"proto_$i"}, + $in{"alg_$i"}, + '"'.$in{"key_$i"}.'"' ], + }); + } + if (!$trusted && @keys) { + # Need to create block + $trusted = { 'name' => 'trusted-keys', + 'type' => 1, + 'members' => [ ] }; + &save_directive($parent, "trusted-keys", [ $trusted ]); + } + my @oldkeys = @{$trusted->{'members'}}; + &save_directive($trusted, \@oldkeys, \@keys, 1); } -if (!$trusted && @keys) { - # Need to create block - $trusted = { 'name' => 'trusted-keys', - 'type' => 1, - 'members' => [ ] }; - &save_directive($parent, "trusted-keys", [ $trusted ]); - } -my @oldkeys = @{$trusted->{'members'}}; -&save_directive($trusted, \@oldkeys, \@keys, 1); &flush_file_lines(); &unlock_file(&make_chroot($config{'named_conf'}));