From ea838d05006fafebf80ce1d6640ae74dacbfbc4a Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Sat, 28 Feb 2015 16:13:11 -0800 Subject: [PATCH] Respect modifiers when generating records https://sourceforge.net/p/webadmin/bugs/4566/ --- bind8/save_gen.cgi | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/bind8/save_gen.cgi b/bind8/save_gen.cgi index 7183979b7..76397cbc9 100755 --- a/bind8/save_gen.cgi +++ b/bind8/save_gen.cgi @@ -42,7 +42,8 @@ if ($in{'show'}) { $rhs = $gv[3]; $rhs =~ s/\$\$/\0/g; - $rhs =~ s/\$/$i/g; + #$rhs =~ s/\$/$i/g; + $rhs =~ s/(\$(\{[^\}]*\})?)/&expand_mods($i,$2)/ge; $rhs =~ s/\0/\$/g; $rhsfull = &check_ipaddress($rhs) ? $rhs : $rhs =~ /\.$/ ? $rhs : @@ -108,3 +109,14 @@ for($i=0; defined($in{"type_$i"}); $i++) { &sign_dnssec_zone_if_key($zone, \@recs); &redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); +sub expand_mods +{ +my ($i, $m) = @_; +$m =~ s/^\{//; +$m =~ s/\}$//; +my ($o, $w, $b) = split(/,/, $m); +$b ||= "d"; +$i += $o; +$i = sprintf("%".($w ? "0".$w : "").$b, $i); +return $i; +}