]> source.dussan.org Git - nextcloud-server.git/commitdiff
initial mount configuration work
authorRobin Appelman <icewind@owncloud.com>
Tue, 24 Apr 2012 22:08:45 +0000 (00:08 +0200)
committerRobin Appelman <icewind@owncloud.com>
Tue, 24 Apr 2012 22:12:12 +0000 (00:12 +0200)
lib/filesystem.php

index dc678fba74c3d45a14c55b06e08e5250b6303306..1b91eabc7c17a553e1e05ff9374280ff84123b8f 100644 (file)
@@ -196,9 +196,57 @@ class OC_Filesystem{
                        return false;
                }
                self::$defaultInstance=new OC_FilesystemView($root);
+
+               //load custom mount config
+               if(is_file(OC::$SERVERROOT.'/config/mount.php')){
+                       $mountConfig=include(OC::$SERVERROOT.'/config/mount.php');
+                       if(isset($mountConfig['global'])){
+                               foreach($mountConfig['global'] as $mountPoint=>$options){
+                                       self::mount($options['class'],$options['options'],$mountPoint);
+                               }
+                       }
+
+                       if(isset($mountConfig['group'])){
+                               foreach($mountConfig['group'] as $group=>$mounts){
+                                       if(OC_Group::inGroup(OC_User::getUser(),$group)){
+                                               foreach($mounts as $mountPoint=>$options){
+                                                       $mountPoint=self::setUserVars($mountPoint);
+                                                       foreach($options as &$option){
+                                                               $option=self::setUserVars($option);
+                                                       }
+                                                       self::mount($options['class'],$options['options'],$mountPoint);
+                                               }
+                                       }
+                               }
+                       }
+
+                       if(isset($mountConfig['user'])){
+                               foreach($mountConfig['user'] as $user=>$mounts){
+                                       if($user==='all' or strtolower($user)===strtolower(OC_User::getUser())){
+                                               foreach($mounts as $mountPoint=>$options){
+                                                       $mountPoint=self::setUserVars($mountPoint);
+                                                       foreach($options as &$option){
+                                                               $option=self::setUserVars($option);
+                                                       }
+                                                       self::mount($options['class'],$options['options'],$mountPoint);
+                                               }
+                                       }
+                               }
+                       }
+               }
+               
                self::$loaded=true;
        }
 
+       /**
+        * fill in the correct values for $user, and $password placeholders
+        * @param string intput
+        * @return string
+        */
+       private static function setUserVars($input){
+               return str_replace('$user',OC_User::getUser(),$input);
+       }
+
        /**
         * get the default filesystem view
         * @return OC_FilesystemView