Handle hostnames with upper-case letters
[webmin.git] / bind8 / cgi_args.pl
1
2 do 'bind8-lib.pl';
3
4 sub cgi_args
5 {
6 my ($cgi) = @_;
7 if ($cgi =~ /^conf_/) {
8         # All config pages can be linked to
9         return '';
10         }
11 elsif ($cgi =~ /^edit_(master|slave|stub|forward|delegation|hint).cgi$/) {
12         # Find a zone of this type
13         my @allzones = grep { &can_edit_zone($_) } &list_zone_names();
14         my ($z) = grep { $_->{'type'} eq $1 } @allzones;
15         return $z ? 'index='.$z->{'index'}.
16                     ($z->{'view'} ? '&view='.$z->{'viewindex'} : '') : 'none';
17         }
18 elsif ($cgi eq 'edit_view.cgi') {
19         # Find a view
20         my ($v) = grep { $_->{'type'} eq 'view' &&
21                          &can_edit_view($_) } &list_zone_names();
22         return $v ? 'index='.$v->{'index'} : 'none';
23         }
24 elsif ($cgi eq 'edit_text.cgi' || $cgi eq 'edit_soa.cgi' ||
25        $cgi eq 'edit_options.cgi' || $cgi eq 'find_free.cgi' ||
26        $cgi eq 'list_gen.cgi' || $cgi eq 'whois.cg' ||
27        $cgi eq 'edit_zonekey.cgi' || $cgi eq 'edit_recs.cgi' ||
28        $cgi eq 'edit_record.cgi') {
29         # Find a master zone
30         my ($z) = grep { $_->{'type'} eq 'master' &&
31                          &can_edit_zone($_) } &list_zone_names();
32         return 'none' if (!$z);
33         my $rv = 'index='.$z->{'index'}.
34                  ($z->{'view'} ? '&view='.$z->{'viewindex'} : '');
35         if ($cgi eq 'edit_recs.cgi' || $cgi eq 'edit_record.cgi') {
36                 $rv .= '&type=A';
37                 }
38         if ($cgi eq 'edit_record.cgi') {
39                 # Link to first A record
40                 my @recs = &read_zone_file($z->{'file'}, $z->{'name'});
41                 my ($r) = grep { $_->{'type'} eq 'A' } @recs;
42                 if ($r) {
43                         $rv .= '&num='.$r->{'num'};
44                         }
45                 else {
46                         return 'none';
47                         }
48                 }
49         return $rv;
50         }
51 elsif ($cgi eq 'view_text.cgi' || $cgi eq 'edit_soptions.cgi') {
52         # Find a slave zone
53         my ($z) = grep { $_->{'type'} eq 'slave' &&
54                          &can_edit_zone($_) } &list_zone_names();
55         return $z ? 'index='.$z->{'index'}.
56                     ($z->{'view'} ? '&view='.$z->{'viewindex'} : '') : 'none';
57         }
58 return undef;
59 }