- don't delete everything if the path is the domains document-root (protect basedir, awstats|webalizer-dir and place default index), fixes #273

refs #273
This commit is contained in:
Michael Kaufmann (d00p)
2010-06-24 08:11:43 +00:00
parent 67c55c5a25
commit 57124d040d
3 changed files with 25 additions and 5 deletions

View File

@@ -264,7 +264,18 @@ class ApsInstaller extends ApsParser
$this->db->query('DELETE FROM `' . TABLE_APS_SETTINGS . '` WHERE `InstanceID` = ' . $this->db->escape($Row['InstanceID']));
//remove data, #273
self::UnlinkRecursive($this->RealPath . $this->DomainPath . '/');
if($this->DomainPath != '' && $this->DomainPath != '/') {
self::UnlinkRecursive($this->RealPath . $this->DomainPath . '/');
} else {
// save awstats/webalizer folder if it's the docroot
self::UnlinkRecursive($this->RealPath . $this->DomainPath . '/', true);
// place standard-index file
$loginname = getLoginNameByUid($Row['CustomerID']);
if($loginname !== false)
{
storeDefaultIndex($loginname, $this->RealPath . $this->DomainPath . '/');
}
}
}
}

View File

@@ -400,9 +400,9 @@ class ApsParser
* unlink files recursively
*
* @param dir directory to delete recursive
* @param boolean whether the base-directory should be kept or not
*/
protected function UnlinkRecursive($Dir)
protected function UnlinkRecursive($Dir, $save_base = false)
{
if(!$DirHandle = @opendir($Dir))return;
@@ -411,6 +411,12 @@ class ApsParser
if($Object == '.'
|| $Object == '..')continue;
if($save_base
&& (strtoupper($Object) == 'AWSTATS' || strtoupper($Object) == 'WEBALIZER')
) {
continue;
}
if(!@unlink($Dir . '/' . $Object))
{
self::UnlinkRecursive($Dir . '/' . $Object);
@@ -418,7 +424,10 @@ class ApsParser
}
closedir($DirHandle);
@rmdir($Dir);
if(!$save_base)
{
@rmdir($Dir);
}
}
/**