diff --git a/bind8/edit_zonekey.cgi b/bind8/edit_zonekey.cgi
index ecd418249..838e05d1d 100755
--- a/bind8/edit_zonekey.cgi
+++ b/bind8/edit_zonekey.cgi
@@ -68,8 +68,28 @@ if (@keyrecs) {
my $ds = &get_ds_record($zone);
if ($ds) {
print $text{'zonekey_ds'},"
\n";
- print &ui_textarea("ds", join("\n".$desc, split(/$desc/, $ds)), 2, 80, "off", 0,
+ # Split DS records in string into a list
+ my @ds = split(/\s(?=\S+\.\s+\d+\s+IN\s+DS\s+\d+\s+
+ \d+\s+\d+\s+[0-9A-Fa-f]{16,})/x, $ds);
+ print &ui_textarea("ds", join("\n", @ds), 2, 80, "off", 0,
"readonly style='width:90%'"),"
\n";
+ print &ui_columns_start([
+ $text{'zonekey_ds_keytag'},
+ $text{'zonekey_ds_alg'},
+ $text{'zonekey_ds_type'},
+ $text{'zonekey_ds_digest'},
+ ]);
+ foreach my $r (@ds) {
+ if ($r =~ /
+ \bDS\s+(?\d+)\s+(?\d+)\s+
+ (?\d+)\s+
+ (?[0-9A-Fa-f]+)\b/x) {
+ print &ui_columns_row([
+ $+{key_tag}, $+{algorithm},
+ $+{digest_type}, $+{digest}]);
+ }
+ }
+ print &ui_columns_end();
}
# Offer to disable
diff --git a/bind8/lang/en b/bind8/lang/en
index 26c02f7dc..ee7315edb 100644
--- a/bind8/lang/en
+++ b/bind8/lang/en
@@ -1282,6 +1282,10 @@ zonekey_private=Private key details :
zonekey_privatefile=Private key file : $1
zonekey_algorithm=DNSSEC algorithm : $1
zonekey_ds=DS record for parent zone :
+zonekey_ds_keytag=Key tag
+zonekey_ds_alg=Algorithm
+zonekey_ds_type=Digest type
+zonekey_ds_digest=Digest string
zonekey_expandksk=Show public and private key-signing-key details ..
zonekey_expandzone=Show public and private zone-key details ..
zonekey_noprivate=However, Webmin could not find the private key associated with the zone, and so will not be able to re-sign it.