#!/usr/local/bin/perl # show_dir.cgi # Show directives from a directory (or equivalent) section require './apache-lib.pl'; &ReadParse(); ($vconf, $v) = &get_virtual_config($in{'virt'}); $d = $vconf->[$in{'idx'}]; $conf = $d->{'members'}; $desc = &text('dir_header', &dir_name($d), &virtual_name($v)); &ui_print_header($desc, $text{'show_title'}, ""); for($i=0; $i<$directive_type_count; $i++) { foreach $e (&editable_directives($i, 'directory')) { foreach $n (split(/\s+/, $e->{'name'})) { $edit{lc($n)} = $e; push(@elist, { 'name' => $n, 'edit' => $e }); } } } @elist = sort { $a->{'name'} cmp $b->{'name'} } @elist; print "
\n\n";
&show_directives($conf, 0);
print "

\n"; print "

\n"; print "\n"; print "\n"; print "$text{'show_edit'}\n"; print " \n"; print "
\n"; &ui_print_footer("dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}", $text{'dir_return'}); # show_directives(list, indent) sub show_directives { local ($list, $ind) = @_; local $idx; for($idx=0; $idx<@$list; $idx++) { local $d = $list->[$idx]; next if ($d->{'name'} eq "dummy"); $t = $edit{lc($d->{'name'})}; if ($d->{'type'}) { # Recurse into section print " " x $ind; print "<",$d->{'name'}," ",$d->{'value'},">\n"; &show_directives($d->{'members'}, $ind+1); print " " x $ind; print "</",$d->{'name'},">\n"; } elsif ($_[1] || !$access_types{$t->{'type'}}) { # Directives in section are not editable &print_line($d, [ $d->{'name'}," ",$d->{'value'} ], $ind); } else { next if (!$t); &print_line($d, [ $d->{'name'}," ",$d->{'value'} ], $ind, "edit_dir.cgi?virt=$in{'virt'}&type=$t->{'type'}&idx=$in{'idx'}"); } } }