2 # Display a list of other webmin servers
6 require './servers-lib.pl';
7 our (%text, %config, %access);
8 &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
10 my @servers = &list_servers_sorted(1);
14 if ($access{'edit'}) {
16 print &ui_form_start("delete_servs.cgi");
17 push(@linksrow, &select_all_link("d"),
18 &select_invert_link("d"));
21 push(@linksrow, "<a href='edit_serv.cgi?new=1'>".
22 "$text{'index_add'}</a>");
26 if (@servers && $config{'display_mode'}) {
27 # Show table of servers
28 print &ui_links_row(\@linksrow);
29 print &ui_columns_start([
30 $access{'edit'} ? ( "" ) : ( ),
34 $text{'index_os'} ], 100);
35 foreach my $s (@servers) {
38 "<table cellpadding=0 cellspacing=0 width=100%><tr>\n";
39 if (!$access{'links'} || !$s->{'port'}) {
41 $table .= ($s->{'realhost'} || $s->{'host'});
42 $table .= ":$s->{'port'}" if ($s->{'port'});
46 if ($s->{'user'} || $s->{'autouser'}) {
47 $table .= "<td><a href='link.cgi/$s->{'id'}/' target=_top>\n";
50 $table .= "<td><a href=".&make_url($s)." target=_top>\n";
52 $table .= ($s->{'realhost'} || $s->{'host'});
53 $table .= ":$s->{'port'}</a></td>\n";
55 $table .= "<td align=right>";
56 if ($s->{'autouser'} && &logged_in($s)) {
57 $table .= "<a href='logout.cgi?id=$s->{'id'}'>($text{'index_logout'})</a>\n";
59 if ($access{'edit'}) {
60 $table .= "<a href='edit_serv.cgi?id=$s->{'id'}'>($text{'index_edit'})</a>\n";
62 $table .= "</td> </tr></table>\n";
64 push(@cols, $s->{'desc'});
65 push(@cols, $s->{'group'} || $text{'index_none'});
66 my ($type) = grep { $_->[0] eq $s->{'type'} }
68 push(@cols, $type->[1]);
69 if ($access{'edit'}) {
70 print &ui_checked_columns_row(\@cols, undef,
74 print &ui_columns_row(\@cols);
77 print &ui_columns_end();
81 print &ui_links_row(\@linksrow);
82 my (@afters, @befores);
83 if ($access{'edit'}) {
84 my $sep = length($text{'index_edit'}) > 10 ? "<br>" : " ";
85 @afters = map { $sep."<a href='edit_serv.cgi?id=$_->{'id'}'>(".$text{'index_edit'}.")</a>" } @servers;
86 @befores = map { &ui_checkbox("d", $_->{'id'}) } @servers;
88 my @titles = map { &make_iconname($_) } @servers;
89 my @icons = map { "images/$_->{'type'}.gif" } @servers;
90 my @links = map { !$access{'links'} ? undef :
91 $_->{'user'} || $_->{'autouser'} ?
92 "link.cgi/$_->{'id'}/" : &make_url($_) } @servers;
93 &icons_table(\@links, \@titles, \@icons, undef, "target=_top",
94 undef, undef, \@befores, \@afters);
97 print "<b>$text{'index_noservers'}</b> <p>\n";
99 if ($access{'edit'}) {
100 print &ui_links_row(\@linksrow);
102 print &ui_form_end([ [ "delete", $text{'index_delete'} ] ]);
106 my $myip = &get_my_address();
107 my $myscan = &address_to_broadcast($myip, 1) if ($myip);
108 if ($access{'find'} || $access{'auto'}) {
110 print &ui_buttons_start();
111 if ($access{'find'}) {
112 # Buttons to scan and broadcast for servers
114 &get_miniserv_config(\%miniserv);
115 my $port = $config{'listen'} || $miniserv{'listen'} || 10000;
116 print &ui_buttons_row("find.cgi", $text{'index_broad'},
117 $text{'index_findmsg'});
118 print &ui_buttons_row("find.cgi", $text{'index_scan'},
119 &text('index_scanmsg', &ui_textbox("scan", $myscan, 15)).
121 "<tr> <td><b>$text{'index_defuser'}</b></td>\n".
122 "<td>".&ui_textbox("defuser", undef, 20)."</td> </tr>".
123 "<tr> <td><b>$text{'index_defpass'}</b></td>\n".
124 "<td>".&ui_password("defpass", undef, 20)."</td> </tr>".
125 "<tr> <td><b>$text{'index_defport'}</b></td>\n".
126 "<td>".&ui_textbox("port", $port, 20)."</td> </tr>".
130 if ($access{'auto'}) {
131 # Button for auto-discovery form
132 print &ui_buttons_row("edit_auto.cgi", $text{'index_auto'},
133 $text{'index_automsg'});
135 print &ui_buttons_end();
138 &ui_print_footer("/", $text{'index'});
142 return sprintf "http%s://%s:%d/",
143 $_[0]->{'ssl'} ? 's' : '', $_[0]->{'host'}, $_[0]->{'port'};
149 if ($_[0]->{'desc'} && !$config{'show_ip'}) {
150 $rv = $_[0]->{'desc'};
152 elsif ($_[0]->{'realhost'}) {
153 $rv = "$_[0]->{'realhost'}:$_[0]->{'port'}";
156 $rv = "$_[0]->{'host'}:$_[0]->{'port'}";
158 if (&logged_in($_[0])) {
159 $rv .= "</a> <a href='logout.cgi?id=$_->{'id'}'>(".$text{'index_logout'}.")";