Handle hostnames with upper-case letters
[webmin.git] / software / do_install.cgi
1 #!/usr/local/bin/perl
2 # do_install.cgi
3 # Do the actual installation of a package from a file
4
5 require './software-lib.pl';
6 &ReadParse();
7 &error_setup(&text('do_err', $in{'package'}));
8
9 if ($show_install_progress) {
10         &ui_print_unbuffered_header(undef, $text{'do_title'}, "");
11         }
12 else {
13         &ui_print_header(undef, $text{'do_title'}, "");
14         }
15
16 @packages = &file_packages($in{'file'});
17 if (defined(&install_packages) && @packages > 1) {
18         # Can install everything in one hit
19         &clean_environment();
20         $error = &install_packages($in{'file'}, \%in);
21         &reset_environment();
22         if ($error) { &install_error($error); }
23         if ($in{'need_unlink'}) { &unlink_file($in{'file'}); }
24
25         foreach $p (@packages) {
26                 # Display package details
27                 ($package, $desc) = split(/\s+/, $p, 2);
28                 @pinfo = &show_package_info($package);
29
30                 # Display new files
31                 @grid = ( );
32                 $n = &check_files($package);
33                 for($i=0; $i<$n; $i++) {
34                         push(@grid, &html_escape($files{$i,'path'}));
35                         }
36                 print &ui_grid_table(\@grid, 2, 100, undef, undef,
37                                      $text{'do_files'});
38                 &list_packages($package);
39                 &webmin_log('install', 'package', $package,
40                             { 'desc' => $packages{0,'desc'},
41                               'class' => $packages{0,'class'} });
42                 }
43         }
44 else {
45         # Must install and show one by one
46         foreach $p (@packages) {
47                 # attempt to install
48                 print &ui_hr() if ($p ne $packages[0]);
49                 ($package, $desc) = split(/\s+/, $p, 2);
50                 &clean_environment();
51                 if ($show_install_progress) {
52                         print "<pre>\n";
53                         $error = &install_package(
54                                 $in{'file'}, &html_escape($package), \%in, 1);
55                         print "</pre>\n";
56                         }
57                 else {
58                         $error = &install_package(
59                                 $in{'file'}, &html_escape($package), \%in);
60                         }
61                 &reset_environment();
62                 if ($error) { &install_error($error); }
63                 if ($in{'need_unlink'}) { &unlink_file($in{'file'}); }
64
65                 # display information
66                 @pinfo = &show_package_info($package);
67
68                 # Show files in package, if possible
69                 $n = &check_files($package);
70                 if ($n) {
71                         @grid = ( );
72                         for($i=0; $i<$n; $i++) {
73                                 push(@grid, &html_escape($files{$i,'path'}));
74                                 }
75                         print &ui_grid_table(\@grid, 2, 100, undef, undef,
76                                              $text{'do_files'});
77                         }
78                 &list_packages($package);
79                 &webmin_log('install', 'package', $package,
80                             { 'desc' => $packages{0,'desc'},
81                               'class' => $packages{0,'class'} });
82                 }
83         }
84
85 &ui_print_footer("", $text{'index_return'});
86
87 sub install_error
88 {
89 print "<b>",&text('do_efailed', $error),"</b><p>\n";
90 print $text{'do_efailedmsg1'},"<p>\n";
91 if ($in{'need_unlink'}) {
92         print &text('do_efailedmsg2',
93                 "delete_file.cgi?file=".
94                 &urlize($in{'file'})),"<p>\n";
95         }
96 print &ui_hr();
97 &ui_print_footer("", $text{'index_return'});
98 exit;
99 }
100