| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/libexec/webmin/samba/ |
Upload File : |
#!/usr/bin/perl
# save_pshare.cgi
# Save a new or edited printer share
require './samba-lib.pl';
&ReadParse();
&lock_file($config{'smb_conf'});
&get_share($in{old_name}) if $in{old_name};
if ($in{'view'}) {
# Redirect to view connections page
&redirect("view_users.cgi?share=".&urlize($in{'share'})."&printer=1");
exit;
}
elsif ($in{'delete'}) {
# Redirect to delete form
&redirect("delete_share.cgi?share=".&urlize($in{'share'}).
"&type=pshare");
exit;
}
# check acls
&error_setup("$text{'eacl_aviol'}ask_epass.cgi");
if ($in{old_name}) {
&error("$text{'eacl_np'} $text{'eacl_pus'}")
unless &can('rw', \%access, $in{old_name});
}
else {
&error("$text{'eacl_np'} $text{'eacl_pcrs'}") unless $access{'c_ps'};
}
&error_setup($text{'savepshare_fail'});
if ($in{old_name} eq "global") {
$name = "global";
}
else {
# store share options
$name = $in{printers} ? "printers" : $in{"share"};
}
#if ($in{"path"} !~ /\S/ && !$in{"printers"}) {
# &error("No spool directory given");
# }
&setval("printer", $in{"printer"});
&setval("path", $in{"path"});
&setval("available", $in{"available"});
&setval("browseable", $in{"browseable"});
if ($name ne "global") { &setval("printable", "yes"); }
&setval("comment", $in{"comment"});
# Check for clash
if ($name ne "global") {
foreach (&list_shares()) {
$exists{$_}++;
}
if (!$in{old_name} && $exists{$name}) {
&error(&text('savepshare_exist', $name));
}
elsif ($in{old_name} ne $name && $exists{$name}) {
&error(&text('savepshare_exist', $name));
}
elsif ($name !~ /^[A-Za-z0-9_\$\- ]+$/) {
&error(&text('savepshare_name', $name));
}
elsif ($name eq "global") {
&error($text{'savepshare_global'});
}
}
# Update config file
if ($in{old_name}) {
# Changing an existing share
&modify_share($in{old_name}, $name);
if ($name ne $in{old_name}) {
local $oldacl=$access{'ACLps_' . $in{old_name}};
&drop_samba_acl(\%access, $in{old_name});
&save_samba_acl($oldacl, \%access, $name);
}
}
else {
# Creating a new share
&create_share($name);
&save_samba_acl('rwvVsSoO', \%access, $name);
}
&unlock_file($config{'smb_conf'});
&webmin_log($in{old_name} ? "save" : "create", "pshare", $name, \%in);
&redirect("");