diff -Nur smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares smeserver-shared-folders-0.1_mod/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares --- smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares 2011-07-05 13:58:01.000000000 +0200 +++ smeserver-shared-folders-0.1_mod/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares 2011-07-05 16:08:28.000000000 +0200 @@ -469,6 +469,13 @@ + ERROR_ENCRYPTED_ENABLED + + This shared folder is encrypted and access is enabled. You have to put it in protected mode before removing it + + + + INVALID_INACTIVITY Inactivity value must be numbers only diff -Nur smeserver-shared-folders-0.1/root/etc/e-smith/web/functions/shares smeserver-shared-folders-0.1_mod/root/etc/e-smith/web/functions/shares --- smeserver-shared-folders-0.1/root/etc/e-smith/web/functions/shares 2011-07-05 13:58:01.000000000 +0200 +++ smeserver-shared-folders-0.1_mod/root/etc/e-smith/web/functions/shares 2011-07-05 13:59:19.000000000 +0200 @@ -119,14 +119,7 @@ - - - - DESC_INACTIVITY - - - diff -Nur smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm smeserver-shared-folders-0.1_mod/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm --- smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm 2011-07-05 13:58:01.000000000 +0200 +++ smeserver-shared-folders-0.1_mod/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm 2011-07-05 16:26:51.000000000 +0200 @@ -250,19 +250,31 @@ } - +# If EncFS is available, print encryptions options sub print_encryption_fields { my $self = shift; + + return undef unless(system('rpm -q fuse-encfs 2>&1 > /dev/null') == 0); + my $encryption = $self->{cgi}->param('encryption') || 'disabled'; my $action = $self->{cgi}->param('action') || ''; + my $sharename = $self->{cgi}->param('name') || ''; + + return undef if ($action eq 'modify' && $encryption ne 'enabled'); + + my $inactivity = (($sharename ne '') && ($accountdb->get($sharename))) ? + ($accountdb->get($sharename)->prop('Inactivity') || '30'):'30'; + + print_section_bar(); + print qq() . $self->localise('DESC_ENCRYPTION') . qq(); print qq() . $self->localise('LABEL_ENCRYPTION') . qq(\n); if ($action eq 'modify') { print qq( - $encryption + ) . $self->localise(uc($encryption)) . qq( ); @@ -289,6 +301,14 @@ ); } + print qq() . $self->localise('DESC_INACTIVITY') . qq(); + print qq() . + $self->localise('INACTIVITY') . qq(\n); + print qq( + + + ); + print qq(\n); return undef; @@ -667,10 +687,18 @@ unless ($self->cgi->param('cancel')){ if (my $acct = $accountdb->get($name)) { if ($acct->prop('type') eq 'share') { - $acct->set_prop('type', 'share-deleted'); - # Untaint $name before use in system() $name =~ /(.+)/; $name = $1; + my $encryption = $acct->prop('Encryption') || 'disabled'; + my $mountstatus = `/bin/mount | grep /home/e-smith/files/shares/$name/ | grep -c fuse`; + chomp($mountstatus); + if (($encryption eq 'enabled') && ($mountstatus eq '1')){ + $self->error("ERROR_ENCRYPTED_ENABLED"); + return undef; + } + + $acct->set_prop('type', 'share-deleted'); + if (system ("/sbin/e-smith/signal-event", "share-delete", $name) == 0) { $self->success("SUCCESSFULLY_DELETED_SHARE"); $acct->delete(); @@ -734,7 +762,8 @@ return 'OK' if ($self->{cgi}->param('encryption') eq 'disabled'); - unless (scalar (split("",$pass1)) >= 8){ + my @num = split(//,$pass1); + unless (scalar (@num) >= 8){ return $self->localise('PASSWORD_TOO_SHORT'); } diff -Nur smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/userpanelEncfs.pm smeserver-shared-folders-0.1_mod/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/userpanelEncfs.pm --- smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/userpanelEncfs.pm 2011-07-05 13:58:01.000000000 +0200 +++ smeserver-shared-folders-0.1_mod/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/userpanelEncfs.pm 2011-07-05 16:27:07.000000000 +0200 @@ -83,7 +83,7 @@ my $sharename = $i->key(); my $sharedesc = $i->prop('Name'); - my $mountstatus = `/bin/mount | /bin/grep /home/e-smith/files/shares/$sharename | grep -c fuse`; + my $mountstatus = `/bin/mount | /bin/grep /home/e-smith/files/shares/$sharename/ | grep -c fuse`; chomp($mountstatus); my $sharestatus = ($mountstatus eq '1') ? $self->localise('MOUNTED') : $self->localise('NOT_MOUNTED'); @@ -117,8 +117,11 @@ my $rec = $accountdb->get($share); my $timeout = $rec->prop('InactivityTimeOut') || '30'; $timeout = '30' unless ($timeout =~ m/\d+/); + my $recycle = $rec->prop('RecycleBin') || 'disabled'; + my $recycledir = $rec->prop('RecycleBinDir') || 'Recycle Bin'; my $source = "/home/e-smith/files/shares/$share/.store"; my $dest = "/home/e-smith/files/shares/$share/files"; + $pass =~ s/([;<>\*\|`&\$!#\(\)\[\]\{\}:'"])/\\$1/g; $pass = $1 if ( $pass =~ /(.*)/ ); unless ( system("echo $pass | /usr/bin/encfs -i $timeout -S --public -o nonempty,umask=000 $source $dest > /dev/null 2>&1") == 0){ @@ -126,6 +129,12 @@ return undef; } + if ( !-e $dest . '/' . $recycledir && $recycle eq 'enabled'){ + unless(mkdir $dest . '/' . $recycledir){ + $fm->error('ERROR_MOUNTING'); + } + } + $fm->success('SUCCESS'); }