#!/usr/local/bin/perl # edit_sec.cgi # Edit security options for some file or print share require './samba-lib.pl'; &ReadParse(); # check acls &error_setup("$text{'eacl_aviol'}"); &error("$text{'eacl_np'} $text{'eacl_pvsec'}") unless &can('rs', \%access, $in{'share'}); # display $s = $in{'share'}; if ($s eq "global") { &ui_print_header(undef, $text{'sec_index1'}, ""); } else { &ui_print_header(undef, $text{'sec_index2'}, ""); print "
",&text('fmisc_for', $s), "
\n"; } &get_share($s); print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'share_security'}
\n"; print "\n"; print "\n"; print "\n"; printf "\n", &istrue("public") && &istrue("guest only") ? "checked" : ""; print "\n"; &username_input("guest account", "Default"); print "\n"; print "\n"; print "\n"; printf "\n", &getval("allow hosts"); print "\n"; printf "\n", &getval("deny hosts"); print "\n"; print "\n"; @valid_users = &split_users(&getval("valid users")); print "\n", join(' ', grep { !/^@/ } @valid_users), &user_chooser_button("valid_users_u", 1); print "\n", join(' ', map { s/@//;$_ } grep { /^@/ } @valid_users), &group_chooser_button("valid_users_g", 1); @invalid_users = &split_users(&getval("invalid users")); print "\n", join(' ', grep { !/^@/ } @invalid_users), &user_chooser_button("invalid_users_u", 1); print "\n", join(' ', map { s/@//;$_ } grep { /^@/ } @invalid_users), &group_chooser_button("invalid_users_g", 1); print "\n"; @user = &split_users(&getval("user")); print "\n", join(' ', grep { !/^@/ } @user), &user_chooser_button("user_u", 1); print "\n", join(' ', map { s/@//;$_ } grep { /^@/ } @user), &group_chooser_button("user_g", 1); @read_list = &split_users(&getval("read list")); print "\n", join(' ', grep { !/^@/ } @read_list), &user_chooser_button("read_list_u", 1); print "\n", join(' ', map { s/@//;$_ } grep { /^@/ } @read_list), &group_chooser_button("read_list_g", 1); @write_list = &split_users(&getval("write list")); print "\n", join(' ', grep { !/^@/ } @write_list), &user_chooser_button("write_list_u", 1); print "\n", join(' ', map { s/@//;$_ } grep { /^@/ } @write_list), &group_chooser_button("write_list_g", 1); print "
$text{'sec_writable'}",&yesno_input("writeable"),"$text{'sec_guest'} $text{'config_none'}\n", &istrue("public") ? "" : "checked"; printf " $text{'yes'}\n", &istrue("public") && !&istrue("guest only") ? "checked" : ""; printf " $text{'sec_guestonly'}
$text{'sec_guestaccount'}$text{'sec_limit'}",&yesno_input("only user"),"
$text{'sec_allowhost'} $text{'config_all'}\n", &getval("allow hosts") eq "" ? "checked" : ""; print "  \n"; printf " $text{'sec_onlyallow'}:\n", &getval("allow hosts") eq "" ? "" : "checked"; printf "
$text{'sec_denyhost'} $text{'config_none'}\n", &getval("deny hosts") eq "" ? "checked" : ""; print "  \n"; printf " $text{'sec_onlydeny'}:\n", &getval("deny hosts") eq "" ? "" : "checked"; printf "
$text{'sec_revalidate'}",&yesno_input("revalidate"),"
$text{'sec_validuser'} \n"; printf " %s
$text{'sec_validgroup'} \n"; printf " %s
$text{'sec_invaliduser'} \n"; printf " %s
$text{'sec_invalidgroup'} \n"; printf " %s

$text{'sec_possibleuser'} \n"; printf " %s$text{'sec_possiblegroup'} \n"; printf " %s
$text{'sec_rouser'} \n"; printf " %s$text{'sec_rogroup'} \n"; printf " %s
$text{'sec_rwuser'} \n"; printf " %s$text{'sec_rwgroup'} \n"; printf " %s
\n"; print "

\n"; print "" if &can('wS', \%access, $in{'share'}); print "

\n"; if (&istrue("printable") || $in{'printer'}) { &ui_print_footer("edit_pshare.cgi?share=".&urlize($s), $text{'index_printershare'}, "", $text{'index_sharelist'}); } else { &ui_print_footer("edit_fshare.cgi?share=".&urlize($s), $text{'index_fileshare'}, "", $text{'index_sharelist'}); } sub split_users { return split(/\s*,\s*/, $_[0]); }