Handle hostnames with upper-case letters
[webmin.git] / acl_security.pl
1
2 use WebminCore;
3 &init_config();
4
5 # acl_security_form(&options)
6 # Output HTML for editing global security options
7 sub acl_security_form
8 {
9 local $o = $_[0];
10
11 # Root directory for file browser
12 print &ui_table_row($text{'acl_root'},
13         &ui_opt_textbox("root", $o->{'root'}, 40, $text{'acl_home'})." ".
14         &file_chooser_button("root", 1));
15
16 # Other dirs to allow
17 print &ui_table_row($text{'acl_otherdirs'},
18         &ui_textarea("otherdirs", join("\n", split(/\t+/, $o->{'otherdirs'})),
19                      5, 40), 3);
20
21 # Can see dot files?
22 print &ui_table_row($text{'acl_nodot'},
23         &ui_yesno_radio("nodot", int($o->{'nodot'})));
24
25 # Browse as Unix user
26 print &ui_table_row($text{'acl_fileunix'},
27         &ui_opt_textbox("fileunix", $o->{'fileunix'}, 13,
28                         $text{'acl_sameunix'})." ".
29         &user_chooser_button("fileunix"));
30
31 print &ui_hr();
32
33 # Users visible in chooser
34 print &ui_table_row($text{'acl_uedit'},
35   &ui_radio_table("uedit_mode", int($o->{'uedit_mode'}),
36         [ [ 0, $text{'acl_uedit_all'} ],
37           [ 1, $text{'acl_uedit_none'} ],
38           [ 2, $text{'acl_uedit_only'},
39                &ui_textbox("uedit_can",
40                            $o->{'uedit_mode'} == 2 ? $o->{'uedit'} : "", 40).
41                " ".&user_chooser_button("uedit_can", 1) ],
42           [ 3, $text{'acl_uedit_except'},
43                &ui_textbox("uedit_cannot",
44                            $o->{'uedit_mode'} == 3 ? $o->{'uedit'} : "", 40).
45                " ".&user_chooser_button("uedit_cannot", 1) ],
46           [ 4, $text{'acl_uedit_uid'},
47                &ui_textbox("uedit_uid",
48                            $o->{'uedit_mode'} == 4 ? $o->{'uedit'} : "", 6).
49                " - ".
50                &ui_textbox("uedit_uid2",
51                            $o->{'uedit_mode'} == 4 ? $o->{'uedit2'} : "", 6) ],
52           [ 5, $text{'acl_uedit_group'},
53                &ui_group_textbox("uedit_group",
54                 $o->{'uedit_mode'} == 5 ? $dummy=getgrgid($o->{'uedit'}) : "")],
55         ]));
56
57 # Groups visible in chooser
58 print &ui_table_row($text{'acl_gedit'},
59     &ui_radio_table("gedit_mode", int($o->{'gedit_mode'}),
60         [ [ 0, $text{'acl_gedit_all'} ],
61           [ 1, $text{'acl_gedit_none'} ],
62           [ 2, $text{'acl_gedit_only'},
63                &ui_textbox("gedit_can",
64                            $o->{'gedit_mode'} == 2 ? $o->{'gedit'} : "", 40).
65                " ".&group_chooser_button("gedit_can", 1) ],
66           [ 3, $text{'acl_gedit_except'},
67                &ui_textbox("gedit_cannot",
68                            $o->{'gedit_mode'} == 3 ? $o->{'gedit'} : "", 40).
69                " ".&group_chooser_button("gedit_cannot", 1) ],
70           [ 4, $text{'acl_gedit_gid'},
71                &ui_textbox("gedit_gid",
72                            $o->{'gedit_mode'} == 4 ? $o->{'gedit'} : "", 6).
73                " - ".
74                &ui_textbox("gedit_gid2",
75                            $o->{'gedit_mode'} == 4 ? $o->{'gedit2'} : "", 6) ],
76         ]));
77
78 print &ui_table_hr();
79
80 # Can submit feedback?
81 print &ui_table_row($text{'acl_feedback'},
82         &ui_radio("feedback", int($o->{'feedback'}),
83                   [ map { [ $_, $text{'acl_feedback'.$_} ] } (2,3,1,0) ]));
84
85 # Can accept RPC calls?
86 print &ui_table_row($text{'acl_rpc'},
87         &ui_radio("rpc", int($o->{'rpc'}),
88                   [ [ 1, $text{'acl_rpc1'} ],
89                     $o->{'rpc'} == 2 ? ( [ 2, $text{'acl_rpc2'} ] ) : ( ),
90                     [ 0, $text{'acl_rpc0'} ] ]));
91
92 # Get new permissions?
93 print &ui_table_row($text{'acl_negative'},
94         &ui_radio("negative", int($o->{'negative'}),
95                   [ [ 0, $text{'yes'} ], [ 1, $text{'no'} ] ]));
96
97 # Readonly mode
98 print &ui_table_row($text{'acl_readonly2'},
99         &ui_radio("readonly", int($o->{'readonly'}),
100                   [ [ 1, $text{'acl_readonlyyes'} ],
101                     [ 0, $text{'no'} ] ]));
102
103 # Allow use of search field
104 print &ui_table_row($text{'acl_webminsearch'},
105         &ui_radio("webminsearch", int($o->{'webminsearch'}),
106                   [ [ 1, $text{'yes'} ], [ 0, $text{'no'} ] ]));
107 }
108
109 # acl_security_save(&options)
110 # Parse the form for global security options
111 sub acl_security_save
112 {
113 $_[0]->{'root'} = $in{'root_def'} ? undef : $in{'root'};
114 $_[0]->{'otherdirs'} = join("\t", split(/\r?\n/, $in{'otherdirs'}));
115 $_[0]->{'nodot'} = $in{'nodot'};
116
117 $_[0]->{'uedit_mode'} = $in{'uedit_mode'};
118 $_[0]->{'uedit'} = $in{'uedit_mode'} == 2 ? $in{'uedit_can'} :
119                    $in{'uedit_mode'} == 3 ? $in{'uedit_cannot'} :
120                    $in{'uedit_mode'} == 4 ? $in{'uedit_uid'} :
121                    $in{'uedit_mode'} == 5 ? getgrnam($in{'uedit_group'}) : "";
122 $_[0]->{'uedit2'} = $in{'uedit_mode'} == 4 ? $in{'uedit_uid2'} : undef;
123
124 $_[0]->{'gedit_mode'} = $in{'gedit_mode'};
125 $_[0]->{'gedit'} = $in{'gedit_mode'} == 2 ? $in{'gedit_can'} :
126                    $in{'gedit_mode'} == 3 ? $in{'gedit_cannot'} :
127                    $in{'gedit_mode'} == 4 ? $in{'gedit_gid'} : "";
128 $_[0]->{'gedit2'} = $in{'gedit_mode'} == 4 ? $in{'gedit_gid2'} : undef;
129 $_[0]->{'feedback'} = $in{'feedback'};
130 $_[0]->{'rpc'} = $in{'rpc'};
131 $_[0]->{'negative'} = $in{'negative'};
132 $_[0]->{'readonly'} = $in{'readonly'};
133 $_[0]->{'fileunix'} = $in{'fileunix_def'} ? undef : $in{'fileunix'};
134 $_[0]->{'webminsearch'} = $in{'webminsearch'};
135 }
136