From: Marco Michelino Date: Mon, 11 Apr 2011 14:33:04 +0000 (+0200) Subject: Allow specification of / filestorage in $CONFIG_FILESYSTEM X-Git-Tag: v3.0~267^2~560 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d4fa3f91eec13461ed5639aebc462e07f2123728;p=nextcloud-server.git Allow specification of / filestorage in $CONFIG_FILESYSTEM --- diff --git a/inc/lib_base.php b/inc/lib_base.php index 715082986b3..f51feb3e147 100644 --- a/inc/lib_base.php +++ b/inc/lib_base.php @@ -125,27 +125,9 @@ class OC_UTIL { @mkdir($CONFIG_DATADIRECTORY_ROOT) or die("Can't create data directory ($CONFIG_DATADIRECTORY_ROOT), you can usually fix this by setting the owner of '$SERVERROOT' to the user that the web server uses (www-data for debian/ubuntu)"); } if(OC_USER::isLoggedIn()){ //if we aren't logged in, there is no use to set up the filesystem - //first set up the local "root" storage and the backupstorage if needed - $rootStorage=OC_FILESYSTEM::createStorage('local',array('datadir'=>$CONFIG_DATADIRECTORY)); - if($CONFIG_ENABLEBACKUP){ - if(!is_dir($CONFIG_BACKUPDIRECTORY)){ - mkdir($CONFIG_BACKUPDIRECTORY); - } - if(!is_dir($CONFIG_BACKUPDIRECTORY.'/'.$_SESSION['username_clean'])){ - mkdir($CONFIG_BACKUPDIRECTORY.'/'.$_SESSION['username_clean']); - } - $backupStorage=OC_FILESYSTEM::createStorage('local',array('datadir'=>$CONFIG_BACKUPDIRECTORY)); - $backup=new OC_FILEOBSERVER_BACKUP(array('storage'=>$backupStorage)); - $rootStorage->addObserver($backup); - } - OC_FILESYSTEM::mount($rootStorage,'/'); - - $CONFIG_DATADIRECTORY=$CONFIG_DATADIRECTORY_ROOT.'/'.$_SESSION['username_clean']; - if(!is_dir($CONFIG_DATADIRECTORY)){ - mkdir($CONFIG_DATADIRECTORY); - } - - //set up the other storages according to the system settings + $rootStorage=null; + + //set up storages according to the system settings foreach($CONFIG_FILESYSTEM as $storageConfig){ if(OC_FILESYSTEM::hasStorageType($storageConfig['type'])){ $arguments=$storageConfig; @@ -154,9 +136,34 @@ class OC_UTIL { $storage=OC_FILESYSTEM::createStorage($storageConfig['type'],$arguments); if($storage){ OC_FILESYSTEM::mount($storage,$storageConfig['mountpoint']); + if($storageConfig['mountpoint']=='/'){ + $rootStorage=$storage; + } } } } + + //create root filestorage if not specified in system settings + if(!$rootStorage){ + $rootStorage=OC_FILESYSTEM::createStorage('local',array('datadir'=>$CONFIG_DATADIRECTORY)); + OC_FILESYSTEM::mount($rootStorage,'/'); + $CONFIG_DATADIRECTORY=$CONFIG_DATADIRECTORY_ROOT.'/'.$_SESSION['username_clean']; + if(!is_dir($CONFIG_DATADIRECTORY)){ + mkdir($CONFIG_DATADIRECTORY); + } + } + + if($CONFIG_ENABLEBACKUP){ + if(!is_dir($CONFIG_BACKUPDIRECTORY)){ + mkdir($CONFIG_BACKUPDIRECTORY); + } + if(!is_dir($CONFIG_BACKUPDIRECTORY.'/'.$_SESSION['username_clean'])){ + mkdir($CONFIG_BACKUPDIRECTORY.'/'.$_SESSION['username_clean']); + } + $backupStorage=OC_FILESYSTEM::createStorage('local',array('datadir'=>$CONFIG_BACKUPDIRECTORY)); + $backup=new OC_FILEOBSERVER_BACKUP(array('storage'=>$backupStorage)); + $rootStorage->addObserver($backup); + } //jail the user into his "home" directory OC_FILESYSTEM::chroot('/'.$_SESSION['username_clean']);