3 # Display a list of protected directories and their users. The user can
4 # add more directories, and specify the encryption mode for each.
6 require './htaccess-lib.pl';
7 &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
9 # Check needed Perl modules
11 $missing = &check_md5();
13 print &text('index_emd5', "<tt>$missing</tt>"),"\n";
16 if ($config{'sha1'} && !$missing) {
17 $missing = &check_sha1();
19 print &text('index_sha1', "<tt>$missing</tt>"),"\n";
23 if (!$module_info{'usermin'}) {
24 print &text('index_cpan', "../cpan/download.cgi?source=3&cpan=$missing&mode=2&return=/$module_name/&returndesc=".&urlize($text{'index_return'}));
27 &ui_print_footer("/", $text{'index'});
31 # Check for htdigest command, if we need it
32 if ($config{'digest'} && !$htdigest_command) {
33 eval "use Digest::MD5";
35 print &text('index_digest2', "<tt>htdigest</tt>",
36 "<tt>Digest::MD5</tt>"),"<p>\n";
37 &ui_print_footer("/", $text{'index'});
42 @accessdirs || &error($text{'index_eaccess'});
44 @links = ( &select_all_link("d"),
45 &select_invert_link("d"),
46 "<a href='edit_dir.cgi?new=1'>$text{'index_add'}</a>" );
48 @dirs = &list_directories();
49 @dirs = grep { &can_access_dir($_->[0]) } @dirs;
50 @gtds = ( "width=25%", "width=25%", "width=25%", "width=25%" );
52 @tds = ( "width=30% valign=top", "width=70% valign=top" );
54 print &ui_form_start("delete.cgi", "post");
55 @tds = ( "width=5", @tds );
56 print &ui_links_row(\@links);
58 print &ui_columns_start([ $can_create ? ( "" ) : ( ),
60 $text{'index_usersgroups'} ], 100, 0, \@tds);
65 push(@cols, "<a href='edit_dir.cgi?dir=".
66 &urlize($d->[0])."'>$d->[0]</a>");
73 $users = $d->[2] == 3 ? &list_digest_users($d->[1])
74 : &list_users($d->[1]);
75 if ($userconfig{'sort'} == 1 || $config{'sort'} == 1) {
76 $users = [ sort { $a->{'user'} cmp $b->{'user'} }
80 for($i=0; $i<@$users; $i++) {
82 $link = "<a href='edit_user.cgi?idx=$u->{'index'}&dir=".
83 &urlize($d->[0])."'>$u->{'user'}</a>";
84 if ($u->{'enabled'}) {
88 push(@grid, "<i>$link</i>");
92 $utable = &ui_grid_table(\@grid, 4, 100, \@gtds);
95 $utable = "<i>$text{'index_nousers'}</i><br>\n";
101 $groups = &list_groups($d->[4]);
102 if ($userconfig{'sort'} == 1 || $config{'sort'} == 1) {
103 $groups = [ sort { $a->{'group'} cmp $b->{'group'} }
106 for($i=0; $i<@$groups; $i++) {
108 $link= "<a href='edit_group.cgi?idx=$u->{'index'}&dir=".
109 &urlize($d->[0])."'>$u->{'group'} (".
110 scalar(@{$u->{'members'}}).")</a>";
111 if ($u->{'enabled'}) {
115 push(@grid, "<i>$link</i>");
119 $utable .= &ui_grid_table(\@grid, 4,100,\@gtds);
122 $utable .= "<i>$text{'index_nogroups'}</i><br>\n";
126 # User / group adder links
128 push(@ulinks, "<a href='edit_user.cgi?new=1&dir=".
129 &urlize($d->[0])."'>$text{'index_uadd'}</a>");
131 push(@ulinks, "<a href='edit_group.cgi?new=1&dir=".
132 &urlize($d->[0])."'>$text{'index_gadd'}</a>");
134 $utable .= &ui_links_row(\@ulinks);
135 push(@cols, $utable);
137 print &ui_checked_columns_row(\@cols, \@tds,
141 print &ui_columns_row(\@cols, \@tds);
145 print &ui_columns_end();
147 print &ui_links_row(\@links);
148 print &ui_form_end([ [ "delete", $text{'index_delete'} ],
149 [ "remove", $text{'index_remove'} ] ]);
153 print "<b>$text{'index_none'}</b><p>\n";
154 print &ui_links_row([ $links[2] ]);
157 # Form to find existing .htaccess files
160 print &ui_form_start("search.cgi");
161 print &ui_submit($text{'index_search'}),"\n";
162 print &ui_textbox("search", $accessdirs[0] eq "/" ? "" : $accessdirs[0],
163 40)." ".&file_chooser_button("search", 1)."<br>\n";
164 print &ui_form_end();
167 &ui_print_footer("/", $text{'index'});