diff --git a/bind8/CHANGELOG b/bind8/CHANGELOG index 73bc6bead..e19311fa2 100644 --- a/bind8/CHANGELOG +++ b/bind8/CHANGELOG @@ -133,3 +133,5 @@ When a zone is reloaded, it is now frozed first and then thawed afterwards with ---- Changes since 1.580 ---- The source IP and port for zone transfers can now be specific on the Addresses and Topology page. Added support for zone signing using the DNSSEC-Tools suite, thanks to a patch from Suresh Krishnaswamy. +---- Changes since 1.600 ---- +Changed all links to zones to use the zone name instead of an index, to prevent incorrect modification during concurrent access to the module. diff --git a/bind8/bind8-lib.pl b/bind8/bind8-lib.pl index f2f6afc3f..5fa49c87c 100755 --- a/bind8/bind8-lib.pl +++ b/bind8/bind8-lib.pl @@ -899,7 +899,7 @@ sub can_edit_reverse return $access{'reverse'} || &can_edit_zone($_[0]); } -# record_input(zoneindex, view, type, file, origin, [num], [record], +# record_input(zone-name, view, type, file, origin, [num], [record], # [new-name, new-value]) # Display a form for editing or creating a DNS record sub record_input @@ -907,7 +907,7 @@ sub record_input local(%rec, @recs, $ttl, $ttlunit); local $type = $_[6] ? $_[6]->{'type'} : $_[2]; print &ui_form_start("save_record.cgi"); -print &ui_hidden("index", $_[0]); +print &ui_hidden("zone", $_[0]); print &ui_hidden("view", $_[1]); print &ui_hidden("file", $_[3]); print &ui_hidden("origin", $_[4]); @@ -2308,6 +2308,37 @@ foreach $z (@zones) { return undef; } +# get_zone_name_or_error(index|name, [viewindex|"any"]) +# Looks up a zone by name and view, or calls error +sub get_zone_name_or_error +{ +local $zone = &get_zone_name(@_); +if (!$zone) { + my $msg = $_[1] eq 'any' ? 'master_egone' : + $_[1] eq '' ? 'master_egone2' : 'master_egone3'; + &error(&text($msg, @_)); + } +return $zone; +} + +# zone_to_config(&zone) +# Given a zone name object, return the config file object for the zone. In an +# array context, also returns the main config list and parent object +sub zone_to_config +{ +my ($zone) = @_; +my $parent = &get_config_parent(); +my $bconf = &get_config(); +my $conf = $bconf; +if ($zone->{'viewindex'} ne '') { + my $view = $conf->[$zone->{'viewindex'}]; + $conf = $view->{'members'}; + $parent = $view; + } +my $z = $conf->[$zone->{'index'}]; +return wantarray ? ( $z, $bconf, $parent ) : $z; +} + # list_slave_servers() # Returns a list of Webmin servers on which slave zones are created / deleted sub list_slave_servers @@ -2838,17 +2869,17 @@ if (-r $signfile) { } } -# move_zone_button(&config, current-view, zone-index) +# move_zone_button(&config, current-view-index, zone-name) # If possible, returns a button row for moving this zone to another view sub move_zone_button { -local ($conf, $view, $index) = @_; +local ($conf, $view, $zonename) = @_; local @views = grep { &can_edit_view($_) } &find("view", $conf); if ($view eq '' && @views || $view ne '' && @views > 1) { return &ui_buttons_row("move_zone.cgi", $text{'master_move'}, $text{'master_movedesc'}, - &ui_hidden("index", $index). + &ui_hidden("zone", $zonename). &ui_hidden("view", $view), &ui_select("newview", undef, [ map { [ $_->{'index'}, $_->{'value'} ] } @@ -2909,7 +2940,7 @@ if (!$access{'ro'} && $access{'apply'}) { # Apply this zone push(@rv, "{'index'}'>". + "zone=$zone->{'name'}'>". "$text{'links_apply'}"); } # Apply whole config diff --git a/bind8/cgi_args.pl b/bind8/cgi_args.pl index 2199182ac..bf6cd33ba 100755 --- a/bind8/cgi_args.pl +++ b/bind8/cgi_args.pl @@ -12,7 +12,7 @@ elsif ($cgi =~ /^edit_(master|slave|stub|forward|delegation|hint).cgi$/) { # Find a zone of this type my @allzones = grep { &can_edit_zone($_) } &list_zone_names(); my ($z) = grep { $_->{'type'} eq $1 } @allzones; - return $z ? 'index='.$z->{'index'}. + return $z ? 'zone='.$z->{'zone'}. ($z->{'view'} ? '&view='.$z->{'viewindex'} : '') : 'none'; } elsif ($cgi eq 'edit_view.cgi') { @@ -30,7 +30,7 @@ elsif ($cgi eq 'edit_text.cgi' || $cgi eq 'edit_soa.cgi' || my ($z) = grep { $_->{'type'} eq 'master' && &can_edit_zone($_) } &list_zone_names(); return 'none' if (!$z); - my $rv = 'index='.$z->{'index'}. + my $rv = 'zone='.$z->{'zone'}. ($z->{'view'} ? '&view='.$z->{'viewindex'} : ''); if ($cgi eq 'edit_recs.cgi' || $cgi eq 'edit_record.cgi') { $rv .= '&type=A'; @@ -52,7 +52,7 @@ elsif ($cgi eq 'view_text.cgi' || $cgi eq 'edit_soptions.cgi') { # Find a slave zone my ($z) = grep { $_->{'type'} eq 'slave' && &can_edit_zone($_) } &list_zone_names(); - return $z ? 'index='.$z->{'index'}. + return $z ? 'zone='.$z->{'zone'}. ($z->{'view'} ? '&view='.$z->{'viewindex'} : '') : 'none'; } return undef; diff --git a/bind8/check_zone.cgi b/bind8/check_zone.cgi index 5e605da43..896d2c85e 100755 --- a/bind8/check_zone.cgi +++ b/bind8/check_zone.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &ReadParse(); $access{'apply'} || &error($text{'check_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); &can_edit_zone($zone) || &error($text{'master_ecannot'}); $desc = &ip6int_to_net(&arpa_to_ip($dom)); @@ -27,6 +27,6 @@ else { print "",&text('check_allok', "$file"),"
\n"; } -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/convert_master.cgi b/bind8/convert_master.cgi index 9bc7123b7..b89b17f52 100755 --- a/bind8/convert_master.cgi +++ b/bind8/convert_master.cgi @@ -4,14 +4,13 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); -if ($in{'view'} ne '') { - $conf = $conf->[$in{'view'}]->{'members'}; - } -$zconf = $conf->[$in{'index'}]; &error_setup($text{'convert_err'}); -&lock_file(&make_chroot($zconf->{'file'})); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$zconf = &zone_to_config($zone); + $access{'slave'} || &error($text{'screate_ecannot1'}); +&lock_file(&make_chroot($zconf->{'file'})); # Change the type directive &save_directive($zconf, 'type', [ { 'name' => 'type', diff --git a/bind8/convert_slave.cgi b/bind8/convert_slave.cgi index 8ce992b57..bb28899ef 100755 --- a/bind8/convert_slave.cgi +++ b/bind8/convert_slave.cgi @@ -4,14 +4,9 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); -if ($in{'view'} ne '') { - $conf = $conf->[$in{'view'}]->{'members'}; - } -$zconf = $conf->[$in{'index'}]; &error_setup($text{'convert_err'}); -$access{'master'} || &error($text{'mcreate_ecannot'}); +$access{'master'} || &error($text{'mcreate_ecannot'}); $file = &find("file", $zconf->{'members'}); if (!$file) { &error($text{'convert_efile'}); diff --git a/bind8/create_delegation.cgi b/bind8/create_delegation.cgi index f212291b2..3aa9e7d9f 100755 --- a/bind8/create_delegation.cgi +++ b/bind8/create_delegation.cgi @@ -62,5 +62,5 @@ $dir = { 'name' => 'zone', $idx = &get_zone_index($in{'zone'}, $in{'view'}); &add_zone_access($in{'zone'}); -&redirect("edit_delegation.cgi?index=$idx&view=$in{'view'}"); +&redirect("edit_delegation.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/create_forward.cgi b/bind8/create_forward.cgi index 8a6dc78fa..223661ac8 100755 --- a/bind8/create_forward.cgi +++ b/bind8/create_forward.cgi @@ -73,5 +73,5 @@ $dir = { 'name' => 'zone', $idx = &get_zone_index($in{'zone'}, $in{'view'}); &add_zone_access($in{'zone'}); -&redirect("edit_forward.cgi?index=$idx&view=$in{'view'}"); +&redirect("edit_forward.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/create_master.cgi b/bind8/create_master.cgi index 39247da4b..81d1238e2 100755 --- a/bind8/create_master.cgi +++ b/bind8/create_master.cgi @@ -182,6 +182,6 @@ if (&have_dnssec_tools_support() && $in{'enable_dt'}) { &error($err) if ($err); } -&redirect("edit_master.cgi?index=$idx&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/create_slave.cgi b/bind8/create_slave.cgi index 7a46b92bc..3251662e0 100755 --- a/bind8/create_slave.cgi +++ b/bind8/create_slave.cgi @@ -135,5 +135,5 @@ if ($in{'onslave'} && $access{'remote'}) { } &redirect(($in{'type'} ? "edit_slave.cgi" : "edit_stub.cgi"). - "?index=$idx&view=$in{'view'}"); + "?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/delete_recs.cgi b/bind8/delete_recs.cgi index 2466da4c0..ee1a0bea2 100755 --- a/bind8/delete_recs.cgi +++ b/bind8/delete_recs.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &ReadParse(); &error_setup($text{'drecs_err'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'recs_ecannot'}); @@ -22,14 +22,14 @@ if (!$in{'confirm'} && $config{'confirm_rec'}) { print &ui_confirmation_form("delete_recs.cgi", &text('drecs_rusure', scalar(@d), $dom), - [ [ 'index', $in{'index'} ], + [ [ 'zone', $in{'zone'} ], [ 'view', $in{'view'} ], [ 'rev', $in{'rev'} ], map { [ 'd', $_ ] } @d ], [ [ 'confirm', $text{'drecs_ok'} ] ], ); - &ui_print_footer("edit_recs.cgi?index=$in{'index'}&view=$in{'view'}&type=$in{'type'}&sort=$in{'sort'}", $text{'recs_return'}); + &ui_print_footer("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=$in{'sort'}", $text{'recs_return'}); } else { # Delete them @@ -75,7 +75,7 @@ else { &unlock_all_files(); &webmin_log("delete", "recs", scalar(@d)); - &redirect("edit_recs.cgi?index=$in{'index'}&view=$in{'view'}&type=$in{'type'}&sort=$in{'sort'}"); + &redirect("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=$in{'sort'}"); } diff --git a/bind8/delete_zone.cgi b/bind8/delete_zone.cgi index 03e40e281..dcfba6f8e 100755 --- a/bind8/delete_zone.cgi +++ b/bind8/delete_zone.cgi @@ -4,24 +4,17 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); -$parent = &get_config_parent(); -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - $viewname = $view->{'values'}->[0]; - $parent = $view; - } -else { - $viewname = undef; - } -$zconf = $conf->[$in{'index'}]; + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +($zconf, $conf, $parent) = &zone_to_config($zone); &can_edit_zone($zconf, $view) || &error($text{'master_edelete'}); + $access{'ro'} && &error($text{'master_ero'}); $access{'delete'} || &error($text{'master_edeletecannot'}); -$rev = ($zconf->{'value'} =~ /in-addr\.arpa/i || $zconf->{'value'} =~ /\.$ipv6revzone/i); +$rev = ($zconf->{'value'} =~ /in-addr\.arpa/i || + $zconf->{'value'} =~ /\.$ipv6revzone/i); $type = &find("type", $zconf->{'members'})->{'value'}; if (!$in{'confirm'} && $config{'confirm_zone'}) { # Ask the user if he is sure .. @@ -42,7 +35,7 @@ if (!$in{'confirm'} && $config{'confirm_zone'}) { $type eq 'hint' ? $text{'delete_mesg2'} : $type eq 'master' ? &text('delete_mesg', $zdesc) : &text('delete_mesg3', $zdesc), - [ [ 'index', $in{'index'} ], + [ [ 'zone', $in{'zone'} ], [ 'view', $in{'view'} ] ], [ [ 'confirm', $text{'master_del'} ] ], ($type eq 'master' ? @@ -142,7 +135,7 @@ foreach $u (keys %wusers) { # Also delete from slave servers delete($ENV{'HTTP_REFERER'}); if ($in{'onslave'} && $access{'remote'}) { - @slaveerrs = &delete_on_slaves($zconf->{'value'}, undef, $viewname); + @slaveerrs = &delete_on_slaves($zone->{'name'}, undef, $zone->{'view'}); if (@slaveerrs) { &error(&text('delete_errslave', "
".join("
", map { "$_->[0]->{'host'} : $_->[1]" }
diff --git a/bind8/disable_zonedt.cgi b/bind8/disable_zonedt.cgi
index e27fad9c2..b4f60c50b 100755
--- a/bind8/disable_zonedt.cgi
+++ b/bind8/disable_zonedt.cgi
@@ -9,7 +9,7 @@ local $desc;
&error_setup($text{'dt_zone_err'});
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_on_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'master_ecannot'});
@@ -27,6 +27,6 @@ if (&have_dnssec_tools_support()) {
&webmin_log("zonekeyoff", undef, $dom);
}
-&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}",
+&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}",
$text{'master_return'});
diff --git a/bind8/disable_zonekey.cgi b/bind8/disable_zonekey.cgi
index b6e2e5a62..a48a441a6 100755
--- a/bind8/disable_zonekey.cgi
+++ b/bind8/disable_zonekey.cgi
@@ -4,7 +4,7 @@
require './bind8-lib.pl';
&error_setup($text{'zonekey_err'});
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'master_ecannot'});
@@ -25,5 +25,5 @@ foreach my $k (@keyfiles) {
&unlock_file(&make_chroot(&absolute_path($zone->{'file'})));
&webmin_log("zonekeyoff", undef, $dom);
-&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}");
+&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}");
diff --git a/bind8/edit_delegation.cgi b/bind8/edit_delegation.cgi
index d2f370e32..bed516a0f 100755
--- a/bind8/edit_delegation.cgi
+++ b/bind8/edit_delegation.cgi
@@ -4,18 +4,15 @@
require './bind8-lib.pl';
&ReadParse();
-if ($in{'zone'}) {
- $zone = &get_zone_name($in{'zone'}, $in{'view'} || 'any');
- $in{'index'} = $zone->{'index'};
- $in{'view'} = $zone->{'viewindex'};
- }
-else {
- $zone = &get_zone_name($in{'index'}, $in{'view'});
- }
-$dom = $zone->{'name'};
-&can_edit_zone($zone, $view) ||
- &error($text{'delegation_ecannot'});
+$in{'view'} = 'any' if (!defined($in{'view'}));
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
+$z = &zone_to_config($zone);
+$zconf = $z->{'members'};
+$dom = $zone->{'name'};
+&can_edit_zone($zone) ||
+ &error($text{'master_ecannot'});
+
$desc = &ip6int_to_net(&arpa_to_ip($dom));
&ui_print_header($desc, $text{'delegation_title'}, "",
undef, undef, undef, undef, &restart_links());
@@ -27,13 +24,13 @@ if (!$access{'ro'}) {
print &ui_buttons_start();
# Move to another view
- print &move_zone_button($bconf, $in{'view'}, $in{'index'});
+ print &move_zone_button($bconf, $zone->{'viewindex'}, $in{'zone'});
# Delete zone
if ($access{'delete'}) {
print &ui_buttons_row("delete_zone.cgi",
$text{'master_del'}, $text{'delegation_delmsg'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
}
diff --git a/bind8/edit_forward.cgi b/bind8/edit_forward.cgi
index e7cc073e2..8eda46e90 100755
--- a/bind8/edit_forward.cgi
+++ b/bind8/edit_forward.cgi
@@ -5,21 +5,14 @@
require './bind8-lib.pl';
&ReadParse();
-if ($in{'zone'}) {
- $zone = &get_zone_name($in{'zone'}, $in{'view'} || 'any');
- $in{'index'} = $zone->{'index'};
- $in{'view'} = $zone->{'viewindex'};
- }
-else {
- $zone = &get_zone_name($in{'index'}, $in{'view'});
- }
+$in{'view'} = 'any' if (!defined($in{'view'}));
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
+$z = &zone_to_config($zone);
+$zconf = $z->{'members'};
+$dom = $zone->{'name'};
+&can_edit_zone($zone) ||
+ &error($text{'master_ecannot'});
-$bconf = $conf = &get_config();
-if ($in{'view'} ne '') {
- $view = $conf->[$in{'view'}];
- $conf = $view->{'members'};
- }
-$zconf = $conf->[$in{'index'}]->{'members'};
$dom = $zone->{'name'};
&can_edit_zone($zone, $view) ||
&error($text{'fwd_ecannot'});
@@ -29,7 +22,7 @@ $desc = &ip6int_to_net(&arpa_to_ip($dom));
# Start of the form
print &ui_form_start("save_forward.cgi");
-print &ui_hidden("index", $in{'index'});
+print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("view", $in{'view'});
print &ui_table_start($text{'fwd_opts'}, "width=100%", 4);
@@ -55,13 +48,13 @@ else {
print &ui_buttons_start();
# Move to another view
- print &move_zone_button($bconf, $in{'view'}, $in{'index'});
+ print &move_zone_button($bconf, $zone->{'viewindex'}, $in{'zone'});
# Delete zone
if ($access{'delete'}) {
print &ui_buttons_row("delete_zone.cgi",
$text{'master_del'}, $text{'fwd_delmsg'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
}
diff --git a/bind8/edit_hint.cgi b/bind8/edit_hint.cgi
index aeabd688d..4da4b8dc1 100755
--- a/bind8/edit_hint.cgi
+++ b/bind8/edit_hint.cgi
@@ -4,7 +4,7 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'hint_ecannot'});
@@ -20,7 +20,7 @@ print &ui_buttons_start();
print &ui_buttons_row("refetch.cgi",
$text{'hint_refetch'},
$text{'hint_refetchdesc'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
# Delete button
@@ -28,7 +28,7 @@ print &ui_buttons_row(
"delete_zone.cgi",
$text{'hint_delete'},
$text{'hint_deletedesc'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
print &ui_buttons_end();
diff --git a/bind8/edit_master.cgi b/bind8/edit_master.cgi
index 883a52015..e09be4fd8 100755
--- a/bind8/edit_master.cgi
+++ b/bind8/edit_master.cgi
@@ -4,14 +4,8 @@
require './bind8-lib.pl';
&ReadParse();
-if ($in{'zone'}) {
- $zone = &get_zone_name($in{'zone'}, $in{'view'} || 'any');
- $in{'index'} = $zone->{'index'};
- $in{'view'} = $zone->{'viewindex'};
- }
-else {
- $zone = &get_zone_name($in{'index'}, $in{'view'});
- }
+$in{'view'} = 'any' if (!defined($in{'view'}));
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) || &error($text{'master_ecannot'});
$desc = &ip6int_to_net(&arpa_to_ip($dom));
@@ -57,7 +51,7 @@ if ($config{'show_list'}) {
else {
# display as icons
for($i=0; $i<@rcodes; $i++) {
- push(@rlinks, "edit_recs.cgi?index=$in{'index'}&".
+ push(@rlinks, "edit_recs.cgi?zone=$in{'zone'}&".
"view=$in{'view'}&type=$rcodes[$i]");
push(@rtitles, ($text{"type_$rcodes[$i]"} || $rcodes[$i]).
(defined(%rnum) ? " ($rnum{$rcodes[$i]})" : ""));
@@ -70,51 +64,51 @@ else {
# links to forms editing text, soa and zone options
if ($access{'file'}) {
# Manually edit zone
- push(@links, "edit_text.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "edit_text.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'master_manual'});
push(@images, "images/text.gif");
}
if ($access{'params'}) {
# SOA values
- push(@links, "edit_soa.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "edit_soa.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'master_soa'});
push(@images, "images/soa.gif");
}
if ($access{'opts'}) {
# Zone options in named.conf
- push(@links, "edit_options.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "edit_options.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'master_options'});
push(@images, "images/options.gif");
}
if ($access{'findfree'}) {
# Find free IPs
- push(@links, "find_free.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "find_free.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'findfree_desc'});
push(@images, "images/findfree.gif");
}
if ($access{'gen'}) {
# Generators
- push(@links, "list_gen.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "list_gen.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'gen_title'});
push(@images, "images/gen.gif");
}
if ($access{'whois'} && &has_command($config{'whois_cmd'}) &&
$dom !~ /in-addr\.arpa/i) {
# Whois lookup
- push(@links, "whois.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "whois.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'master_whois'});
push(@images, "images/whois.gif");
}
if ($access{'dnssec'} && &supports_dnssec()) {
if (&have_dnssec_tools_support()) {
# DNSSEC Automation
- push(@links, "edit_zonedt.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "edit_zonedt.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'dt_enable_title'});
push(@images, "images/dnssectools.gif");
}
# Zone key
- push(@links, "edit_zonekey.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "edit_zonekey.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'zonekey_title'});
push(@images, "images/zonekey.gif");
}
@@ -134,7 +128,7 @@ if (!$access{'ro'} && ($access{'delete'} || $apply)) {
print &ui_buttons_row(
"freeze_zone.cgi", $text{'master_freeze'},
$text{'master_freezemsg2'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'})
);
@@ -142,7 +136,7 @@ if (!$access{'ro'} && ($access{'delete'} || $apply)) {
print &ui_buttons_row(
"unfreeze_zone.cgi", $text{'master_unfreeze'},
$text{'master_unfreezemsg2'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'})
);
}
@@ -152,21 +146,21 @@ if (!$access{'ro'} && ($access{'delete'} || $apply)) {
print &ui_buttons_row(
"check_zone.cgi", $text{'master_checkzone'},
$text{'master_checkzonemsg'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'})
);
}
# Move zone button
$conf = &get_config();
- print &move_zone_button($conf, $in{'view'}, $in{'index'});
+ print &move_zone_button($conf, $zone->{'viewindex'}, $in{'zone'});
# Convert to slave zone
if ($access{'slave'}) {
print &ui_buttons_row("convert_master.cgi",
$text{'master_convert'},
$text{'master_convertdesc'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
}
@@ -178,7 +172,7 @@ if (!$access{'ro'} && ($access{'delete'} || $apply)) {
($dom !~ /in-addr\.arpa/i &&
$dom !~ /\.$ipv6revzone/i ? $text{'master_delrev'}
: ""),
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'})
);
}
@@ -198,7 +192,7 @@ if ($_[0]) {
], 100);
for(my $i=0; $_[$i]; $i++) {
local @cols = ( "".
+ "zone=$in{'zone'}&view=$in{'view'}&type=$_[$i]\">".
($text{"recs_$_[$i]"} || $_[$i])."" );
if (defined(%rnum)) {
push(@cols, $rnum{$_[$i]});
diff --git a/bind8/edit_options.cgi b/bind8/edit_options.cgi
index 0e84ff09e..2251f79b2 100755
--- a/bind8/edit_options.cgi
+++ b/bind8/edit_options.cgi
@@ -4,16 +4,14 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
-$bconf = $conf = &get_config();
-if ($in{'view'} ne '') {
- $view = $conf->[$in{'view'}];
- $conf = $view->{'members'};
- }
-$zconf = $conf->[$in{'index'}]->{'members'};
-$dom = $conf->[$in{'index'}]->{'value'};
-&can_edit_zone($conf->[$in{'index'}], $view) ||
+
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
+$z = &zone_to_config($zone);
+$zconf = $z->{'members'};
+$dom = $zone->{'name'};
+&can_edit_zone($zone) ||
&error($text{'master_ecannot'});
+
$access{'opts'} || &error($text{'master_eoptscannot'});
$desc = &ip6int_to_net(&arpa_to_ip($dom));
&ui_print_header($desc, $text{'master_opts'}, "",
@@ -21,7 +19,7 @@ $desc = &ip6int_to_net(&arpa_to_ip($dom));
# Start of form for editing zone options
print &ui_form_start("save_master.cgi", "post");
-print &ui_hidden("index", $in{'index'});
+print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("view", $in{'view'});
print &ui_table_start($text{'master_opts'}, "width=100%", 4);
@@ -41,6 +39,6 @@ print &address_input($text{'master_notify2'}, "also-notify", $zconf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
-&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}",
- $text{'master_return'});
+&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}",
+ $text{'master_return'});
diff --git a/bind8/edit_record.cgi b/bind8/edit_record.cgi
index d11c3bdd1..0aa93b864 100755
--- a/bind8/edit_record.cgi
+++ b/bind8/edit_record.cgi
@@ -4,7 +4,7 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'recs_ecannot'});
@@ -20,11 +20,11 @@ $desc = &text('edit_header', &ip6int_to_net(&arpa_to_ip($dom)));
&ui_print_header($desc, &text('edit_title', $text{"edit_".$rec->{'type'}} || $rec->{'type'}), "",
undef, undef, undef, undef, &restart_links($zone));
-&record_input($in{'index'}, $in{'view'}, $in{'type'}, $file,
+&record_input($in{'zone'}, $in{'view'}, $in{'type'}, $file,
$dom, $in{'num'}, $rec);
&ui_print_footer("", $text{'index_return'},
- "edit_$type.cgi?index=$in{'index'}&view=$in{'view'}",
+ "edit_$type.cgi?zone=$in{'zone'}&view=$in{'view'}",
$text{'recs_return'},
- "edit_recs.cgi?index=$in{'index'}&type=$in{'type'}",
+ "edit_recs.cgi?zone=$in{'zone'}&type=$in{'type'}",
$text{'edit_return'});
diff --git a/bind8/edit_recs.cgi b/bind8/edit_recs.cgi
index ce2841f43..af666199f 100755
--- a/bind8/edit_recs.cgi
+++ b/bind8/edit_recs.cgi
@@ -4,7 +4,7 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'recs_ecannot'});
@@ -20,7 +20,7 @@ $type = $zone->{'type'};
$file = $zone->{'file'};
$form = 0;
if (!$access{'ro'} && $type eq 'master' && $in{'type'} ne 'ALL') {
- &record_input($in{'index'}, $in{'view'}, $in{'type'}, $file, $dom,
+ &record_input($in{'zone'}, $in{'view'}, $in{'type'}, $file, $dom,
undef, undef, $in{'newname'}, $in{'newvalue'});
$form++;
$shown_create_form = 1;
@@ -29,7 +29,7 @@ if (!$access{'ro'} && $type eq 'master' && $in{'type'} ne 'ALL') {
if ($config{'largezones'}) {
# Show search form
print &ui_form_start("edit_recs.cgi");
- print &ui_hidden("index", $in{'index'}),"\n";
+ print &ui_hidden("zone", $in{'zone'}),"\n";
print &ui_hidden("view", $in{'view'}),"\n";
print &ui_hidden("type", $in{'type'}),"\n";
print "$text{'recs_find'}\n";
@@ -82,7 +82,7 @@ if (@recs) {
@links = ( );
if (!$access{'ro'} && $type eq 'master') {
print &ui_form_start("delete_recs.cgi", "post");
- print &ui_hidden("index", $in{'index'}),"\n";
+ print &ui_hidden("zone", $in{'zone'}),"\n";
print &ui_hidden("view", $in{'view'}),"\n";
print &ui_hidden("type", $in{'type'}),"\n";
print &ui_hidden("sort", $in{'sort'}),"\n";
@@ -122,7 +122,7 @@ elsif (!$shown_create_form) {
}
&ui_print_footer("", $text{'index_return'},
- "edit_$type.cgi?index=$in{'index'}&view=$in{'view'}",
+ "edit_$type.cgi?zone=$in{'zone'}&view=$in{'view'}",
$text{'recs_return'});
sub recs_table
@@ -136,18 +136,18 @@ if (!$access{'ro'} && $type eq 'master') {
push(@hcols, "");
push(@tds, "width=5");
}
-push(@hcols, "".($in{'type'} eq "PTR" ? $text{'recs_addr'} : $text{'recs_name'})."");
-push(@hcols, "$text{'recs_type'}") if ($in{'type'} eq "ALL");
+push(@hcols, "".($in{'type'} eq "PTR" ? $text{'recs_addr'} : $text{'recs_name'})."");
+push(@hcols, "$text{'recs_type'}") if ($in{'type'} eq "ALL");
push(@hcols, $text{'recs_ttl'});
@hmap = @{$hmap{$in{'type'}}};
foreach $h (@hmap) {
- push(@hcols, "$h");
+ push(@hcols, "$h");
}
if ($in{'type'} eq "ALL" || $is_extra{$in{'type'}}) {
push(@hcols, $text{'recs_vals'});
}
if ($config{'allow_comments'} && $in{'type'} ne "WKS") {
- push(@hcols, "$text{'recs_comment'}");
+ push(@hcols, "$text{'recs_comment'}");
}
$rv .= &ui_columns_start(\@hcols, 100);
@@ -170,8 +170,8 @@ for($i=0; $i<@_; $i++) {
$id = &record_id($r);
if (!$access{'ro'} && $type eq 'master') {
push(@cols,
- "{'num'}&".
+ "{'num'}&".
"type=$in{'type'}&sort=$in{'sort'}&view=$in{'view'}\">".
"$name");
}
diff --git a/bind8/edit_slave.cgi b/bind8/edit_slave.cgi
index 3ced542ba..c4828e219 100755
--- a/bind8/edit_slave.cgi
+++ b/bind8/edit_slave.cgi
@@ -4,17 +4,11 @@
require './bind8-lib.pl';
&ReadParse();
-if ($in{'zone'}) {
- $zone = &get_zone_name($in{'zone'}, 'any');
- $in{'index'} = $zone->{'index'};
- $in{'view'} = $zone->{'viewindex'};
- }
-else {
- $zone = &get_zone_name($in{'index'}, $in{'view'});
- }
+
+$in{'view'} = 'any' if (!defined($in{'view'}));
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
-&can_edit_zone($zone) ||
- &error($text{'slave_ecannot'});
+&can_edit_zone($zone) || &error($text{'master_ecannot'});
$desc = &ip6int_to_net(&arpa_to_ip($dom));
if ($zone->{'file'}) {
@@ -53,7 +47,7 @@ if ($zone->{'file'}) {
else {
# display as icons
for($i=0; $i<@rcodes; $i++) {
- push(@rlinks, "edit_recs.cgi?index=$in{'index'}".
+ push(@rlinks, "edit_recs.cgi?zone=$in{'zone'}".
"&view=$in{'view'}&type=$rcodes[$i]");
push(@rtitles, $text{"type_$rcodes[$i]"}.
" ($rnum{$rcodes[$i]})");
@@ -66,22 +60,22 @@ if ($zone->{'file'}) {
# Shut buttons for editing, options and whois
if ($access{'file'} && $zone->{'file'}) {
- push(@links, "view_text.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "view_text.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'slave_manual'});
push(@images, "images/text.gif");
}
if ($access{'opts'}) {
- push(@links, "edit_soptions.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "edit_soptions.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'master_options'});
push(@images, "images/options.gif");
}
if ($access{'whois'} && &has_command($config{'whois_cmd'}) &&
$dom !~ /in-addr\.arpa/i) {
- push(@links, "whois.cgi?index=$in{'index'}&view=$in{'view'}");
+ push(@links, "whois.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'master_whois'});
push(@images, "images/whois.gif");
}
-push(@links, "xfer.cgi?index=$in{'index'}&view=$in{'view'}");
+push(@links, "xfer.cgi?zone=$in{'zone'}&view=$in{'view'}");
push(@titles, $text{'slave_xfer'});
push(@images, "images/xfer.gif");
if (@links) {
@@ -96,14 +90,14 @@ if (!$access{'ro'} && ($access{'delete'} || $apply)) {
# Move to other view
$conf = &get_config();
- print &move_zone_button($conf, $in{'view'}, $in{'index'});
+ print &move_zone_button($conf, $zone->{'viewindex'}, $in{'zone'});
# Convert to master zone
if ($access{'master'} && $st[7]) {
print &ui_buttons_row("convert_slave.cgi",
$text{'slave_convert'},
$text{'slave_convertdesc'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
}
@@ -111,7 +105,7 @@ if (!$access{'ro'} && ($access{'delete'} || $apply)) {
if ($access{'delete'}) {
print &ui_buttons_row("delete_zone.cgi",
$text{'master_del'}, $text{'slave_delmsg'},
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("view", $in{'view'}));
}
@@ -130,7 +124,7 @@ if ($_[0]) {
], 100);
for(my $i=0; $_[$i]; $i++) {
local @cols = ( "".
+ "zone=$in{'zone'}&view=$in{'view'}&type=$_[$i]\">".
($text{"recs_$_[$i]"} || $_[$i])."",
$rnum{$_[$i]} );
$rv .= &ui_columns_row(\@cols);
diff --git a/bind8/edit_soa.cgi b/bind8/edit_soa.cgi
index ee939f85e..90e1dc511 100755
--- a/bind8/edit_soa.cgi
+++ b/bind8/edit_soa.cgi
@@ -4,7 +4,7 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'master_ecannot'});
@@ -24,7 +24,7 @@ $v = $soa->{'values'};
print &ui_form_start("save_soa.cgi", "post");
print &ui_hidden("num", $soa->{'num'});
print &ui_hidden("origin", $dom);
-print &ui_hidden("index", $in{'index'});
+print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("view", $in{'view'});
print &ui_table_start($text{'master_params'}, "width=100%", 4);
@@ -76,6 +76,6 @@ if (!$config{'updserial_on'}) {
print &ui_table_end();
print &ui_form_end($access{'ro'} ? [ ] : [ [ undef, $text{'save'} ] ]);
-&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}",
+&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}",
$text{'master_return'});
diff --git a/bind8/edit_soptions.cgi b/bind8/edit_soptions.cgi
index 840dd044e..34a4b63e4 100755
--- a/bind8/edit_soptions.cgi
+++ b/bind8/edit_soptions.cgi
@@ -4,17 +4,14 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
-$bconf = $conf = &get_config();
-if ($in{'view'} ne '') {
- $view = $conf->[$in{'view'}];
- $conf = $view->{'members'};
- }
-$zconf = $conf->[$in{'index'}]->{'members'};
-$file = &find_value("file", $zconf);
-$dom = $conf->[$in{'index'}]->{'value'};
-&can_edit_zone($conf->[$in{'index'}], $view) ||
- &error($text{'slave_ecannot'});
+
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
+$z = &zone_to_config($zone);
+$zconf = $z->{'members'};
+$dom = $zone->{'name'};
+&can_edit_zone($zone) ||
+ &error($text{'master_ecannot'});
+
$access{'opts'} || &error($text{'slave_ecannot'});
$desc = &ip6int_to_net(&arpa_to_ip($dom));
&ui_print_header($desc, $text{'master_opts'}, "",
@@ -22,10 +19,10 @@ $desc = &ip6int_to_net(&arpa_to_ip($dom));
# Start of the form
print &ui_form_start("save_slave.cgi", "post");
-print &ui_hidden("index", $in{'index'});
+print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("view", $in{'view'});
print &ui_hidden("slave_stub", $scriptname);
-print &ui_table_start($text{'slave_opts'}, "width=100%", 4);
+print &ui_table_start($text{'slave_opts'}, "width=100%", 2);
# Master addresses and port
print &address_port_input($text{'slave_masters'},
@@ -60,6 +57,6 @@ print &address_input($text{'slave_notify2'}, "also-notify", $zconf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
-&ui_print_footer("edit_slave.cgi?index=$in{'index'}&view=$in{'view'}",
+&ui_print_footer("edit_slave.cgi?zone=$in{'zone'}&view=$in{'view'}",
$text{'master_return'});
diff --git a/bind8/edit_text.cgi b/bind8/edit_text.cgi
index 7bafc81b0..c4a0769a8 100755
--- a/bind8/edit_text.cgi
+++ b/bind8/edit_text.cgi
@@ -4,7 +4,7 @@
require './bind8-lib.pl';
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
$file = &absolute_path($zone->{'file'});
$tv = $zone->{'type'};
&can_edit_zone($zone) ||
@@ -20,7 +20,7 @@ if (!$access{'ro'}) {
print &ui_form_start("save_text.cgi", "form-data");
print &ui_table_start(undef, "width=100%", 2);
-print &ui_hidden("index", $in{'index'});
+print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("view", $in{'view'});
print &ui_table_row(undef, &ui_textarea("text", $text, 20, 80,
undef, 0, "style='width:100%'"), 2);
@@ -30,4 +30,4 @@ 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").
- "?index=$in{'index'}&view=$in{'view'}", $text{'master_return'});
+ "?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'});
diff --git a/bind8/edit_zonedt.cgi b/bind8/edit_zonedt.cgi
index cf3c2a09c..ad1b3e599 100755
--- a/bind8/edit_zonedt.cgi
+++ b/bind8/edit_zonedt.cgi
@@ -9,7 +9,7 @@ local $desc;
local $rrr;
&ReadParse();
-$zone = &get_zone_name($in{'index'}, $in{'view'});
+$zone = &get_zone_name_on_error($in{'zone'}, $in{'view'});
$dom = $zone->{'name'};
&can_edit_zone($zone) ||
&error($text{'master_ecannot'});
@@ -80,7 +80,7 @@ if (&have_dnssec_tools_support()) {
$text{'dt_zone_rollerdrst'},
$text{'dt_zone_rollerdrstdesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("optype", "rollerdrst"));
print &ui_buttons_end();
print "
\n
\n";
@@ -94,13 +94,13 @@ if (&have_dnssec_tools_support()) {
$text{'dt_zone_zskroll'},
$text{'dt_zone_zskrolldesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("optype", "zskroll"));
print &ui_buttons_row("zone_dnssecmgt_dt.cgi",
$text{'dt_zone_kskroll'},
$text{'dt_zone_kskrolldesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("optype", "kskroll"));
print &ui_buttons_end();
print "
\n
\n";
@@ -114,7 +114,7 @@ if (&have_dnssec_tools_support()) {
$text{'dt_zone_ksknotify'},
$text{'dt_zone_ksknotifydesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("optype", "notify"));
print &ui_buttons_end();
print "
\n
\n";
@@ -146,7 +146,7 @@ if (&have_dnssec_tools_support()) {
$text{'dt_zone_resign'},
$text{'dt_zone_resigndesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}).
+ &ui_hidden("zone", $in{'zone'}).
&ui_hidden("optype", "resign"));
print &ui_buttons_end();
print "
\n
\n";
@@ -158,7 +158,7 @@ if (&have_dnssec_tools_support()) {
print &ui_buttons_row("disable_zonedt.cgi", $text{'dt_zone_disable'},
$text{'dt_zone_disabledesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}));
+ &ui_hidden("zone", $in{'zone'}));
print &ui_buttons_end();
print "
\n
\n";
print "
\n
\n";
@@ -180,13 +180,13 @@ if (&have_dnssec_tools_support()) {
print &ui_buttons_row("zone_dnssecmigrate_dt.cgi", $text{'dt_zone_migrate'},
$text{'dt_zone_migratedesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}));
+ &ui_hidden("zone", $in{'zone'}));
# Offer to remove existing keys
print &ui_buttons_row("disable_zonekey.cgi", $text{'zonekey_disable'},
$text{'zonekey_disabledesc'},
&ui_hidden("view", $in{'view'}).
- &ui_hidden("index", $in{'index'}));
+ &ui_hidden("zone", $in{'zone'}));
print &ui_buttons_end();
@@ -197,7 +197,7 @@ if (&have_dnssec_tools_support()) {
print $text{'dt_zone_desc'},"
\n"; print &ui_form_start("enable_zonedt.cgi", "post"); - print &ui_hidden("index", $in{'index'}); + print &ui_hidden("zone", $in{'zone'}); print &ui_hidden("view", $in{'view'}); print &ui_table_start($text{'dt_zone_header'}, undef, 2); @@ -215,5 +215,5 @@ if (&have_dnssec_tools_support()) { &unlock_file($rrfile); } -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/edit_zonekey.cgi b/bind8/edit_zonekey.cgi index 0e4184dcb..8e2aab66c 100755 --- a/bind8/edit_zonekey.cgi +++ b/bind8/edit_zonekey.cgi @@ -3,7 +3,7 @@ require './bind8-lib.pl'; &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -49,13 +49,13 @@ if ($keyrec) { print &ui_buttons_row("disable_zonekey.cgi", $text{'zonekey_disable'}, $text{'zonekey_disabledesc'}, &ui_hidden("view", $in{'view'}). - &ui_hidden("index", $in{'index'})); + &ui_hidden("zone", $in{'zone'})); # Offer to sign now print &ui_buttons_row("sign_zone.cgi", $text{'zonekey_sign'}, $text{'zonekey_signdesc'}, &ui_hidden("view", $in{'view'}). - &ui_hidden("index", $in{'index'})); + &ui_hidden("zone", $in{'zone'})); # Offer to re-generate now, for zones with a KSK if (@keys == 2) { @@ -63,7 +63,7 @@ if ($keyrec) { $text{'zonekey_resign'}, $text{'zonekey_resigndesc'}, &ui_hidden("view", $in{'view'}). - &ui_hidden("index", $in{'index'})); + &ui_hidden("zone", $in{'zone'})); } print &ui_buttons_end(); @@ -73,7 +73,7 @@ else { print $text{'zonekey_desc'},"
\n"; print &ui_form_start("enable_zonekey.cgi", "post"); - print &ui_hidden("index", $in{'index'}); + print &ui_hidden("zone", $in{'zone'}); print &ui_hidden("view", $in{'view'}); print &ui_table_start($text{'zonekey_header'}, undef, 2); @@ -98,5 +98,5 @@ else { print &ui_form_end([ [ undef, $text{'zonekey_enable'} ] ]); } -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/enable_zonedt.cgi b/bind8/enable_zonedt.cgi index c65f4cb1b..ed4637a76 100755 --- a/bind8/enable_zonedt.cgi +++ b/bind8/enable_zonedt.cgi @@ -9,7 +9,7 @@ local $desc; &error_setup($text{'dt_zone_err'}); &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_on_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -40,6 +40,6 @@ if (&have_dnssec_tools_support()) { &webmin_log("zonekeyon", undef, $dom); } -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/enable_zonekey.cgi b/bind8/enable_zonekey.cgi index 244def9d6..0965fa222 100755 --- a/bind8/enable_zonekey.cgi +++ b/bind8/enable_zonekey.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &error_setup($text{'zonekey_err'}); &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -41,6 +41,6 @@ else { &unlock_file(&make_chroot(&absolute_path($zone->{'file'}))); &webmin_log("zonekeyon", undef, $dom); -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/find_free.cgi b/bind8/find_free.cgi index 78aad1f73..f545edf12 100755 --- a/bind8/find_free.cgi +++ b/bind8/find_free.cgi @@ -5,21 +5,18 @@ require './bind8-lib.pl'; &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); -$conf = &get_config(); -if ($in{'view'} ne '') { - $conf = $conf->[$in{'view'}]->{'members'}; - } -$zconf = $conf->[$in{'index'}]->{'members'}; -$type = &find("type", $zconf)->{'value'}; -$file = &find("file", $zconf)->{'value'}; -$dom = $conf->[$in{'index'}]->{'value'}; + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$dom = $zone->{'name'}; +$file = $zone->{'file'}; +$type = $zone->{'type'}; + if (!$access{'findfree'}) {&error($text{'findfree_nofind'})}; $desc = &text('findfree_header', &arpa_to_ip($dom)); &ui_print_header($desc, &text('findfree_title'), "", undef, undef, undef, undef, &restart_links($zone)); -&find_ips($in{'index'}, $in{'from'}, $in{'to'}, $in{'cf'}); +&find_ips($in{'zone'}, $in{'from'}, $in{'to'}, $in{'cf'}); if ($in{'from'} && $in{'to'}) { # Do the search @@ -75,7 +72,7 @@ if ($in{'from'} && $in{'to'}) { } # if(@recs) } # if(@in >= 3) -&ui_print_footer("edit_$type.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_$type.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'recs_return'}); # build_iprange(fromIP, toIP) @@ -121,12 +118,12 @@ for ($byte0=$from[0]; $byte0<=$to[0]; $byte0++) { return %frecs; } # sub build_iprange -# find_ips (zoneindex, from_ip, to_ip, consider_freeXX_names) +# find_ips (zonename, from_ip, to_ip, consider_freeXX_names) # Display a form for searching for free IP nos sub find_ips { print &ui_form_start("find_free.cgi"); -print &ui_hidden("index", $_[0]); +print &ui_hidden("zone", $_[0]); print &ui_hidden("view", $in{'view'}); print &ui_table_start($text{'findfree_sopt'}, undef, 2); @@ -150,7 +147,7 @@ print &ui_form_end([ [ undef, $text{'findfree_search'} ] ]); sub frecs_table { print &ui_grid_table( - [ map { "{'ip'}'>$_->{'ip'}" } @_ ], 4, 100, [ "width=25%", "width=25%", "width=25%", "width=25%" ]); } diff --git a/bind8/freeze_zone.cgi b/bind8/freeze_zone.cgi index 2977b7079..4e95683c3 100755 --- a/bind8/freeze_zone.cgi +++ b/bind8/freeze_zone.cgi @@ -6,7 +6,7 @@ require './bind8-lib.pl'; &ReadParse(); $access{'ro'} && &error($text{'restart_ecannot'}); $access{'apply'} || &error($text{'restart_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); if ($zone->{'view'}) { # Reload a zone in a view $dom = $zone->{'name'}; @@ -27,5 +27,5 @@ if ($? || $out =~ /failed|not found|error/i) { $tv = $zone->{'type'}; &redirect(($tv eq "master" ? "edit_master.cgi" : $tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi"). - "?index=$in{'index'}&view=$in{'view'}"); + "?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/index.cgi b/bind8/index.cgi index 2ac2e0f75..835ec99ff 100755 --- a/bind8/index.cgi +++ b/bind8/index.cgi @@ -167,13 +167,13 @@ elsif (@zones && (!@views || !$config{'by_view'})) { push(@ztitles, $zn." ". &text('index_view', "$z->{'view'}")); push(@zdels, &can_edit_zone($z, $vw) ? - $z->{'index'}." ".$z->{'viewindex'} : undef); + $z->{'name'}." ".$z->{'viewindex'} : undef); } else { push(@zlinks, "edit_$t.cgi?zone=$z->{'name'}"); push(@ztitles, $zn); push(@zdels, &can_edit_zone($z) ? - $z->{'index'} : undef); + $z->{'name'} : undef); } push(@zsort, $t eq 'hint' ? undef : $ztitles[$#ztitles]); push(@zicons, "images/$t.gif"); @@ -235,18 +235,18 @@ elsif (@zones && (!@views || !$config{'by_view'})) { $mid = int((@zlinks+1)/2); @grid = ( ); if (&have_dnssec_tools_support()) { - push(@grid, &zones_table([ @zlinks[0 .. $mid-1] ], - [ @ztitles[0 .. $mid-1] ], - [ @ztypes[0 .. $mid-1] ], - [ @zdels[0 .. $mid-1] ], - [ @zstatus[0 .. $mid-1] ])); - } else { - push(@grid, &zones_table([ @zlinks[0 .. $mid-1] ], - [ @ztitles[0 .. $mid-1] ], - [ @ztypes[0 .. $mid-1] ], - [ @zdels[0 .. $mid-1] ])); - - } + push(@grid, &zones_table([ @zlinks[0 .. $mid-1] ], + [ @ztitles[0 .. $mid-1] ], + [ @ztypes[0 .. $mid-1] ], + [ @zdels[0 .. $mid-1] ], + [ @zstatus[0 .. $mid-1] ])); + } + else { + push(@grid, &zones_table([ @zlinks[0 .. $mid-1] ], + [ @ztitles[0 .. $mid-1] ], + [ @ztypes[0 .. $mid-1] ], + [ @zdels[0 .. $mid-1] ])); + } if ($mid < @zlinks) { if (&have_dnssec_tools_support()) { push(@grid, &zones_table([ @zlinks[$mid .. $#zlinks] ], diff --git a/bind8/lang/en b/bind8/lang/en index 564a2fe6d..7e1d0da97 100644 --- a/bind8/lang/en +++ b/bind8/lang/en @@ -63,6 +63,9 @@ index_bind=BIND master_title=Edit Master Zone master_ecannot=You are not allowed to edit this zone +master_egone=Zone $1 does not exist in any view +master_egone2=Zone $1 does not exist! +master_egone3=Zone $1 in view $2 does not exist! master_eviewcannot=You are not allowed to create a zone in that view master_manual=Edit Records File master_soa=Edit Zone Parameters diff --git a/bind8/list_gen.cgi b/bind8/list_gen.cgi index 70ea372a5..32f2a9456 100755 --- a/bind8/list_gen.cgi +++ b/bind8/list_gen.cgi @@ -5,10 +5,11 @@ require './bind8-lib.pl'; &ReadParse(); $access{'gen'} || &error($text{'gen_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; -&can_edit_zone($zone) || - &error($text{'recs_ecannot'}); +&can_edit_zone($zone) || &error($text{'master_ecannot'}); + $desc = &text('recs_header', &ip6int_to_net(&arpa_to_ip($dom))); &ui_print_header($desc, $text{'gen_title'}, "", undef, undef, undef, undef, &restart_links($zone)); @@ -16,7 +17,7 @@ $desc = &text('recs_header', &ip6int_to_net(&arpa_to_ip($dom))); @gens = grep { $_->{'generate'} } &read_zone_file($zone->{'file'}, $dom); print "$text{'gen_desc'}
\n"; print &ui_form_start("save_gen.cgi", "post"); -print &ui_hidden("index", $in{'index'}); +print &ui_hidden("zone", $in{'zone'}); print &ui_hidden("view", $in{'view'}); print &ui_columns_start([ $text{'gen_type'}, $text{'gen_range'}, @@ -52,6 +53,6 @@ if (@gens) { } print &ui_form_end(\@buts); -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/mass_delete.cgi b/bind8/mass_delete.cgi index 1e7871d03..1c2da2f96 100755 --- a/bind8/mass_delete.cgi +++ b/bind8/mass_delete.cgi @@ -24,13 +24,14 @@ elsif ($in{'rdelete'}) { # Get the zones foreach $d (split(/\0/, $in{'d'})) { - ($idx, $viewidx) = split(/\s+/, $d); - if ($viewidx ne '') { - $view = $conf->[$viewidx]; - $zconf = $view->{'members'}->[$idx]; + ($zonename, $viewidx) = split(/\s+/, $d); + $zone = &get_zone_name_or_error($zonename, $viewidx); + if ($zone->{'viewindex'} ne '') { + $view = $conf->[$zone->{'viewindex'}]; + $zconf = $view->{'members'}->[$zone->{'index'}]; } else { - $zconf = $conf->[$idx]; + $zconf = $conf->[$zone->{'index'}]; } &can_edit_zone($zconf, $view) || &error($text{'master_edelete'}); diff --git a/bind8/mass_rcreate.cgi b/bind8/mass_rcreate.cgi index d1574315e..df6e34cf4 100755 --- a/bind8/mass_rcreate.cgi +++ b/bind8/mass_rcreate.cgi @@ -3,13 +3,12 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); &error_setup($text{'rmass_err'}); # Get the zones foreach $d (split(/\0/, $in{'d'})) { - ($idx, $viewidx) = split(/\s+/, $d); - $zone = &get_zone_name($idx, $viewidx); + ($zonename, $viewidx) = split(/\s+/, $d); + $zone = &get_zone_name_or_error($zonename, $viewidx); $zone || &error($text{'umass_egone'}); &can_edit_zone($zone) || &error($text{'master_edelete'}); diff --git a/bind8/mass_rdelete.cgi b/bind8/mass_rdelete.cgi index 3c89ad122..8a00f494e 100755 --- a/bind8/mass_rdelete.cgi +++ b/bind8/mass_rdelete.cgi @@ -3,13 +3,12 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); &error_setup($text{'umass_err'}); # Get the zones foreach $d (split(/\0/, $in{'d'})) { - ($idx, $viewidx) = split(/\s+/, $d); - $zone = &get_zone_name($idx, $viewidx); + ($zonename, $viewidx) = split(/\s+/, $d); + $zone = &get_zone_name_or_error($zonename, $viewidx); $zone || &error($text{'umass_egone'}); &can_edit_zone($zone) || &error($text{'master_edelete'}); diff --git a/bind8/mass_update.cgi b/bind8/mass_update.cgi index a1127b690..bd91af2a8 100755 --- a/bind8/mass_update.cgi +++ b/bind8/mass_update.cgi @@ -3,13 +3,12 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); &error_setup($text{'umass_err'}); # Get the zones foreach $d (split(/\0/, $in{'d'})) { - ($idx, $viewidx) = split(/\s+/, $d); - $zone = &get_zone_name($idx, $viewidx); + ($zonename, $viewidx) = split(/\s+/, $d); + $zone = &get_zone_name_or_error($zonename, $viewidx); $zone || &error($text{'umass_egone'}); &can_edit_zone($zone) || &error($text{'master_edelete'}); diff --git a/bind8/move_zone.cgi b/bind8/move_zone.cgi index 8dc8da9b3..45fcc3111 100755 --- a/bind8/move_zone.cgi +++ b/bind8/move_zone.cgi @@ -4,30 +4,38 @@ require './bind8-lib.pl'; &ReadParse(); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$z = &zone_to_config($zone); +$zconf = $z->{'members'}; +$dom = $zone->{'name'}; +&can_edit_zone($zone) || + &error($text{'master_ecannot'}); + +# Get the object for the new view $pconf = &get_config_parent(); $conf = $pconf->{'members'}; $nconf = $conf->[$in{'newview'}]; -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - } -$zconf = $conf->[$in{'index'}]; -&can_edit_zone($zconf, $view) || &error($text{'master_ecannot'}); -$in{'view'} ne $in{'newview'} || &error($text{'master_emove'}); + +# If the zone is in a view currently, get it too +$oldpconf = $zone->{'viewindex'} ? $conf->[$zone->{'viewindex'}] : $pconf; + +$in{'view'} eq $in{'newview'} && &error($text{'master_emove'}); &can_edit_view($nconf) || &error($text{'master_eviewcannot'}); -# Delete from the view -&lock_file(&make_chroot($zconf->{'file'})); -&save_directive($pconf, [ $zconf ], [ ], 0); +# Delete from the old view (or top level) +&lock_file(&make_chroot($z->{'file'})); +&save_directive($oldpconf, [ $z ], [ ], 0); &flush_file_lines(); -&unlock_file(&make_chroot($zconf->{'file'})); +&unlock_file(&make_chroot($z->{'file'})); # Create in new view +delete($z->{'file'}); # May not be valid anymore after move &lock_file(&make_chroot($nconf->{'file'})); -&save_directive($nconf, undef, [ $zconf ], 1); +&save_directive($nconf, undef, [ $z ], 1); &flush_file_lines(); &unlock_file(&make_chroot($nconf->{'file'})); -&webmin_log("move", undef, $zconf->{'value'}, \%in); +&webmin_log("move", undef, $dom, \%in); &redirect(""); diff --git a/bind8/refetch.cgi b/bind8/refetch.cgi index cfe105343..946839da7 100755 --- a/bind8/refetch.cgi +++ b/bind8/refetch.cgi @@ -6,7 +6,7 @@ require './bind8-lib.pl'; &ReadParse(); # Work out the filename -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); &can_edit_zone($zone, $view) || &error($text{'hint_ecannot'}); $file = $zone->{'file'}; diff --git a/bind8/resign_zone.cgi b/bind8/resign_zone.cgi index 13ec27ab5..9449b8b81 100755 --- a/bind8/resign_zone.cgi +++ b/bind8/resign_zone.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &error_setup($text{'resign_err'}); &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -17,5 +17,5 @@ $err = &resign_dnssec_key($zone); # Return to master page &webmin_log("resign", undef, $dom); -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/restart_zone.cgi b/bind8/restart_zone.cgi index 06e9fd67b..c24acc9c9 100755 --- a/bind8/restart_zone.cgi +++ b/bind8/restart_zone.cgi @@ -6,7 +6,7 @@ require './bind8-lib.pl'; &ReadParse(); $access{'ro'} && &error($text{'restart_ecannot'}); $access{'apply'} || &error($text{'restart_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); &can_edit_zone($zone) || &error($text{'restart_ecannot'}); $err = &restart_zone($zone->{'name'}, $zone->{'view'}); &error($err) if ($err); @@ -19,6 +19,6 @@ if ($in{'return'}) { else { &redirect(($tv eq "master" ? "edit_master.cgi" : $tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi"). - "?index=$in{'index'}&view=$in{'view'}"); + "?zone=$in{'zone'}&view=$in{'view'}"); } diff --git a/bind8/save_delegation.cgi b/bind8/save_delegation.cgi deleted file mode 100755 index 7e7b744bf..000000000 --- a/bind8/save_delegation.cgi +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/local/bin/perl -# save_delegation.cgi -# Save changes to delegation zone options in named.conf - -require './bind8-lib.pl'; -&ReadParse(); -$conf = &get_config(); -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - $indent = 2; - } -else { - $indent = 1; - } -$zconf = $conf->[$in{'index'}]; -&lock_file(&make_chroot($zconf->{'file'})); -&error_setup($text{'delegation_err'}); -&can_edit_zone($zconf, $view) || - &error($text{'delegation_ecannot'}); -$access{'ro'} && &error($text{'master_ero'}); - -&flush_file_lines(); -&unlock_file(&make_chroot($zconf->{'file'})); -&webmin_log("opts", undef, $zconf->{'value'}, \%in); -&redirect(""); - diff --git a/bind8/save_forward.cgi b/bind8/save_forward.cgi index 7b1ee94f5..81f93d84d 100755 --- a/bind8/save_forward.cgi +++ b/bind8/save_forward.cgi @@ -4,27 +4,24 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - $indent = 2; - } -else { - $indent = 1; - } -$zconf = $conf->[$in{'index'}]; -&lock_file(&make_chroot($zconf->{'file'})); &error_setup($text{'fwd_err'}); -&can_edit_zone($zconf, $view) || - &error($text{'fwd_ecannot'}); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$z = &zone_to_config($zone); +$zconf = $z->{'members'}; +$dom = $zone->{'name'}; +&can_edit_zone($zone) || + &error($text{'master_ecannot'}); +$indent = $zone->{'view'} ? 2 : 1; + +&lock_file(&make_chroot($z->{'file'})); $access{'ro'} && &error($text{'master_ero'}); -&save_forwarders("forwarders", $zconf, $indent); -&save_choice("check-names", $zconf, $indent); -&save_choice("forward", $zconf, $indent); +&save_forwarders("forwarders", $z, $indent); +&save_choice("check-names", $z, $indent); +&save_choice("forward", $z, $indent); &flush_file_lines(); -&unlock_file(&make_chroot($zconf->{'file'})); -&webmin_log("opts", undef, $zconf->{'value'}, \%in); +&unlock_file(&make_chroot($z->{'file'})); +&webmin_log("opts", undef, $dom, \%in); &redirect(""); diff --git a/bind8/save_gen.cgi b/bind8/save_gen.cgi index 45399255e..795fbe3cf 100755 --- a/bind8/save_gen.cgi +++ b/bind8/save_gen.cgi @@ -5,10 +5,11 @@ require './bind8-lib.pl'; &ReadParse(); $access{'gen'} || &error($text{'gen_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; -&can_edit_zone($zone) || - &error($text{'recs_ecannot'}); +&can_edit_zone($zone) || &error($text{'master_ecannot'}); + $file = $zone->{'file'}; @recs = &read_zone_file($file, $dom); @gens = grep { $_->{'generate'} } @recs; @@ -54,7 +55,7 @@ if ($in{'show'}) { } print &ui_columns_end(); - &ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", + &ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); exit; } @@ -104,5 +105,5 @@ for($i=0; defined($in{"type_$i"}); $i++) { } &bump_soa_record($file, \@recs); &sign_dnssec_zone_if_key($zone, \@recs); -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/save_master.cgi b/bind8/save_master.cgi index e43751699..483ec6a8e 100755 --- a/bind8/save_master.cgi +++ b/bind8/save_master.cgi @@ -4,31 +4,28 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - $indent = 2; - } -else { - $indent = 1; - } -$zconf = $conf->[$in{'index'}]; -&lock_file(&make_chroot($zconf->{'file'})); &error_setup($text{'master_err'}); -&can_edit_zone($zconf, $view) || + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$z = &zone_to_config($zone); +$zconf = $z->{'members'}; +$dom = $zone->{'name'}; +&can_edit_zone($zone) || &error($text{'master_ecannot'}); +$indent = $zone->{'view'} ? 2 : 1; + $access{'ro'} && &error($text{'master_ero'}); $access{'opts'} || &error($text{'master_eoptscannot'}); +&lock_file(&make_chroot($z->{'file'})); -&save_choice("check-names", $zconf, $indent); -&save_choice("notify", $zconf, $indent); -&save_address("allow-update", $zconf, $indent); -&save_address("allow-transfer", $zconf, $indent); -&save_address("allow-query", $zconf, $indent); -&save_address("also-notify", $zconf, $indent); +&save_choice("check-names", $z, $indent); +&save_choice("notify", $z, $indent); +&save_address("allow-update", $z, $indent); +&save_address("allow-transfer", $z, $indent); +&save_address("allow-query", $z, $indent); +&save_address("also-notify", $z, $indent); &flush_file_lines(); -&unlock_file(&make_chroot($zconf->{'file'})); -&webmin_log("opts", undef, $zconf->{'value'}, \%in); -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&unlock_file(&make_chroot($z->{'file'})); +&webmin_log("opts", undef, $dom, \%in); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/save_record.cgi b/bind8/save_record.cgi index 9d7b321b8..93ec7dc3d 100755 --- a/bind8/save_record.cgi +++ b/bind8/save_record.cgi @@ -5,7 +5,7 @@ require './bind8-lib.pl'; &ReadParse(); &error_setup($text{'edit_err'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; @zl = &list_zone_names(); $reverse = ($in{'origin'} =~ /\.in-addr\.arpa/i || @@ -45,7 +45,7 @@ if ($in{'delete'}) { [ [ 'confirm', $text{'edit_dok'} ] ], ); - &ui_print_footer("edit_recs.cgi?index=$in{'index'}&view=$in{'view'}&type=$in{'redirtype'}&sort=$in{'sort'}", $text{'recs_return'}); + &ui_print_footer("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'redirtype'}&sort=$in{'sort'}", $text{'recs_return'}); } else { # Delete the record @@ -90,7 +90,7 @@ if ($in{'delete'}) { &sign_dnssec_zone_if_key($ofwdconf, \@ofrecs); } - &redirect("edit_recs.cgi?index=$in{'index'}&view=$in{'view'}&type=$in{'redirtype'}&sort=$in{'sort'}"); + &redirect("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'redirtype'}&sort=$in{'sort'}"); &unlock_all_files(); &webmin_log('delete', 'record', $in{'origin'}, $r); } @@ -543,7 +543,7 @@ else { &unlock_all_files(); $r->{'newvalues'} = $vals; &webmin_log($in{'new'} ? 'create' : 'modify', 'record', $in{'origin'}, $r); -&redirect("edit_recs.cgi?index=$in{'index'}&view=$in{'view'}&". +&redirect("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&". "type=$in{'redirtype'}&sort=$in{'sort'}"); # valname(name) diff --git a/bind8/save_slave.cgi b/bind8/save_slave.cgi index c6b9f0095..70d1273e1 100755 --- a/bind8/save_slave.cgi +++ b/bind8/save_slave.cgi @@ -4,36 +4,33 @@ require './bind8-lib.pl'; &ReadParse(); -$conf = &get_config(); -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - $indent = 2; - } -else { - $indent = 1; - } -$zconf = $conf->[$in{'index'}]; -&lock_file(&make_chroot($zconf->{'file'})); &error_setup($text{'slave_err'}); -&can_edit_zone($zconf, $view) || - &error($text{'slave_ecannot'}); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$z = &zone_to_config($zone); +$zconf = $z->{'members'}; +$dom = $zone->{'name'}; +&can_edit_zone($zone) || + &error($text{'master_ecannot'}); +$indent = $zone->{'view'} ? 2 : 1; + $access{'ro'} && &error($text{'master_ero'}); $access{'opts'} || &error($text{'master_eoptscannot'}); +&lock_file(&make_chroot($z->{'file'})); -&save_port_address("masters", "port", $zconf, $indent); -&save_opt("max-transfer-time-in", \&mtti_check, $zconf, $indent); -&save_opt("file", \&file_check, $zconf, $indent); -&save_choice("check-names", $zconf, $indent); -&save_choice("notify", $zconf, $indent); -&save_addr_match("allow-update", $zconf, $indent); -&save_addr_match("allow-transfer", $zconf, $indent); -&save_addr_match("allow-query", $zconf, $indent); -&save_address("also-notify", $zconf, $indent); +&save_port_address("masters", "port", $z, $indent); +&save_opt("max-transfer-time-in", \&mtti_check, $z, $indent); +&save_opt("file", \&file_check, $z, $indent); +&save_choice("check-names", $z, $indent); +&save_choice("notify", $z, $indent); +&save_addr_match("allow-update", $z, $indent); +&save_addr_match("allow-transfer", $z, $indent); +&save_addr_match("allow-query", $z, $indent); +&save_address("also-notify", $z, $indent); &flush_file_lines(); -&unlock_file(&make_chroot($zconf->{'file'})); -&webmin_log("opts", undef, $zconf->{'value'}, \%in); -&redirect("edit_slave.cgi?index=$in{'index'}&view=$in{'view'}"); +&unlock_file(&make_chroot($z->{'file'})); +&webmin_log("opts", undef, $dom, \%in); +&redirect("edit_slave.cgi?zone=$in{'zone'}&view=$in{'view'}"); sub mtti_check { diff --git a/bind8/save_soa.cgi b/bind8/save_soa.cgi index 65761efe9..c30695cb4 100755 --- a/bind8/save_soa.cgi +++ b/bind8/save_soa.cgi @@ -5,7 +5,7 @@ require './bind8-lib.pl'; &ReadParse(); &error_setup($text{'master_err2'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -74,5 +74,5 @@ elsif ($defttl && $in{'defttl_def'}) { &unlock_file(&make_chroot($file)); &webmin_log("soa", undef, $in{'origin'}, \%in); -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/save_text.cgi b/bind8/save_text.cgi index 605eaf0d0..f10e45cd4 100755 --- a/bind8/save_text.cgi +++ b/bind8/save_text.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &ReadParseMime(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $file = &absolute_path($zone->{'file'}); $tv = $zone->{'type'}; &can_edit_zone($zone) || @@ -32,5 +32,5 @@ if ($in{'soa'}) { &unlock_file(&make_chroot($file)); &webmin_log("text", undef, $zone->{'name'}, { 'file' => $file }); -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/sign_zone.cgi b/bind8/sign_zone.cgi index c00e3f916..c1300f0e0 100755 --- a/bind8/sign_zone.cgi +++ b/bind8/sign_zone.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &error_setup($text{'sign_err'}); &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -17,5 +17,5 @@ $err = &sign_dnssec_zone($zone, 1); # Return to master page &webmin_log("sign", undef, $dom); -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/unfreeze_zone.cgi b/bind8/unfreeze_zone.cgi index 41e70c9a5..6635f3473 100755 --- a/bind8/unfreeze_zone.cgi +++ b/bind8/unfreeze_zone.cgi @@ -6,7 +6,7 @@ require './bind8-lib.pl'; &ReadParse(); $access{'ro'} && &error($text{'restart_ecannot'}); $access{'apply'} || &error($text{'restart_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); if ($zone->{'view'}) { # Reload a zone in a view $dom = $zone->{'name'}; @@ -27,5 +27,5 @@ if ($? || $out =~ /failed|not found|error/i) { $tv = $zone->{'type'}; &redirect(($tv eq "master" ? "edit_master.cgi" : $tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi"). - "?index=$in{'index'}&view=$in{'view'}"); + "?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/view_text.cgi b/bind8/view_text.cgi index 94816f438..1c0756e15 100755 --- a/bind8/view_text.cgi +++ b/bind8/view_text.cgi @@ -4,7 +4,7 @@ require './bind8-lib.pl'; &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $file = &absolute_path($zone->{'file'}); $tv = $zone->{'type'}; &can_edit_zone($zone) || @@ -27,4 +27,4 @@ else { &ui_print_footer(($tv eq "master" ? "edit_master.cgi" : $tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi"). - "?index=$in{'index'}&view=$in{'view'}", $text{'master_return'}); + "?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/whois.cgi b/bind8/whois.cgi index 880a770c8..879560ae0 100755 --- a/bind8/whois.cgi +++ b/bind8/whois.cgi @@ -5,12 +5,13 @@ require './bind8-lib.pl'; &ReadParse(); $access{'whois'} || &error($text{'whois_ecannot'}); -$zone = &get_zone_name($in{'index'}, $in{'view'}); + +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; +&can_edit_zone($zone) || &error($text{'master_ecannot'}); + $tv = $zone->{'type'}; $dom =~ s/\.$//; -&can_edit_zone($zone) || - &error($text{'master_ecannot'}); $desc = &ip6int_to_net(&arpa_to_ip($dom)); &ui_print_header($desc, $text{'whois_title'}, "", undef, undef, undef, undef, &restart_links($zone)); @@ -50,5 +51,5 @@ print &ui_table_end(); &ui_print_footer(($tv eq "master" ? "edit_master.cgi" : $tv eq "forward" ? "edit_forward.cgi" : "edit_slave.cgi"). - "?index=$in{'index'}&view=$in{'view'}", $text{'master_return'}); + "?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/xfer.cgi b/bind8/xfer.cgi index d08e960da..2da5a3542 100755 --- a/bind8/xfer.cgi +++ b/bind8/xfer.cgi @@ -3,25 +3,18 @@ require './bind8-lib.pl'; &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_or_error($in{'zone'}, $in{'view'}); +$z = &zone_to_config($zone); +$zconf = $z->{'members'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); -# Get config object -$bconf = $conf = &get_config(); -if ($in{'view'} ne '') { - $view = $conf->[$in{'view'}]; - $conf = $view->{'members'}; - } -$zconf = $conf->[$in{'index'}]->{'members'}; -$file = &find_value("file", $zconf); - $desc = &ip6int_to_net(&arpa_to_ip($zone->{'name'})); &ui_print_header($desc, $text{'xfer_title'}, "", undef, undef, undef, undef, &restart_links($zone)); # Get transfer source IP -$options = &find("options", $bconf); +$options = &find("options", $zconf); $src = &find("transfer-source", $options->{'members'}); # Get master IPs @@ -54,5 +47,5 @@ if (-r $temp) { } &unlink_file($temp); -&ui_print_footer("edit_slave.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_slave.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'}); diff --git a/bind8/zone_dnssecmgt_dt.cgi b/bind8/zone_dnssecmgt_dt.cgi index 8a9bea5b6..df74c72ca 100755 --- a/bind8/zone_dnssecmgt_dt.cgi +++ b/bind8/zone_dnssecmgt_dt.cgi @@ -9,7 +9,7 @@ local $err; &error_setup($text{'dt_zone_err'}); &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_on_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -44,5 +44,5 @@ if (&have_dnssec_tools_support()) { } # Return to master page -&redirect("edit_master.cgi?index=$in{'index'}&view=$in{'view'}"); +&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}"); diff --git a/bind8/zone_dnssecmigrate_dt.cgi b/bind8/zone_dnssecmigrate_dt.cgi index cc0f31c75..393e77182 100755 --- a/bind8/zone_dnssecmigrate_dt.cgi +++ b/bind8/zone_dnssecmigrate_dt.cgi @@ -10,7 +10,7 @@ local $err; &error_setup($text{'dt_zone_err'}); &ReadParse(); -$zone = &get_zone_name($in{'index'}, $in{'view'}); +$zone = &get_zone_name_on_error($in{'zone'}, $in{'view'}); $dom = $zone->{'name'}; &can_edit_zone($zone) || &error($text{'master_ecannot'}); @@ -75,5 +75,5 @@ if (&have_dnssec_tools_support()) { &webmin_log("migrate", undef, $dom); } -&ui_print_footer("edit_master.cgi?index=$in{'index'}&view=$in{'view'}", +&ui_print_footer("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}", $text{'master_return'});