Support the older primary zone type, which is the same as master https://sourceforge.net/p/webadmin/bugs/5584/

This commit is contained in:
Jamie Cameron
2022-09-22 22:58:22 -07:00
parent 4d2c8979e9
commit 66849cbe55
22 changed files with 54 additions and 68 deletions

View File

@@ -27,7 +27,7 @@ foreach my $v (@views) {
push(@zones, &find("zone", $conf));
foreach my $z (@zones) {
my $tv = &find_value("type", $z->{'members'});
next if ($tv ne "master" && $tv ne "hint");
next if ($tv ne "master" && $tv ne "primary" && $tv ne "hint");
my $file = &find_value("file", $z->{'members'});
next if (!$file);
if (&is_raw_format_records(&make_chroot($file))) {

View File

@@ -802,7 +802,8 @@ if ($ipv6) {
$rev = &net_to_ip6int($addr, 4*($i+1));
$rev =~ s/\.$//g;
foreach my $z (@zl) {
if (lc($z->{'name'}) eq $rev && $z->{'type'} eq 'master') {
if (lc($z->{'name'}) eq $rev &&
($z->{'type'} eq 'master' || $z->{'type'} eq 'primary')) {
# found the reverse master domain
$revconf = $z;
last DOMAIN;
@@ -822,7 +823,7 @@ else {
$zname =~ s/^(\d+)\/(\d+)\.//;
if ((lc($zname) eq $rev ||
lc($zname) eq "$rev.") &&
$z->{'type'} eq "master") {
($z->{'type'} eq "master" || $z->{'type'} eq "primary")) {
# found the reverse master domain
$revconf = $z;
last DOMAIN;
@@ -870,7 +871,7 @@ DOMAIN: for(my $i=1; $i<@parts; $i++) {
my $typed;
if ((lc($z->{'name'}) eq $fwd ||
lc($z->{'name'}) eq "$fwd.") &&
$z->{'type'} eq "master") {
($z->{'type'} eq "master" || $z->{'type'} eq "primary")) {
# Found the forward master!
$fwdconf = $z;
last DOMAIN;
@@ -4304,7 +4305,7 @@ my %cache;
&read_file($dnssec_expiry_cache, \%cache);
my $changed = 0;
foreach my $z (&list_zone_names()) {
next if ($z->{'type'} ne 'master');
next if ($z->{'type'} ne 'master' && $z->{'type'} ne 'primary');
my ($t, $e);
if ($cache{$z->{'name'}}) {
($t, $e) = split(/\s+/, $cache{$z->{'name'}});
@@ -4382,5 +4383,21 @@ my $kvspace = " " x length("@kvalues");
return join(" ", @kvalues) . " " . join("\n$kvspace ", splice(@krvalues, 6));
}
# redirect_url(type, [zone], [view])
# Returns the URL of the appropriate edit_*.cgi page
sub redirect_url
{
my ($type, $zone, $view) = @_;
my $r = $type eq "master" || $type eq "primary" ? "edit_master.cgi" :
$type eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi";
if ($zone) {
$r .= "?zone=".&urlize($zone);
if ($view) {
$r .= "&view=".&urlize($view);
}
}
return $r;
}
1;

View File

@@ -33,7 +33,8 @@ elsif ($cgi eq 'edit_text.cgi' || $cgi eq 'edit_soa.cgi' ||
$cgi eq 'edit_zonekey.cgi' || $cgi eq 'edit_recs.cgi' ||
$cgi eq 'edit_record.cgi') {
# Find a master zone
my ($z) = grep { $_->{'type'} eq 'master' &&
my ($z) = grep { ($_->{'type'} eq 'master' ||
$_->{'type'} eq 'primary') &&
&can_edit_zone($_) } &list_zone_names();
return 'none' if (!$z);
my $rv = 'zone='.$z->{'zone'}.

View File

@@ -25,6 +25,7 @@ $access{'delete'} || &error($text{'master_edeletecannot'});
my $rev = ($zconf->{'value'} =~ /in-addr\.arpa/i ||
$zconf->{'value'} =~ /\.$ipv6revzone/i);
my $type = &find("type", $zconf->{'members'})->{'value'};
$type = 'master' if ($type eq 'primary');
if (!$in{'confirm'} && $config{'confirm_zone'}) {
# Ask the user if he is sure ..
&ui_print_header(undef, $text{'delete_title'}, "",

View File

@@ -22,6 +22,7 @@ my $typedesc = $text{"recs_$in{'type'}"} || $in{'type'};
# Show form for adding a record
my $type = $zone->{'type'};
$type = 'master' if ($type eq 'primary');
my $file = $zone->{'file'};
my $form = 0;
my $shown_create_form;

View File

@@ -34,6 +34,5 @@ print &ui_table_row(undef, &ui_checkbox("soa", $config{'updserial_on'},
print &ui_table_end();
print &ui_form_end($access{'ro'} ? [ ] : [ [ undef, $text{'save'} ] ]);
&ui_print_footer(($tv eq "master" ? "edit_master.cgi" :
$tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi").
"?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'});
&ui_print_footer(&redirect_url($tv, $in{'zone'}, $in{'view'}),
$text{'master_return'});

View File

@@ -23,7 +23,7 @@ my %taken;
my %nets;
foreach my $z (@zones) {
my $type = &find_value("type", $z->{'members'});
next if ($type ne "master");
next if ($type ne "master" && $type ne "primary");
my $file = &find_value("file", $z->{'members'});
my @recs = &read_zone_file($file, $z->{'value'});
foreach my $r (@recs) {

View File

@@ -29,9 +29,5 @@ if ($? || $out =~ /failed|not found|error/i) {
&error(&text('restart_endc', "<tt>$out</tt>"));
}
&webmin_log("freeze", $dom);
my $tv = $zone->{'type'};
&redirect(($tv eq "master" ? "edit_master.cgi" :
$tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi").
"?zone=$in{'zone'}&view=$in{'view'}");
&redirect(&redirect_url($zone->{'type'}, $in{'zone'}, $in{'view'}));

View File

@@ -187,6 +187,7 @@ elsif (@zones && (!@views || !$config{'by_view'})) {
my $t = $z->{'type'};
next if (!$t);
$t = "delegation" if ($t eq "delegation-only");
$t = "master" if ($t eq "primary");
my $zn = $v eq "." ? "<i>$text{'index_root'}</i>"
: &ip6int_to_net(&arpa_to_ip($v));
if ($z->{'view'}) {
@@ -350,6 +351,8 @@ elsif (@zones) {
foreach my $z (@zv) {
my $v = $z->{'name'};
my $t = $z->{'type'};
$t = "delegation" if ($t eq "delegation-only");
$t = "master" if ($t eq "primary");
my $zn = $v eq "." ? "<i>$text{'index_root'}</i>"
: &ip6int_to_net(&arpa_to_ip($v));
push(@zlinks, "edit_$t.cgi?zone=$z->{'name'}".

View File

@@ -62,7 +62,7 @@ $in{'ttl_def'} || $in{'ttl'} =~ /^\d+$/ ||
foreach my $zi (@zones) {
print &text('rmass_doing', "<tt>$zi->{'name'}</tt>"),"<br>\n";
if ($zi->{'type'} ne 'master') {
if ($zi->{'type'} ne 'master' && $zi->{'type'} ne 'primary') {
# Skip - not a master zone
print $text{'umass_notmaster'},"<p>\n";
next;

View File

@@ -28,7 +28,7 @@ $in{'name_def'} || $in{'name'} || &error($text{'rdmass_ename'});
foreach my $zi (@zones) {
print &text('rdmass_doing', "<tt>$zi->{'name'}</tt>"),"<br>\n";
if ($zi->{'type'} ne 'master') {
if ($zi->{'type'} ne 'master' && $zi->{'type'} ne 'primary') {
# Skip - not a master zone
print $text{'umass_notmaster'},"<p>\n";
next;

View File

@@ -63,7 +63,7 @@ elsif ($in{'type'} eq 'ttl') {
foreach my $zi (@zones) {
print &text('umass_doing', "<tt>$zi->{'name'}</tt>"),"<br>\n";
if ($zi->{'type'} ne 'master') {
if ($zi->{'type'} ne 'master' && $zi->{'type'} ne 'primary') {
# Skip - not a master zone
print $text{'umass_notmaster'},"<p>\n";
next;

View File

@@ -25,7 +25,7 @@ my $errcount = 0;
my $donecount = 0;
foreach my $z (@zones) {
# Get the key
next if ($z->{'type'} ne 'master');
next if ($z->{'type'} ne 'master' && $z->{'type'} ne 'primary');
my $zonefile = &get_zone_file($z);
my $krfile = "$zonefile".".krf";
my $dom = $z->{'members'} ? $z->{'values'}->[0] : $z->{'name'};

View File

@@ -28,14 +28,6 @@ if ($access{'remote'}) {
}
&webmin_log("apply");
my $redir_targ = ($in{'type'} eq "master" ? "edit_master.cgi" :
$in{'type'} eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi");
my $zone;
if ($in{'zone'}) {
$zone = "?zone=$in{'zone'}";
if ($in{'view'}) {
$zone .= "&view=$in{'view'}";
}
}
&redirect($zone && $in{'return'} ? "$redir_targ$zone" : "");
&redirect($in{'zone'} && $in{'return'} ?
&redirect_url($in{'type'}, $in{'zone'}, $in{'view'}) : "");

View File

@@ -17,7 +17,4 @@ my $err = &restart_zone($zone->{'name'}, $zone->{'view'});
&error($err) if ($err);
&webmin_log("apply", $zone->{'name'});
my $tv = $zone->{'type'};
my $redir_targ = ($tv eq "master" ? "edit_master.cgi" :
$tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi");
&redirect($redir_targ . "?zone=$in{'zone'}&view=$in{'view'}");
&redirect(&redirect_url($zone->{'type'}, $in{'zone'}, $in{'view'}));

View File

@@ -158,7 +158,8 @@ else {
# Is this address already in use? Search all domains
# to find out..
foreach my $z (@zl) {
next if ($z->{'type'} ne "master");
next if ($z->{'type'} ne "master" &&
$z->{'type'} ne "primary");
next if ($z->{'name'} =~ /in-addr\.arpa/i);
my $file = $z->{'file'};
my @frecs = &read_zone_file($file, $z->{'name'});
@@ -180,7 +181,8 @@ else {
# Is this address already in use? Search all domains
# to find out..
foreach my $z (@zl) {
next if ($z->{'type'} ne "master");
next if ($z->{'type'} ne "master" &&
$z->{'type'} ne "primary");
next if ($z->{'name'} =~ /\.$ipv6revzone/i);
my $file = $z->{'file'};
my @frecs = &read_zone_file($file, $z->{'name'});

View File

@@ -60,7 +60,7 @@ foreach my $v (@views) {
}
foreach my $z (@zoneconfs) {
my $type = &find_value("type", $z->{'members'});
if ($type eq "master") {
if ($type eq "master" || $type eq "primary") {
$zmap{$z->{'value'}} = $z;
}
}

View File

@@ -14,14 +14,6 @@ $access{'apply'} || &error($text{'start_ecannot'});
my $err = &start_bind();
&error($err) if ($err);
&webmin_log("start");
my $redir_targ = ($in{'type'} eq "master" ? "edit_master.cgi" :
$in{'type'} eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi");
my $zone;
if ($in{'zone'}) {
$zone = "?zone=$in{'zone'}";
if ($in{'view'}) {
$zone .= "&view=$in{'view'}";
}
}
&redirect($zone && $in{'return'} ? "$redir_targ$zone" : "");
&redirect($in{'zone'} && $in{'return'} ?
&redirect_url($in{'type'}, $in{'zone'}, $in{'view'}) : "");

View File

@@ -8,14 +8,6 @@ $access{'apply'} || &error($text{'stop_ecannot'});
$err = &stop_bind();
&error($err) if ($err);
&webmin_log("stop");
my $redir_targ = ($in{'type'} eq "master" ? "edit_master.cgi" :
$in{'type'} eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi");
my $zone;
if ($in{'zone'}) {
$zone = "?zone=$in{'zone'}";
if ($in{'view'}) {
$zone .= "&view=$in{'view'}";
}
}
&redirect($zone && $in{'return'} ? "$redir_targ$zone" : "");
&redirect($in{'zone'} && $in{'return'} ?
&redirect_url($in{'type'}, $in{'zone'}, $in{'view'}) : "");

View File

@@ -30,8 +30,4 @@ if ($? || $out =~ /failed|not found|error/i) {
}
&webmin_log("thaw", $dom);
my $tv = $zone->{'type'};
&redirect(($tv eq "master" ? "edit_master.cgi" :
$tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi").
"?zone=$in{'zone'}&view=$in{'view'}");
&redirect(&redirect_url($zone->{'type'}, $in{'zone'}, $in{'view'}));

View File

@@ -36,6 +36,5 @@ else {
}
}
&ui_print_footer(($tv eq "master" ? "edit_master.cgi" :
$tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi").
"?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'});
&ui_print_footer(&redirect_url($tv, $in{'zone'}, $in{'view'}),
$text{'master_return'});

View File

@@ -34,7 +34,5 @@ print &ui_table_start(&text('whois_header', "<tt>".&html_escape($pcmd)."</tt>"),
print &ui_table_row(undef, "<pre>".&html_escape($out)."</pre>", 2);
print &ui_table_end();
&ui_print_footer(($tv eq "master" ? "edit_master.cgi" :
$tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi").
"?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'});
&ui_print_footer(&redirect_url($tv, $in{'zone'}, $in{'view'}),
$text{'master_return'});