Handle hostnames with upper-case letters
[webmin.git] / bind8 / list_slaves.cgi
1 #!/usr/local/bin/perl
2 # Show hosts in BIND cluster
3
4 require './bind8-lib.pl';
5 $access{'slaves'} || &error($text{'slaves_ecannot'});
6 &foreign_require("servers", "servers-lib.pl");
7 &ReadParse();
8 &ui_print_header(undef, $text{'slaves_title'}, "");
9
10 # Show existing servers
11 @servers = &list_slave_servers();
12 if (@servers) {
13         print &ui_form_start("slave_delete.cgi", "post");
14         @links = ( &select_all_link("d"),
15                    &select_invert_link("d") );
16         print &ui_links_row(\@links);
17         @tds = ( "width=5" );
18         print &ui_columns_start([
19                 "",
20                 $text{'slaves_host'},
21                 $text{'slaves_dosec'},
22                 $text{'slaves_view'},
23                 $text{'slaves_desc'},
24                 $text{'slaves_os'} ], 100, 0, \@tds);
25         foreach $s (@servers) {
26                 local @cols;
27                 push(@cols, $s->{'host'}.
28                             ($s->{'nsname'} ? " ($s->{'nsname'})" : ""));
29                 push(@cols, $s->{'sec'} ? $text{'yes'} : $text{'no'});
30                 push(@cols, $s->{'bind8_view'} eq '*' ?
31                                 "<i>$text{'slaves_sameview'}</i>" :
32                             $s->{'bind8_view'} ?
33                                 $s->{'bind8_view'} :
34                                 "<i>$text{'slaves_noview'}</i>");
35                 push(@cols, $s->{'desc'});
36                 ($type) = grep { $_->[0] eq $s->{'type'} }
37                                @servers::server_types;
38                 push(@cols, $type->[1]);
39                 print &ui_checked_columns_row(\@cols, \@tds, "d", $s->{'id'});
40                 }
41         print &ui_columns_end();
42         print &ui_links_row(\@links);
43         print &ui_form_end([ [ "delete", $text{'slaves_delete'} ] ]);
44         }
45 else {
46         print "<b>$text{'slaves_none'}</b><p>\n";
47         }
48
49 # Get all Webmin servers and groups
50 @allservers = grep { $_->{'user'} } &servers::list_servers();
51 %gothost = map { $_->{'id'}, 1 } @servers;
52 @addservers = grep { !$gothost{$_->{'id'}} } @allservers;
53 @groups = &servers::list_all_groups(\@allservers);
54
55 # Show form buttons to add, if any
56 if (@addservers || @groups) {
57         print &ui_form_start("slave_add.cgi", "post");
58         print &ui_table_start($text{'slaves_header'}, undef, 2);
59
60         # Host or group to add
61         @addservers = sort { $a->{'host'} cmp $b->{'host'} } @addservers;
62         @opts = ( );
63         if (@addservers) {
64                 # Add hosts not already in list
65                 foreach my $s (@addservers) {
66                         push(@opts, [ $s->{'id'},
67                                       $s->{'host'}.
68                                       ($s->{'desc'} ? " ($s->{'desc'})" : "")]);
69                         }
70                 }
71         @groups = sort { $a->{'name'} cmp $b->{'name'} } @groups;
72         if (@groups) {
73                 # Add groups
74                 foreach my $g (@groups) {
75                         push(@opts, [ "group_".$g->{'name'},
76                                       &text('slaves_group', $g->{'name'}) ]);
77                         }
78                 }
79         print &ui_table_row($text{'slaves_add'},
80                 &ui_select("server", undef, \@opts));
81
82         # Add to view
83         print &ui_table_row($text{'slaves_toview'},
84                 &ui_radio("view_def", 1,
85                           [ [ 1, $text{'slaves_noview2'}."<br>" ],
86                             [ 2, $text{'slaves_sameview'}."<br>" ],
87                             [ 0, $text{'slaves_inview'} ] ])." ".
88                 &ui_textbox("view", undef, 20));
89
90         # Create secondary on slave?
91         print &ui_table_row($text{'slaves_sec'},
92                 &ui_yesno_radio("sec", 0));
93
94         # Create all existing masters?
95         print &ui_table_row($text{'slaves_sync'},
96                 &ui_yesno_radio("sync", 0));
97
98         # NS name
99         print &ui_table_row($text{'slaves_name'},
100                 &ui_opt_textbox("name", undef, 30, $text{'slaves_same'}));
101
102         print &ui_table_end();
103         print &ui_form_end([ [ undef, $text{'slaves_ok'} ] ]);
104         }
105 else {
106         print "<b>",&text('slaves_need', '../servers/'),"</b><p>\n";
107         }
108
109 &ui_print_footer("", $text{'index_return'});
110