Handle hostnames with upper-case letters
[webmin.git] / samba / edit_sec.cgi
1 #!/usr/local/bin/perl
2 # edit_sec.cgi
3 # Edit security options for some file or print share
4
5 require './samba-lib.pl';
6 &ReadParse();
7 # check acls
8
9 &error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
10 &error("$text{'eacl_np'} $text{'eacl_pvsec'}")
11         unless &can('rs', \%access, $in{'share'});
12 # display
13 $s = $in{'share'};
14 if ($s eq "global") {
15         &ui_print_header(undef, $text{'sec_index1'}, "");
16         }
17 else {
18         &ui_print_header(undef, $text{'sec_index2'}, "");
19         print "<center><font size=+1>",&text('fmisc_for', $s), "</font></center>\n";
20         }
21 &get_share($s);
22
23 print "<form action=save_sec.cgi>\n";
24 print "<input type=hidden name=old_name value=\"$s\">\n";
25 print "<input type=hidden name=printer value=\"$in{'printer'}\">\n";
26
27 print "<table border width=100%>\n";
28 print "<tr $tb> <td><b>$text{'share_security'}</b></td> </tr>\n";
29 print "<tr $cb> <td><table width=100%>\n";
30
31 print "<tr> <td align=right><b>$text{'sec_writable'}</b></td>\n";
32 print "<td>",&yesno_input("writeable"),"</td>\n";
33
34 print "<td align=right><b>$text{'sec_guest'}</b></td>\n";
35 printf "<td><input type=radio name=guest value=0 %s> $text{'config_none'}\n",
36         &istrue("public") ? "" : "checked";
37 printf "<input type=radio name=guest value=1 %s> $text{'yes'}\n",
38         &istrue("public") && !&istrue("guest only") ? "checked" : "";
39 printf "<input type=radio name=guest value=2 %s> $text{'sec_guestonly'}</td> </tr>\n",
40         &istrue("public") && &istrue("guest only") ? "checked" : "";
41
42 print "<tr> <td align=right><b>$text{'sec_guestaccount'}</b></td>\n";
43 &username_input("guest account", "Default");
44
45 print "<td align=right><b>$text{'sec_limit'}</b></td>\n";
46 print "<td>",&yesno_input("only user"),"</td> </tr>\n";
47
48 print "<tr> <td align=right><b>$text{'sec_allowhost'}</b></td>\n";
49 printf "<td colspan=3><input type=radio name=allow_hosts_all value=1 %s> $text{'config_all'}\n",
50         &getval("allow hosts") eq "" ? "checked" : "";
51 print "&nbsp;&nbsp;\n";
52 printf "<input type=radio name=allow_hosts_all value=0 %s> $text{'sec_onlyallow'}:\n",
53         &getval("allow hosts") eq "" ? "" : "checked";
54 printf "<input name=allow_hosts size=35 value=\"%s\"></td> </tr>\n",
55         &getval("allow hosts");
56
57 print "<tr> <td align=right><b>$text{'sec_denyhost'}</b></td>\n";
58 printf "<td colspan=3><input type=radio name=deny_hosts_all value=1 %s> $text{'config_none'}\n",
59         &getval("deny hosts") eq "" ? "checked" : "";
60 print "&nbsp;&nbsp;\n";
61 printf "<input type=radio name=deny_hosts_all value=0 %s> $text{'sec_onlydeny'}:\n",
62         &getval("deny hosts") eq "" ? "" : "checked";
63 printf "<input name=deny_hosts size=35 value=\"%s\"></td> </tr>\n",
64         &getval("deny hosts");
65
66 print "<tr> <td align=right><b>$text{'sec_revalidate'}</b></td>\n";
67 print "<td>",&yesno_input("revalidate"),"</td> </tr>\n";
68
69 @valid_users = &split_users(&getval("valid users"));
70 print "<tr> <td align=right><b>$text{'sec_validuser'}</b></td> <td colspan=3>\n";
71 printf "<input name=valid_users_u size=60 value='%s'> %s</td> </tr>\n",
72         join(' ', grep { !/^@/ } @valid_users),
73         &user_chooser_button("valid_users_u", 1);
74 print "<tr> <td align=right><b>$text{'sec_validgroup'}</b></td> <td colspan=3>\n";
75 printf "<input name=valid_users_g size=60 value='%s'> %s</td> </tr>\n",
76         join(' ', map { s/@//;$_ } grep { /^@/ } @valid_users),
77         &group_chooser_button("valid_users_g", 1);
78
79 @invalid_users = &split_users(&getval("invalid users"));
80 print "<tr> <td align=right><b>$text{'sec_invaliduser'}</b></td> <td colspan=3>\n";
81 printf "<input name=invalid_users_u size=60 value='%s'> %s</td> </tr>\n",
82         join(' ', grep { !/^@/ } @invalid_users),
83         &user_chooser_button("invalid_users_u", 1);
84 print "<tr> <td align=right><b>$text{'sec_invalidgroup'}</b></td> <td colspan=3>\n";
85 printf "<input name=invalid_users_g size=60 value='%s'> %s</td> </tr>\n",
86         join(' ', map { s/@//;$_ } grep { /^@/ } @invalid_users),
87         &group_chooser_button("invalid_users_g", 1);
88
89 print "<tr> <td colspan=4><hr></td> </tr>\n";
90
91 @user = &split_users(&getval("user"));
92 print "<tr> <td align=right><b>$text{'sec_possibleuser'}</b></td> <td>\n";
93 printf "<input name=user_u size=30 value='%s'> %s</td>\n",
94         join(' ', grep { !/^@/ } @user),
95         &user_chooser_button("user_u", 1);
96 print "<td align=right><b>$text{'sec_possiblegroup'}</b></td> <td colspan=3>\n";
97 printf "<input name=user_g size=30 value='%s'> %s</td> </tr>\n",
98         join(' ', map { s/@//;$_ } grep { /^@/ } @user),
99         &group_chooser_button("user_g", 1);
100
101 @read_list = &split_users(&getval("read list"));
102 print "<tr> <td align=right><b>$text{'sec_rouser'}</b></td> <td>\n";
103 printf "<input name=read_list_u size=30 value='%s'> %s</td>\n",
104         join(' ', grep { !/^@/ } @read_list),
105         &user_chooser_button("read_list_u", 1);
106 print "<td align=right><b>$text{'sec_rogroup'}</b></td> <td colspan=3>\n";
107 printf "<input name=read_list_g size=30 value='%s'> %s</td> </tr>\n",
108         join(' ', map { s/@//;$_ } grep { /^@/ } @read_list),
109         &group_chooser_button("read_list_g", 1);
110
111 @write_list = &split_users(&getval("write list"));
112 print "<tr> <td align=right><b>$text{'sec_rwuser'}</b></td> <td>\n";
113 printf "<input name=write_list_u size=30 value='%s'> %s</td>\n",
114         join(' ', grep { !/^@/ } @write_list),
115         &user_chooser_button("write_list_u", 1);
116 print "<td align=right><b>$text{'sec_rwgroup'}</b></td> <td>\n";
117 printf "<input name=write_list_g size=30 value='%s'> %s</td> </tr>\n",
118         join(' ', map { s/@//;$_ } grep { /^@/ } @write_list),
119         &group_chooser_button("write_list_g", 1);
120
121 print "</table><table border width=100%>\n";
122
123 print "</table> </td></tr></table><p>\n";
124 print "<input type=submit value=$text{'save'}>" 
125         if &can('wS', \%access, $in{'share'});
126 print "</form>\n";
127
128 if (&istrue("printable") || $in{'printer'}) {
129         &ui_print_footer("edit_pshare.cgi?share=".&urlize($s), $text{'index_printershare'}, "", $text{'index_sharelist'});
130         }
131 else {
132         &ui_print_footer("edit_fshare.cgi?share=".&urlize($s), $text{'index_fileshare'}, "", $text{'index_sharelist'});
133         }
134
135
136 sub split_users
137 {
138 return split(/\s*,\s*/, $_[0]);
139 }
140