3 # Edit security options for some file or print share
5 require './samba-lib.pl';
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'});
15 &ui_print_header(undef, $text{'sec_index1'}, "");
18 &ui_print_header(undef, $text{'sec_index2'}, "");
19 print "<center><font size=+1>",&text('fmisc_for', $s), "</font></center>\n";
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";
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";
31 print "<tr> <td align=right><b>$text{'sec_writable'}</b></td>\n";
32 print "<td>",&yesno_input("writeable"),"</td>\n";
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" : "";
42 print "<tr> <td align=right><b>$text{'sec_guestaccount'}</b></td>\n";
43 &username_input("guest account", "Default");
45 print "<td align=right><b>$text{'sec_limit'}</b></td>\n";
46 print "<td>",&yesno_input("only user"),"</td> </tr>\n";
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 " \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");
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 " \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");
66 print "<tr> <td align=right><b>$text{'sec_revalidate'}</b></td>\n";
67 print "<td>",&yesno_input("revalidate"),"</td> </tr>\n";
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);
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);
89 print "<tr> <td colspan=4><hr></td> </tr>\n";
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);
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);
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);
121 print "</table><table border width=100%>\n";
123 print "</table> </td></tr></table><p>\n";
124 print "<input type=submit value=$text{'save'}>"
125 if &can('wS', \%access, $in{'share'});
128 if (&istrue("printable") || $in{'printer'}) {
129 &ui_print_footer("edit_pshare.cgi?share=".&urlize($s), $text{'index_printershare'}, "", $text{'index_sharelist'});
132 &ui_print_footer("edit_fshare.cgi?share=".&urlize($s), $text{'index_fileshare'}, "", $text{'index_sharelist'});
138 return split(/\s*,\s*/, $_[0]);