mirror of
https://github.com/webmin/webmin.git
synced 2026-05-04 22:30:33 +01:00
Added CGI args parser
This commit is contained in:
59
bind8/cgi_args.pl
Normal file
59
bind8/cgi_args.pl
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
do 'bind8-lib.pl';
|
||||
|
||||
sub cgi_args
|
||||
{
|
||||
my ($cgi) = @_;
|
||||
if ($cgi =~ /^conf_/) {
|
||||
# All config pages can be linked to
|
||||
return '';
|
||||
}
|
||||
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'}.
|
||||
($z->{'view'} ? '&view='.$z->{'viewindex'} : '') : 'none';
|
||||
}
|
||||
elsif ($cgi eq 'edit_view.cgi') {
|
||||
# Find a view
|
||||
my ($v) = grep { $_->{'type'} eq 'view' &&
|
||||
&can_edit_view($_) } &list_zone_names();
|
||||
return $v ? 'index='.$v->{'index'} : 'none';
|
||||
}
|
||||
elsif ($cgi eq 'edit_text.cgi' || $cgi eq 'edit_soa.cgi' ||
|
||||
$cgi eq 'edit_options.cgi' || $cgi eq 'find_free.cgi' ||
|
||||
$cgi eq 'list_gen.cgi' || $cgi eq 'whois.cg' ||
|
||||
$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' &&
|
||||
&can_edit_zone($_) } &list_zone_names();
|
||||
return 'none' if (!$z);
|
||||
my $rv = 'index='.$z->{'index'}.
|
||||
($z->{'view'} ? '&view='.$z->{'viewindex'} : '');
|
||||
if ($cgi eq 'edit_recs.cgi' || $cgi eq 'edit_record.cgi') {
|
||||
$rv .= '&type=A';
|
||||
}
|
||||
if ($cgi eq 'edit_record.cgi') {
|
||||
# Link to first A record
|
||||
my @recs = &read_zone_file($z->{'file'}, $z->{'name'});
|
||||
my ($r) = grep { $_->{'type'} eq 'A' } @recs;
|
||||
if ($r) {
|
||||
$rv .= '&num='.$r->{'num'};
|
||||
}
|
||||
else {
|
||||
return 'none';
|
||||
}
|
||||
}
|
||||
return $rv;
|
||||
}
|
||||
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'}.
|
||||
($z->{'view'} ? '&view='.$z->{'viewindex'} : '') : 'none';
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
Reference in New Issue
Block a user