Handle hostnames with upper-case letters
[webmin.git] / cluster-software / refresh.cgi.bak
1 #!/usr/local/bin/perl
2 # refresh.cgi
3 # Reload the list of packages from all managed hosts
4
5 require './cluster-software-lib.pl';
6 &header($text{'refresh_title'}, "");
7 print "<hr>\n";
8 $| = 1;
9
10 print "<b>$text{'refresh_header'}</b><p>\n";
11 @hosts = &list_software_hosts();
12 @servers = &list_servers();
13 foreach $h (@hosts) {
14         local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
15         if ($s) {
16                 # Refresh the list
17                 &remote_foreign_require($s->{'host'}, "software",
18                                         "software-lib.pl");
19                 local $gconfig = &remote_foreign_config($s->{'host'}, undef);
20                 foreach $g ('os_type', 'os_version',
21                             'real_os_type', 'real_os_version') {
22                         $h->{$g} = $gconfig{$g};
23                         }
24                 local @old = map { $_->{'name'} } @{$h->{'packages'}};
25                 undef($h->{'packages'});
26                 local $n = &remote_foreign_call($s->{'host'}, "software",
27                                                 "list_packages");
28                 local $packages = &remote_eval($s->{'host'}, "software",
29                                                "\\%packages");
30                 local @added;
31                 for($i=0; $i<$n; $i++) {
32                         push(@{$h->{'packages'}},
33                              { 'name' => $packages->{$i,'name'},
34                                'class' => $packages->{$i,'class'},
35                                'desc' => $packages->{$i,'desc'} });
36                         $idx = &indexof($packages->{$i,'name'}, @old);
37                         if ($idx < 0) {
38                                 push(@added, $packages->{$i,'name'});
39                                 }
40                         else {
41                                 splice(@old, $idx, 1);
42                                 }
43                         }
44                 &save_software_host($h);
45                 local $d = $s->{'desc'} ? $s->{'desc'} : $s->{'host'};
46                 if (@added && @old) {
47                         print &text('refresh_1', $d,
48                                     join(" ", @added),join(" ", @old)),"<br>\n";
49                         }
50                 elsif (@added) {
51                         print &text('refresh_2', $d,
52                                     join(" ", @added)),"<br>\n";
53                         }
54                 elsif (@old) {
55                         print &text('refresh_3', $d, join(" ", @old)),"<br>\n";
56                         }
57                 else {
58                         print &text('refresh_4', $d,"<br>\n";
59                         }
60                 }
61         else {
62                 # remove from managed list
63                 #&delete_software_host($h);
64                 print &text('refresh_del', $h->{'id'}),"<br>\n";
65                 }
66         }
67 print "<p><b>$text{'refresh_done'}</b><p>\n";
68
69 print "<hr>\n";
70 &footer("", $text{'index_return'});
71