Handle hostnames with upper-case letters
[webmin.git] / fdisk / index.cgi
1 #!/usr/local/bin/perl
2 # index.cgi
3 # Display a list of known disks and partitions
4
5 require './fdisk-lib.pl';
6 &error_setup($text{'index_err'});
7 &check_fdisk();
8
9 # Work out which disks are accessible
10 @disks = &list_disks_partitions();
11 @disks = grep { $access{'view'} || &can_edit_disk($_->{'device'}) } @disks;
12 if (@disks == 1 && &can_edit_disk($disks[0]->{'device'})) {
13         # Just one .. go direct to it's page
14         &redirect("edit_disk.cgi?device=$disks[0]->{'device'}");
15         edit;
16         }
17
18 $pdesc = $has_parted ? $text{'index_parted'} : $text{'index_fdisk'};
19 &ui_print_header($pdesc, $module_info{'desc'}, "", undef, 1, 1, 0,
20         &help_search_link("fdisk", "man", "doc", "howto"));
21 $extwidth = 250;
22
23 # Check for critical commands
24 if ($has_parted) {
25         &has_command("parted") ||
26                 &ui_print_endpage(&text('index_ecmd', '<tt>parted</tt>'));
27         }
28 else {
29         &has_command("fdisk") ||
30                 &ui_print_endpage(&text('index_ecmd', '<tt>fdisk</tt>'));
31         }
32
33 # Show a table of just disks
34 @disks = sort { $a->{'device'} cmp $b->{'device'} } @disks;
35 if (@disks) {
36         ($hasctrl) = grep { defined($d->{'scsiid'}) ||
37                             defined($d->{'controller'}) ||
38                             $d->{'raid'} } @disks;
39         print &ui_columns_start([ $text{'index_dname'},
40                                   $text{'index_dsize'},
41                                   $text{'index_dmodel'},
42                                   $text{'index_dparts'},
43                                   $hasctrl ? ( $text{'index_dctrl'} ) : ( ),
44                                   $text{'index_dacts'} ]);
45         foreach $d (@disks) {
46                 $ed = &can_edit_disk($d->{'device'});
47                 $smart = &supports_smart($d);
48                 @links = ( );
49                 @ctrl = ( );
50                 if (defined($d->{'scsiid'}) && defined($d->{'controller'})) {
51                         push(@ctrl, &text('index_dscsi', $d->{'scsiid'},
52                                                          $d->{'controller'}));
53                         }
54                 if ($d->{'raid'}) {
55                         push(@ctrl, &text('index_draid', $d->{'raid'}));
56                         }
57                 if ($ed && &supports_hdparm($d)) {
58                         # Display link to IDE params form
59                         push(@links, "<a href='edit_hdparm.cgi?".
60                              "disk=$d->{'index'}'>$text{'index_dhdparm'}</a>");
61                         }
62                 if (&supports_smart($d)) {
63                         # Display link to smart module
64                         push(@links, "<a href='../smart-status/index.cgi?".
65                              "drive=$d->{'device'}'>$text{'index_dsmart'}</a>");
66                         }
67                 print &ui_columns_row([
68                         $ed ? "<a href='edit_disk.cgi?device=$d->{'device'}'>".
69                                 $d->{'desc'}."</a>"
70                             : $d->{'desc'},
71                         $d->{'cylsize'} ?
72                           &nice_size($d->{'cylinders'}*$d->{'cylsize'}) : "",
73                         $d->{'model'},
74                         scalar(@{$d->{'parts'}}),
75                         $hasctrl ? ( join(" ", @ctrl) ) : ( ),
76                         &ui_links_row(\@links),
77                         ]);
78                 }
79         print &ui_columns_end();
80         }
81 else {
82         print "<b>$text{'index_none2'}</b><p>\n";
83         }
84
85 &ui_print_footer("/", $text{'index'});
86