diff --git a/bind8/bind8-lib.pl b/bind8/bind8-lib.pl index d67cfa694..114ebf173 100755 --- a/bind8/bind8-lib.pl +++ b/bind8/bind8-lib.pl @@ -1281,6 +1281,14 @@ elsif ($type eq "DMARC") { print &ui_table_row($text{'value_dmarcruf'}, &ui_opt_textbox("dmarcruf", $ruf, 50, $text{'value_dmarcnor'}), 3); + print &ui_table_row($text{'value_dmarcrf'}, + &ui_select("dmarcrf", $dmarc->{'rf'}, + [ [ undef, $text{'default'} ], + [ 'afrf', $text{'value_dmarcafrf'} ] ])); + + print &ui_table_row($text{'value_dmarcri'}, + &ui_textbox("dmarcri", $dmarc->{'ri'}, 5)."s"); + print &ui_table_row($text{'value_dmarcfo'}, &ui_select("dmarcfo", $dmarc->{'fo'}, [ [ undef, $text{'default'} ], diff --git a/bind8/lang/en b/bind8/lang/en index f0809620b..6780843f7 100644 --- a/bind8/lang/en +++ b/bind8/lang/en @@ -528,6 +528,9 @@ value_CAA3=CA domain name value_caa_issue=Single domain cert value_caa_issuewild=Wildcard cert value_caa_iodef=Policy violation URL ++value_dmarcri=Reporting interval ++value_dmarcrf=Report format ++value_dmarcafrf=Authentication Failure Reporting Format tlsa_usage0=Certificate authority tlsa_usage1=End entity diff --git a/bind8/records-lib.pl b/bind8/records-lib.pl index c1d351672..496c7bb65 100755 --- a/bind8/records-lib.pl +++ b/bind8/records-lib.pl @@ -863,7 +863,7 @@ if ($txt =~ /^v=dmarc1/i) { my $dmarc = { }; foreach my $w (@w) { $w = lc($w); - if ($w =~ /^(v|pct|ruf|rua|p|sp|adkim|aspf|fo)=(\S+)$/i) { + if ($w =~ /^(v|pct|ruf|rua|p|sp|adkim|aspf|fo|rf|ri)=(\S+)$/i) { $dmarc->{$1} = $2; } else { @@ -883,7 +883,7 @@ sub join_dmarc { my ($dmarc) = @_; my @rv = ( "v=DMARC1" ); -foreach my $s ("p", "pct", "ruf", "rua", "sp", "adkim", "aspf", "fo") { +foreach my $s ("p", "pct", "ruf", "rua", "sp", "adkim", "aspf", "fo", "rf", "ri") { if ($dmarc->{$s} && $dmarc->{$s} ne '') { push(@rv, $s."=".$dmarc->{$s}); } diff --git a/bind8/save_record.cgi b/bind8/save_record.cgi index 6b79e9fbd..ded3b286c 100755 --- a/bind8/save_record.cgi +++ b/bind8/save_record.cgi @@ -422,6 +422,20 @@ else { $dmarc->{'fo'} = $in{'dmarcfo'}; } + if ($in{'dmarcrf'} eq '') { + delete($dmarc->{'rf'}); + } + else { + $dmarc->{'rf'} = $in{'dmarcrf'}; + } + + if ($in{'dmarcri'} eq '') { + delete($dmarc->{'ri'}); + } + else { + $dmarc->{'ri'} = $in{'dmarcri'}; + } + $vals = "\"".&join_dmarc($dmarc)."\""; } elsif ($in{'type'} eq 'NSEC3PARAM') {