3 # Reload the list of modules from all managed hosts
5 require './cluster-webmin-lib.pl';
7 &ui_print_header(undef, $text{'refresh_title'}, "");
10 # Setup error handler for down hosts
13 $ref_error_msg = join("", @_);
15 &remote_error_setup(\&ref_error);
17 # Work out which hosts
18 @hosts = &list_webmin_hosts();
19 @servers = &list_servers();
20 if (defined($in{'id'})) {
21 @hosts = grep { $_->{'id'} == $in{'id'} } @hosts;
22 local ($s) = grep { $_->{'id'} == $hosts[0]->{'id'} } @servers;
23 print "<b>",&text('refresh_header5', undef,
24 &server_name($s)),"</b><p>\n";
27 @hosts = &create_on_parse("refresh_header");
28 #print "<b>$text{'refresh_header'}</b><p>\n";
32 local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
34 local ($rh = "READ$p", $wh = "WRITE$p");
40 &remote_foreign_require($s->{'host'}, "webmin",
44 print $wh &serialise_variable($ref_error_msg);
47 &remote_foreign_require($s->{'host'}, "acl",
49 local $gconfig = &remote_foreign_config($s->{'host'},
51 foreach $g ('os_type', 'os_version',
52 'real_os_type', 'real_os_version') {
53 $h->{$g} = $gconfig->{$g};
55 $h->{'version'} = &remote_foreign_call($s->{'host'},
56 "webmin", "get_webmin_version");
58 # Refresh modules and themes
59 local @old = map { $_->{'dir'} } ( @{$h->{'modules'}},
61 undef($h->{'modules'});
62 local @mods = &remote_foreign_call($s->{'host'},
63 "webmin", "get_all_module_infos", 1);
64 @mods = grep { !$_->{'clone'} } @mods;
65 local @themes = &remote_foreign_call($s->{'host'},
66 "webmin", "list_themes");
68 foreach $m (@mods, @themes) {
69 $idx = &indexof($m->{'dir'}, @old);
71 push(@added, $m->{'dir'});
74 splice(@old, $idx, 1);
77 $h->{'modules'} = \@mods;
78 $h->{'themes'} = \@themes;
80 # Refresh users and groups
81 local @users = &remote_foreign_call($s->{'host'},
83 local $ud = scalar(@users) - scalar(@{$h->{'users'}});
84 $h->{'users'} = \@users;
85 local @groups = &remote_foreign_call($s->{'host'},
86 "acl", "list_groups");
87 local $gd = scalar(@groups) - scalar(@{$h->{'groups'}});
88 $h->{'groups'} = \@groups;
90 &save_webmin_host($h);
91 $rv = [ \@added, \@old, $ud, $gd ];
94 # remove from managed list
95 &delete_webmin_host($h);
98 print $wh &serialise_variable($rv);
108 foreach $h (@hosts) {
109 local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
110 local $d = &server_name($s);
111 local $rh = "READ$p";
113 local $rv = &unserialise_variable($line);
116 if ($rv && ref($rv)) {
117 @added = @{$rv->[0]};
119 if (@added && @old) {
120 print &text('refresh_1', $d,
121 join(" ", @added),join(" ", @old)),"\n";
124 print &text('refresh_2', $d,
125 join(" ", @added)),"\n";
128 print &text('refresh_3', $d, join(" ", @old)),"\n";
131 print &text('refresh_4', $d),"\n";
134 print &text('refresh_u1', $rv->[2]),"\n";
136 elsif ($rv->[2] < 0) {
137 print &text('refresh_u2', -$rv->[2]),"\n";
140 print &text('refresh_g1', $rv->[3]),"\n";
142 elsif ($rv->[3] < 0) {
143 print &text('refresh_g2', -$rv->[3]),"\n";
148 print &text('refresh_failed', $d, $rv),"<br>\n";
151 print &text('refresh_del', $h->{'id'}),"<br>\n";
157 print "<p><b>$text{'refresh_done'}</b><p>\n";
160 if (defined($in{'id'})) {
161 &ui_print_footer("edit_host.cgi?id=$in{'id'}", $text{'host_return'},
162 "", $text{'index_return'});
165 &ui_print_footer("", $text{'index_return'});