diff -Nur -x '*.orig' -x '*.rej' smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify --- smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify 2010-03-08 10:45:06.000000000 +0100 +++ mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify 2010-03-08 10:40:59.000000000 +0100 @@ -40,6 +40,8 @@ my $share = $accountdb->get($shareName) or die "Couldn't find $shareName record in accounts db\n"; +my $perm = $share->prop('ManualPermissions') || 'no'; + die "Account $shareName is not an share account; modify share event failed.\n" unless ($share->prop('type') eq 'share'); @@ -127,11 +129,14 @@ } # Purge Old ACLs before defining new ones +# Don't reset permissions if ManualPermissions is set to 'yes' -system($setfacl, +unless ( $perm eq 'yes' || $perm eq 'enabled' ){ + system($setfacl, '-R', '--remove-all', '.'); -find(\&process, glob("./")); + find(\&process, glob("./")); +} diff -Nur -x '*.orig' -x '*.rej' smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares mezzanine_patched_smeserver-shared-folders-0.1/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 2010-03-08 10:45:06.000000000 +0100 +++ mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares 2010-03-08 10:44:49.000000000 +0100 @@ -356,4 +356,10 @@ + + MANUAL_PERMS + + Permissions on this shared folder are managed manually, you cannot change it.

]]> +
+
diff -Nur -x '*.orig' -x '*.rej' smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm mezzanine_patched_smeserver-shared-folders-0.1/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 2010-03-08 10:45:06.000000000 +0100 +++ mezzanine_patched_smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm 2010-03-08 10:40:59.000000000 +0100 @@ -218,6 +218,8 @@ ($rec->prop('Indexes') || 'enabled')); $q->param(-name=>'dynamic',-value=> ($rec->prop('DynamicContent') || 'disabled')); + $q->param(-name=>'manualPerm',-value=> + ($rec->prop('ManualPermissions') || 'no')); } } else { @@ -243,39 +245,44 @@ my $WriteGroups = $q->param('WriteGroups') || ''; my $ReadGroups = $q->param('ReadGroups') || ''; my $share = $q->param('share'); + my $manualPerm = $q->param('manualPerm') || ''; - my %WriteGroups; - my %ReadGroups; - foreach my $group ( split ( /[,;]/, $WriteGroups ) ) { - $WriteGroups{$group} = 1; - } - foreach my $group ( split ( /[,;]/, $ReadGroups ) ) { - $ReadGroups{$group} = 1; - } - my @groups = sort { $a->key() cmp $b->key() } $accountdb->groups(); - - my $out = "" . - $fm->localise('PERMISSIONS') . - "\n". - $q->start_table({-class => "sme-border"})."\n". - $q->Tr( - esmith::cgi::genSmallCell($q, $fm->localise('GROUPS'),"header"), - esmith::cgi::genSmallCell($q, $fm->localise('WRITE_PERM'),"header"), - esmith::cgi::genSmallCell($q, $fm->localise('READ_PERM'),"header") - ); - - foreach my $group (@groups) { - my $write = ""; - my $read = ""; - my $name = $group->key(); - if ( $WriteGroups{$name} ) { - $write = "checked"; + if (($manualPerm eq 'yes') || ($manualPerm eq 'enabled')){ + return $fm->localise('MANUAL_PERMS'); + } + else { + my %WriteGroups; + my %ReadGroups; + foreach my $group ( split ( /[,;]/, $WriteGroups ) ) { + $WriteGroups{$group} = 1; } - if ( $ReadGroups{$name} ) { - $read = "checked"; + foreach my $group ( split ( /[,;]/, $ReadGroups ) ) { + $ReadGroups{$group} = 1; } + my @groups = sort { $a->key() cmp $b->key() } $accountdb->groups(); + + my $out = "" . + $fm->localise('PERMISSIONS') . + "\n". + $q->start_table({-class => "sme-border"})."\n". + $q->Tr( + esmith::cgi::genSmallCell($q, $fm->localise('GROUPS'),"header"), + esmith::cgi::genSmallCell($q, $fm->localise('WRITE_PERM'),"header"), + esmith::cgi::genSmallCell($q, $fm->localise('READ_PERM'),"header") + ); - $out .= $q->Tr( + foreach my $group (@groups) { + my $write = ""; + my $read = ""; + my $name = $group->key(); + if ( $WriteGroups{$name} ) { + $write = "checked"; + } + if ( $ReadGroups{$name} ) { + $read = "checked"; + } + + $out .= $q->Tr( esmith::cgi::genSmallCell($q, $name, "normal"), esmith::cgi::genSmallCell($q,"", "normal") ); - } + } - $out .= "\n"; - return $out; + $out .= "\n"; + return $out; + } } # Print a section bar