diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults[21~/UserPublicWeb/php smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/php --- smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/php 1969-12-31 17:00:00.000000000 -0700 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/php 2013-10-27 16:34:28.002390969 -0600 @@ -0,0 +1 @@ +enabled diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/PublicAccess smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/PublicAccess --- smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/PublicAccess 1969-12-31 17:00:00.000000000 -0700 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/PublicAccess 2013-10-27 16:35:34.386597294 -0600 @@ -0,0 +1 @@ +local diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/status smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/status --- smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/status 1969-12-31 17:00:00.000000000 -0700 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/status 2013-10-27 16:34:36.753412561 -0600 @@ -0,0 +1 @@ +enabled diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/type smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/type --- smeserver-user-webspace-0.1/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/type 1969-12-31 17:00:00.000000000 -0700 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/db/configuration/defaults/UserPublicWeb/type 2013-10-27 16:33:58.712282844 -0600 @@ -0,0 +1 @@ +service diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule85userdir smeserver-user-webspace-0.1.new/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule85userdir --- smeserver-user-webspace-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule85userdir 1969-12-31 17:00:00.000000000 -0700 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule85userdir 2013-10-27 16:43:46.975302468 -0600 @@ -0,0 +1,9 @@ +{ + my $status = $UserPublicWeb{'status'} || "disabled"; + return " # user-webspace is disabled in this VirtualHost" + unless $status eq 'enabled'; + +$OUT .=" # userdir module\n"; +$OUT .=" LoadModule userdir_module modules/mod_userdir.so\n"; + +} diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/50UserDir00 smeserver-user-webspace-0.1.new/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/50UserDir00 --- smeserver-user-webspace-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/50UserDir00 1969-12-31 17:00:00.000000000 -0700 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/50UserDir00 2013-10-27 16:31:59.666853073 -0600 @@ -0,0 +1,10 @@ + +# UserDir: The name of the directory which is appended onto a user's home +# directory if a ~user request is recieved. +{ + + (defined($UserPublicWeb) && ($UserPublicWeb{'status'} eq "enabled")) + ? "UserDir home/public_html" + : "#UserDir home/public_html" +} + diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50userdir smeserver-user-webspace-0.1.new/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50userdir --- smeserver-user-webspace-0.1/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50userdir 2013-10-27 16:06:07.472028211 -0600 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/90e-smithAccess50userdir 2013-10-27 16:42:23.802028345 -0600 @@ -9,6 +9,57 @@ my $value; my $result = ""; + my $status = $UserPublicWeb{'status'} || "disabled"; + return " # user-webspace is disabled in this VirtualHost" + unless $status eq 'enabled'; + + my $phpglobal = $UserPublicWeb{'php'} || "disabled"; + + my $allow = 'all'; + my $pass = '0'; + my $satisfy = 'all'; + + for ('exit-if-none') + { + if ($UserPublicWeb{'PublicAccess'}) + { + if ($UserPublicWeb{'PublicAccess'} eq 'none') + { + next; + } + elsif ($UserPublicWeb{'PublicAccess'} eq 'local') + { + $allow = $localAccess; + $pass = 0; + $satisfy = 'all'; + } + elsif ($UserPublicWeb{'PublicAccess'} eq 'local-pw') + { + $allow = $localAccess; + $pass = 1; + $satisfy = 'all'; + } + elsif ($UserPublicWeb{'PublicAccess'} eq 'global') + { + $allow = 'all'; + $pass = 0; + $satisfy = 'all'; + } + elsif ($UserPublicWeb{'PublicAccess'} eq 'global-pw') + { + $allow = 'all'; + $pass = 1; + $satisfy = 'all'; + } + elsif ($UserPublicWeb{'PublicAccess'} eq 'global-pw-remote') + { + $allow = $localAccess; + $pass = 1; + $satisfy = 'any'; + } + } + + # Global user dir assignments. Give ~user access # Turned on/off globally through the var UserPublicWeb # eg. to turn on run /sbin/e-smith/config set UserPublicWeb on @@ -24,9 +75,25 @@ if ($type eq 'user') { $result .= "Alias /$key /home/e-smith/files/users/$key/home/public_html\n"; + $result .= "\n"; + $result .= "#-------------------------------------------------------\n"; + $result .= "#$key user dir access directive\n"; + $result .= "#-------------------------------------------------------\n"; + $result .= "\n"; + $result .= " AllowOverride FileInfo AuthConfig Limit\n"; + $result .= " Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec\n"; + + my $phpexec = $properties{''} || $phpglobal; + $result .= " AddType application/x-httpd-php .php .php3 .phtml\n" if $phpexec eq "enabled"; + $result .= " AddType application/x-httpd-php-source .phps\n" if $phpexec eq "enabled"; + $result .= " php_admin_value open_basedir /home/e-smith/files/users/$key/home/public_html/:/home/e-smith/files/users/$key/tmp/:/usr/share/pear\n"; + $result .= " php_admin_value upload_tmp_dir /home/e-smith/files/users/$key/tmp/ \n"; + $result .= "\n"; + } } + $result .= "\n"; $result .= "#-------------------------------------------------------\n"; $result .= "#Generic user dir access directive\n"; @@ -34,6 +101,17 @@ $result .= "\n"; $result .= " AllowOverride FileInfo AuthConfig Limit\n"; $result .= " Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec\n"; + $result .= " order deny,allow\n"; + $result .= " deny from all\n"; + $result .= " allow from $allow\n"; + if ($pass) + { + $result .= " AuthName \"$name\"\n"; + $result .= " AuthType Basic\n"; + $result .= " AuthExternal pwauth\n"; + $result .= " require valid-user\n"; + $result .= " Satisfy $satisfy\n"; + } $result .= " \n"; $result .= " Order allow,deny\n"; $result .= " Allow from all\n"; diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule85userdir smeserver-user-webspace-0.1.new/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule85userdir --- smeserver-user-webspace-0.1/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule85userdir 2013-10-27 16:06:07.475028221 -0600 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/20LoadModule85userdir 1969-12-31 17:00:00.000000000 -0700 @@ -1,7 +0,0 @@ - - # userdir module - LoadModule userdir_module modules/mod_userdir.so - # userdir module - # userdir module - # userdir module - diff -Nur smeserver-user-webspace-0.1/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/50UserDir00 smeserver-user-webspace-0.1.new/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/50UserDir00 --- smeserver-user-webspace-0.1/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/50UserDir00 2013-10-27 16:06:07.469028199 -0600 +++ smeserver-user-webspace-0.1.new/root/etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/50UserDir00 1969-12-31 17:00:00.000000000 -0700 @@ -1,12 +0,0 @@ - -# UserDir: The name of the directory which is appended onto a user's home -# directory if a ~user request is recieved. -{ - my %conf; - tie %conf, 'esmith::config'; - - (defined($conf{'UserPublicWeb'}) && ($conf{'UserPublicWeb'} eq "on")) - ? "UserDir home/public_html" - : "#UserDir home/public_html" -} -