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{'php'} || $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"
-}
-