- don't create absolut paths additionally as relative paths in customers docroot, fixes #259

This commit is contained in:
Michael Kaufmann (d00p)
2010-06-04 05:50:23 +00:00
parent d256ddfcbc
commit 323e2210c3
3 changed files with 22 additions and 12 deletions

View File

@@ -27,6 +27,7 @@
* @param int The uid of the user * @param int The uid of the user
* @param int The gid of the user * @param int The gid of the user
* @param bool Place standard-index.html into the new folder * @param bool Place standard-index.html into the new folder
* @param bool Allow creating a directory out of the customers docroot
* *
* @return bool true if everything went okay, false if something went wrong * @return bool true if everything went okay, false if something went wrong
* *
@@ -34,7 +35,7 @@
* @author Martin Burchert <martin.burchert@syscp.org> * @author Martin Burchert <martin.burchert@syscp.org>
*/ */
function mkDirWithCorrectOwnership($homeDir, $dirToCreate, $uid, $gid, $placeindex = false) function mkDirWithCorrectOwnership($homeDir, $dirToCreate, $uid, $gid, $placeindex = false, $allow_notwithinhomedir = false)
{ {
$returncode = true; $returncode = true;
@@ -47,24 +48,33 @@ function mkDirWithCorrectOwnership($homeDir, $dirToCreate, $uid, $gid, $placeind
if(substr($dirToCreate, 0, strlen($homeDir)) == $homeDir) if(substr($dirToCreate, 0, strlen($homeDir)) == $homeDir)
{ {
$subdir = substr($dirToCreate, strlen($homeDir)); $subdir = substr($dirToCreate, strlen($homeDir));
$within_homedir = true;
} }
else else
{ {
$subdir = $dirToCreate; $subdir = $dirToCreate;
$within_homedir = false;
} }
$subdir = makeCorrectDir($subdir); $subdir = makeCorrectDir($subdir);
$subdirlen = strlen($subdir); $subdirs = array();
$subdirs = array();
array_push($subdirs, $dirToCreate);
$offset = 0;
while($offset < $subdirlen) if($within_homedir || !$allow_notwithinhomedir)
{ {
$offset = strpos($subdir, '/', $offset); $subdirlen = strlen($subdir);
$subdirelem = substr($subdir, 0, $offset); $offset = 0;
$offset++;
array_push($subdirs, makeCorrectDir($homeDir . $subdirelem)); while($offset < $subdirlen)
{
$offset = strpos($subdir, '/', $offset);
$subdirelem = substr($subdir, 0, $offset);
$offset++;
array_push($subdirs, makeCorrectDir($homeDir . $subdirelem));
}
}
else
{
array_push($subdirs, $dirToCreate);
} }
$subdirs = array_unique($subdirs); $subdirs = array_unique($subdirs);

View File

@@ -677,7 +677,7 @@ class apache
} }
} }
mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid'], true); mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid'], true, true);
$vhost_content.= $this->getWebroot($domain); $vhost_content.= $this->getWebroot($domain);
$vhost_content.= $this->composePhpOptions($domain); $vhost_content.= $this->composePhpOptions($domain);
$vhost_content.= $this->getStats($domain); $vhost_content.= $this->getStats($domain);

View File

@@ -368,7 +368,7 @@ class lighttpd
} }
else else
{ {
mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid'], true); mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid'], true, true);
$vhost_content.= $this->getWebroot($domain, $ssl_vhost); $vhost_content.= $this->getWebroot($domain, $ssl_vhost);
$vhost_content.= $this->create_htaccess($domain); $vhost_content.= $this->create_htaccess($domain);