diff -Nur smeserver-shared-folders-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50shares smeserver-shared-folders-0.1_mod/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50shares --- smeserver-shared-folders-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50shares 2012-03-11 18:05:05.000000000 +0100 +++ smeserver-shared-folders-0.1_mod/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50shares 2012-03-11 19:18:21.000000000 +0100 @@ -13,6 +13,8 @@ my $allow; my $pass; my $satisfy; + my $davreaders; + my $davwallow = ''; my $webdav = (($properties{'WebDav'} || 'disabled') =~ m/^(enabled|on|yes)$/i) ? 1 : 0; # Find which users have read or write access @@ -65,35 +67,38 @@ $allow = "$localAccess $externalSSLAccess"; $pass = 0; $satisfy = 'all'; - $webdav = 0; + $davreaders = ''; } elsif ($properties{'httpAccess'} eq 'local-pw') { $allow = "$localAccess $externalSSLAccess"; $pass = 1; $satisfy = 'all'; + $davreaders = "Require user $readers"; } elsif ($properties{'httpAccess'} eq 'global') { $allow = 'all'; $pass = 0; $satisfy = 'all'; - $webdav = 0; + $davreaders = ''; } elsif ($properties{'httpAccess'} eq 'global-pw') { $allow = 'all'; $pass = 1; $satisfy = 'all'; + $davreaders = "Require user $readers"; } elsif ($properties{'httpAccess'} eq 'global-pw-remote') { $allow = "$localAccess $externalSSLAccess"; + $davwallow = 'all'; $pass = 1; $satisfy = 'any'; - $webdav = 0; + $davreaders = "Require user $readers"; } else { next; } } - + $davwallow = $allow if ($davwallow eq ''); my $allowOverride = $properties{'AllowOverride'} || "None"; my $followSymLinks = $properties{'FollowSymLinks'} || "disabled"; my $indexes = $properties{'Indexes'} || "enabled"; @@ -140,26 +145,40 @@ } $OUT .= " AllowOverride $allowOverride\n"; - $OUT .= " order deny,allow\n"; - $OUT .= " deny from all\n"; - $OUT .= " allow from $allow\n"; - if ($pass) { + unless ($webdav){ + $OUT .=<<"HERE"; + order deny,allow + deny from all + allow from $allow +HERE + } + if ($pass || $webdav) { $OUT .= " AuthName \"$properties{'Name'}\"\n"; $OUT .= " AuthType Basic\n"; $OUT .= " AuthExternal pwauth\n"; $OUT .= " require user $readers\n" unless ($webdav); - $OUT .= " Satisfy $satisfy\n"; + $OUT .= " Satisfy $satisfy\n" unless ($webdav); } # WebDav is enabled only when auth is required if ($webdav) { $OUT .=<<"HERE"; Dav on - - Require user $readers + # Read only access + + order deny,allow + deny from all + allow from $allow + $davreaders + Satisfy $satisfy - + # Write access through webdav always requires authentication + + order deny,allow + deny from all + allow from $davwallow Require user $writers + Satisfy all HERE