Handle hostnames with upper-case letters
[webmin.git] / software / apt_upgrade.cgi
1 #!/usr/local/bin/perl
2 # apt_upgrade.cgi
3 # Upgrade a debian system
4
5 require './software-lib.pl';
6 &ReadParse();
7
8 &ui_print_unbuffered_header(undef, $text{'apt_upgrade'}, "");
9
10 if ($in{'update'}) {
11         print "<b>",&text('apt_updatedesc',
12                           "<tt>$apt_get_command update</tt>"),"</b><p>\n";
13         print "<pre>";
14         &additional_log("exec", undef, "$apt_get_command update");
15         &clean_environment();
16         open(CMD, "$apt_get_command update 2>&1 </dev/null |");
17         while(<CMD>) {
18                 print &html_escape($_);
19                 }
20         close(CMD);
21         &reset_environment();
22         print "</pre>\n";
23         if ($?) {
24                 print "<b>$text{'apt_updatefailed'}</b><p>\n";
25                 &ui_print_footer("", $text{'index_return'});
26                 exit;
27                 }
28         else { print "<b>$text{'apt_updateok'}</b><p>\n"; }
29         }
30
31 if ($in{'mode'}) {
32         $opts = $in{'sim'} ? "-s -y -f" : "-y -f";
33         $cmd = $in{'mode'} == 2 ? "dist-upgrade" :
34                $apt_get_command =~ /aptitude/ ? "safe-upgrade" : "upgrade";
35         print "<b>",&text($in{'sim'} ? 'apt_upgradedescsim' : 'apt_upgradedesc', "<tt>$apt_get_command $opts $cmd</tt>"),"</b><p>\n";
36         print "<pre>";
37         &additional_log("exec", undef, "$apt_get_command $opts $cmd");
38         &clean_environment();
39         open(CMD, "$apt_get_command $opts $cmd 2>&1 </dev/null |");
40         while(<CMD>) {
41                 if (/setting\s+up\s+(\S+)/i) {
42                         push(@packs, $1);
43                         }
44                 elsif (/packages\s+will\s+be\s+upgraded/i ||
45                        /new\s+packages\s+will\s+be\s+installed/i) {
46                         print &html_escape($_);
47                         $line = $_ = <CMD>;
48                         $line =~ s/^\s+//; $line =~ s/\s+$//;
49                         push(@newpacks, split(/\s+/, $line));
50                         }
51                 print;
52                 }
53         close(CMD);
54         &reset_environment();
55         if (!@rv && $config{'package_system'} ne 'debian' && !$?) {
56                 # Other systems don't list the packages installed!
57                 @packs = @newpacks;
58                 }
59         print "</pre>\n";
60         if ($?) { print "<b>$text{'apt_upgradefailed'}</b><p>\n"; }
61         else { print "<b>$text{'apt_upgradeok'}</b><p>\n"; }
62
63         foreach $p (@packs) {
64                 local @pinfo = &show_package_info($p);
65                 }
66         &webmin_log("apt", "check", undef, { 'packages' => \@packs })
67                 if (@packs);
68         }
69
70 &ui_print_footer("", $text{'index_return'});
71