Handle hostnames with upper-case letters
[webmin.git] / bind8 / find_zones.cgi
1 #!/usr/local/bin/perl
2 # find_zones.cgi
3 # Display zones matching some search
4
5 require './bind8-lib.pl';
6 &ReadParse();
7
8 @zones = &list_zone_names();
9 foreach $z (@zones) {
10         $v = $z->{'name'};
11         next if ($z->{'type'} eq 'view' ||
12                  $v eq "." || !&can_edit_zone($z) ||
13                  &arpa_to_ip($v) !~ /\Q$in{'search'}\E/i);
14         $t = $z->{'type'};
15         if ($z->{'view'}) {
16                 push(@zlinks, "edit_$t.cgi?index=$z->{'index'}".
17                               "&view=$z->{'viewindex'}");
18                 push(@ztitles, &ip6int_to_net(&arpa_to_ip($v))." ".
19                        &text('index_view', "<tt>$z->{'view'}</tt>"));
20                 push(@zdels, $z->{'index'}." ".$z->{'view'});
21                 }
22         else {
23                 push(@zlinks, "edit_$t.cgi?index=$z->{'index'}");
24                 push(@ztitles, &ip6int_to_net(&arpa_to_ip($v)));
25                 push(@zdels, $z->{'index'});
26                 }
27         push(@zicons, "images/$t.gif");
28         push(@ztypes, $text{"index_$t"});
29         $len++;
30         }
31 if (@zlinks == 1) {
32         &redirect($zlinks[0]);
33         exit;
34         }
35
36 &ui_print_header(undef, $text{'find_title'}, "");
37 print &text('find_match', "<tt>".&html_escape($in{'search'})."</tt>"),"<p>\n";
38
39 if ($len) {
40         # sort list of zones
41         @zorder = sort { $ztitles[$a] cmp $ztitles[$b] } (0 .. $len-1);
42         @zlinks = map { $zlinks[$_] } @zorder;
43         @ztitles = map { $ztitles[$_] } @zorder;
44         @zicons = map { $zicons[$_] } @zorder;
45         @ztypes = map { $ztypes[$_] } @zorder;
46         @zdels = map { $zdels[$_] } @zorder;
47
48         if ($config{'show_list'}) {
49                 # display as list
50                 $mid = int((@zlinks+1)/2);
51                 print &ui_form_start("mass_delete.cgi", "post");
52                 @links = ( &select_all_link("d", 0),
53                            &select_invert_link("d", 0) );
54                 print &ui_links_row(\@links);
55                 @grid = ( );
56                 push(@grid, &zones_table([ @zlinks[0 .. $mid-1] ],
57                                       [ @ztitles[0 .. $mid-1] ],
58                                       [ @ztypes[0 .. $mid-1] ],
59                                       [ @zdels[0 .. $mid-1] ] ));
60                 if ($mid < @zlinks) {
61                         push(@grid, &zones_table([ @zlinks[$mid .. $#zlinks] ],
62                                              [ @ztitles[$mid .. $#ztitles] ],
63                                              [ @ztypes[$mid .. $#ztypes] ],
64                                              [ @zdels[$mid .. $#zdels] ]));
65                         }
66                 print &ui_grid_table(\@grid, 2, 100,
67                                      [ "width=50%", "width=50%" ]);
68                 print &ui_links_row(\@links);
69                 print &ui_form_end([ [ "delete", $text{'index_massdelete'} ],
70                                      [ "update", $text{'index_massupdate'} ],
71                                      [ "create", $text{'index_masscreate'} ] ]);
72                 }
73         else {
74                 # display as icons
75                 &icons_table(\@zlinks, \@ztitles, \@zicons);
76                 }
77         }
78 else {
79         print "<b>$text{'find_none'}</b><p>\n";
80         }
81
82 &ui_print_footer("", $text{'index_return'});
83
84