]> source.dussan.org Git - nextcloud-server.git/commitdiff
Allow specification of / filestorage in $CONFIG_FILESYSTEM
authorMarco Michelino <michelinux@gmail.com>
Mon, 11 Apr 2011 14:33:04 +0000 (16:33 +0200)
committerMarco Michelino <michelinux@gmail.com>
Mon, 11 Apr 2011 14:33:04 +0000 (16:33 +0200)
inc/lib_base.php

index 715082986b34454f52ef13ca03a3b3171a258de1..f51feb3e147cf81731ecb10c88ef6521f2e5bb6c 100644 (file)
@@ -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']);