Handle hostnames with upper-case letters
[webmin.git] / wuftpd / edit_perm.cgi
1 #!/usr/local/bin/perl
2 # edit_perm.cgi
3 # Display file permission options
4
5 require './wuftpd-lib.pl';
6 &ui_print_header(undef, $text{'perm_title'}, "", "perm");
7
8 $conf = &get_ftpaccess();
9 @class = &find_value("class", $conf);
10
11 print "<form action=save_perm.cgi>\n";
12 print "<table border width=100%>\n";
13 print "<tr $tb> <td><b>$text{'perm_header'}</b></td> </tr>\n";
14 print "<tr $cb> <td><table width=100%>\n";
15
16 # Display permission options (chmod, delete, etc..)
17 @permtypes = ( 'chmod', 'delete', 'overwrite', 'rename', 'umask' );
18 foreach $t (@permtypes) {
19         push(@perms, &find($t, $conf));
20         }
21 @perms = ( ( sort { $a->{'line'} <=> $b->{'line'} } @perms ), { } );
22 print "<tr> <td valign=top><b>$text{'perm_perms'}</b></td>\n";
23 print "<td colspan=3><table border>\n";
24 print "<tr $tb> <td><b>$text{'perm_type'}</b></td>\n",
25       "<td><b>$text{'perm_can'}</b></td>\n",
26       "<td><b>$text{'perm_users'}</b></td>\n",
27       "<td><b>$text{'perm_classes'}</b></td> </tr>\n";
28 $i = 0;
29 foreach $p (@perms) {
30         $v = $p->{'values'};
31         print "<tr $cb>\n";
32
33         print "<td><select name=type_$i>\n";
34         printf "<option %s>\n", $p->{'name'} ? '' : 'checked';
35         foreach $t (@permtypes) {
36                 printf "<option %s>%s\n",
37                         $p->{'name'} eq $t ? 'selected' : '', $t;
38                 }
39         print "</select></td>\n";
40
41         printf "<td><input type=radio name=can_$i value=yes %s> %s\n",
42                 lc($v->[0]) eq 'yes' ? 'checked' : '', $text{'yes'};
43         printf "<input type=radio name=can_$i value=no %s> %s</td>\n",
44                 lc($v->[0]) eq 'yes' ? '' : 'checked', $text{'no'};
45
46         local (%users, $notall);
47         map { $users{$_}++; $notall++ if (/class=/) } split(/,/, $v->[1]);
48         print "<td>\n";
49         foreach $u ('anonymous', 'guest', 'real') {
50                 printf "<input name=users_%s type=checkbox value=%s %s> %s\n",
51                         $i, $u, $users{$u} ? 'checked' : '', $text{"perm_$u"};
52                 }
53         print "</td>\n";
54
55         if (!$notall) {
56                 map { $users{"class=".$_->[0]}++ } @class;
57                 }
58         print "<td>\n";
59         foreach $c (@class) {
60                 printf "<input name=classes_%s type=checkbox value=%s %s> %s\n",
61                         $i, $c->[0], $users{"class=$c->[0]"} ? 'checked' : '',
62                         $c->[0];
63                 }
64         print "</td> </tr>\n";
65         $i++;
66         }
67 print "</table><br>$text{'perm_note'}</td> </tr>\n";
68 print "<tr> <td colspan=4><hr></td> </tr>\n";
69
70 # Display path-filter options
71 @filter = ( &find_value('path-filter', $conf), [ ] );
72 print "<tr> <td valign=top><b>$text{'perm_filter'}</b></td> <td colspan=3>\n";
73 print "<table border> <tr $tb> <td><b>$text{'perm_char'}</b></td>\n",
74       "<td><b>$text{'perm_regexp'}</b></td>\n",
75       "<td><b>$text{'perm_types'}</b></td>\n",
76       "<td><b>$text{'perm_mesg'}</b></td> </tr>\n";
77 $i = 0;
78 foreach $f (@filter) {
79         print "<tr $cb>\n";
80         print "<td><input name=char_$i size=15 value='$f->[2]'></td>\n";
81         printf "<td><input name=regexp_$i size=25 value='%s'></td>\n",
82                 join(" ", @$f[3..@$f-1]);
83         print "<td>\n";
84         foreach $u ('anonymous', 'guest', 'real') {
85                 printf "<input name=types_%s type=checkbox value=%s %s> %s\n",
86                         $i, $u, $f->[0] =~ /$u/ ? 'checked' : '',
87                         $text{"perm_$u"};
88                 }
89         print "</td>\n";
90         print "<td><input name=mesg_$i size=20 value='$f->[1]'></td> </tr>\n";
91         $i++;
92         }
93 print "</table></td> </tr>\n";
94
95 print "</table></td></tr></table>\n";
96 print "<input type=submit value=\"$text{'save'}\"></form>\n";
97
98 &ui_print_footer("", $text{'index_return'});
99