Allow specification of / filestorage in $CONFIG_FILESYSTEM
This commit is contained in:
parent
6c4b06390e
commit
d4fa3f91ee
|
@ -125,8 +125,34 @@ 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));
|
||||
$rootStorage=null;
|
||||
|
||||
//set up storages according to the system settings
|
||||
foreach($CONFIG_FILESYSTEM as $storageConfig){
|
||||
if(OC_FILESYSTEM::hasStorageType($storageConfig['type'])){
|
||||
$arguments=$storageConfig;
|
||||
unset($arguments['type']);
|
||||
unset($arguments['mountpoint']);
|
||||
$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);
|
||||
|
@ -138,25 +164,6 @@ class OC_UTIL {
|
|||
$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
|
||||
foreach($CONFIG_FILESYSTEM as $storageConfig){
|
||||
if(OC_FILESYSTEM::hasStorageType($storageConfig['type'])){
|
||||
$arguments=$storageConfig;
|
||||
unset($arguments['type']);
|
||||
unset($arguments['mountpoint']);
|
||||
$storage=OC_FILESYSTEM::createStorage($storageConfig['type'],$arguments);
|
||||
if($storage){
|
||||
OC_FILESYSTEM::mount($storage,$storageConfig['mountpoint']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//jail the user into his "home" directory
|
||||
OC_FILESYSTEM::chroot('/'.$_SESSION['username_clean']);
|
||||
|
|
Loading…
Reference in New Issue