Handle hostnames with upper-case letters
[webmin.git] / apache / show_dir.cgi
1 #!/usr/local/bin/perl
2 # show_dir.cgi
3 # Show directives from a directory (or equivalent) section
4
5 require './apache-lib.pl';
6 &ReadParse();
7 ($vconf, $v) = &get_virtual_config($in{'virt'});
8 $d = $vconf->[$in{'idx'}];
9 $conf = $d->{'members'};
10 $desc = &text('dir_header', &dir_name($d), &virtual_name($v));
11 &ui_print_header($desc, $text{'show_title'}, "");
12
13 for($i=0; $i<$directive_type_count; $i++) {
14         foreach $e (&editable_directives($i, 'directory')) {
15                 foreach $n (split(/\s+/, $e->{'name'})) {
16                         $edit{lc($n)} = $e;
17                         push(@elist, { 'name' => $n, 'edit' => $e });
18                         }
19                 }
20         }
21 @elist = sort { $a->{'name'} cmp $b->{'name'} } @elist;
22
23 print "<table border><tr><td $cb><pre>\n\n";
24 &show_directives($conf, 0);
25 print "</pre></td></tr></table><p>\n";
26
27 print "<form action=edit_dir.cgi>\n";
28 print "<input type=hidden name=virt value=\"$in{'virt'}\">\n";
29 print "<input type=hidden name=idx value=\"$in{'idx'}\">\n";
30 print "<b>$text{'show_edit'}</b>\n";
31 print "<select name=type>\n";
32 foreach $e (@elist) {
33         print "<option value=",$e->{'edit'}->{'type'},">",
34               $e->{'name'},"\n";
35         }
36 print "</select> <input type=submit value=\"$text{'show_ok'}\">\n";
37 print "</form>\n";
38
39 &ui_print_footer("dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}", $text{'dir_return'});
40
41 # show_directives(list, indent)
42 sub show_directives
43 {
44 local ($list, $ind) = @_;
45 local $idx;
46 for($idx=0; $idx<@$list; $idx++) {
47         local $d = $list->[$idx];
48         next if ($d->{'name'} eq "dummy");
49         $t = $edit{lc($d->{'name'})};
50         if ($d->{'type'}) {
51                 # Recurse into section
52                 print " " x $ind;
53                 print "&lt;",$d->{'name'}," ",$d->{'value'},"&gt;\n";
54                 &show_directives($d->{'members'}, $ind+1);
55                 print " " x $ind;
56                 print "&lt;/",$d->{'name'},"&gt;\n";
57                 }
58         elsif ($_[1] || !$access_types{$t->{'type'}}) {
59                 # Directives in section are not editable
60                 &print_line($d, [ $d->{'name'}," ",$d->{'value'} ], $ind);
61                 }
62         else {
63                 next if (!$t);
64                 &print_line($d, [ $d->{'name'}," ",$d->{'value'} ], $ind,
65                             "edit_dir.cgi?virt=$in{'virt'}&type=$t->{'type'}&idx=$in{'idx'}");
66                 }
67         }
68 }
69