Handle hostnames with upper-case letters
[webmin.git] / proftpd / mod_auth.pl
1 # mod_auth.pl
2
3 sub mod_auth_directives
4 {
5 local $rv = [
6         [ 'DefaultChdir', 0, 2, 'virtual anon global', 1.20 ],
7         [ 'DefaultRoot', 1, 2, 'virtual global', 0.99 ],
8         [ 'LoginPasswordPrompt', 0, 3, 'virtual anon global', 1.20 ],
9         [ 'RootLogin', 0, 6, 'virtual anon global', 1.15 ]
10         ];
11 return &make_directives($rv, $_[0], "mod_auth");
12 }
13
14 sub edit_DefaultChdir
15 {
16 return (1, $text{'mod_auth_chdir'},
17         &opt_input($_[0]->{'value'}, "DefaultChdir", $text{'default'}, 20));
18 }
19 sub save_DefaultChdir
20 {
21 return &parse_opt("DefaultChdir", '^\S+$', $text{'mod_auth_echdir'});
22 }
23
24 sub edit_DefaultRoot
25 {
26 local $rv = "<table border>\n".
27             "<tr $tb> <td><b>$text{'mod_auth_dir'}</b></td> ".
28             "<td><b>$text{'mod_auth_groups'}</b></td> </tr>\n";
29 local $i = 0;
30 foreach $r (@{$_[0]}, { }) {
31         local @w = @{$r->{'words'}};
32         $rv .= "<tr $cb>\n";
33
34         local $dd = $w[0] eq "~" ? 2 : $w[0] ? 0 : 1;
35         $rv .= sprintf "<td nowrap><input name=DefaultRoot_dd_$i type=radio value=1 %s> %s\n", $dd == 1 ? "checked" : "", $text{'mod_auth_none'};
36         $rv .= sprintf "<input name=DefaultRoot_dd_$i type=radio value=2 %s> %s\n", $dd == 2 ? "checked" : "", $text{'mod_auth_home'};
37         $rv .= sprintf "<input name=DefaultRoot_dd_$i type=radio value=0 %s>\n", $dd == 0 ? "checked" : "";
38         $rv .= sprintf "<input name=DefaultRoot_d_$i size=20 value='%s'></td>\n", $dd ? "" : $w[0];
39
40         $rv .= sprintf "<td nowrap><input name=DefaultRoot_gd_$i type=radio value=1 %s> %s\n", $w[1] ? "" : "checked", $text{'mod_auth_all'};
41         $rv .= sprintf "<input name=DefaultRoot_gd_$i type=radio value=0 %s>\n", $w[1] ? "checked" : "";
42         $rv .= sprintf "<input name=DefaultRoot_g_$i size=12 value='%s'></td>\n", join(" ", split(/,/, $w[1]));
43         $rv .= "</tr>\n";
44         $i++;
45         }
46 $rv .= "</table>\n";
47 return (2, $text{'mod_auth_chroot'}, $rv);
48 }
49 sub save_DefaultRoot
50 {
51 for($i=0; defined($in{"DefaultRoot_d_$i"}); $i++) {
52         next if ($in{"DefaultRoot_dd_$i"} == 1);
53         local $v = $in{"DefaultRoot_dd_$i"} == 2 ? "~" :$in{"DefaultRoot_d_$i"};
54         $v =~ /^\S+$/ || &error($text{'mod_auth_edir'});
55         if (!$in{"DefaultRoot_gd_$i"}) {
56                 local @g = split(/\s+/, $in{"DefaultRoot_g_$i"});
57                 @g || &error($text{'mod_auth_egroups'});
58                 $v .= " ".join(",", @g);
59                 }
60         push(@rv, $v);
61         }
62 return ( \@rv );
63 }
64
65 sub edit_LoginPasswordPrompt
66 {
67 return (1, $text{'mod_auth_login'},
68         &choice_input($_[0]->{'value'}, "LoginPasswordPrompt", "",
69                       "$text{'yes'},on", "$text{'no'},off",
70                       "$text{'default'},"));
71 }
72 sub save_LoginPasswordPrompt
73 {
74 return &parse_choice("LoginPasswordPrompt", "");
75 }
76
77 sub edit_RootLogin
78 {
79 return (1, $text{'mod_auth_root'},
80         &choice_input($_[0]->{'value'}, "RootLogin", "",
81                       "$text{'yes'},on", "$text{'no'},off",
82                       "$text{'default'},"));
83 }
84 sub save_RootLogin
85 {
86 return &parse_choice("RootLogin", "");
87 }
88
89