diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index f5e6d78e77..f594fbb880 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -13,6 +13,7 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ private $user; private $host; private $root; + private $share; private static $tempFiles=array(); @@ -20,17 +21,32 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ $this->host=$params['host']; $this->user=$params['user']; $this->password=$params['password']; + $this->share=$params['share']; $this->root=isset($params['root'])?$params['root']:'/'; + if(substr($this->root,-1,1)!='/'){ + $this->root.='/'; + } + if(substr($this->root,0,1)!='/'){ + $this->root='/'.$this->root; + } + if(substr($this->share,0,1)!='/'){ + $this->share='/'.$this->share; + } + if(substr($this->share,-1,1)=='/'){ + $this->share=substr($this->share,0,-1); + } //create the root folder if necesary - $this->mkdir(''); + if(!$this->is_dir('')){ + $this->mkdir(''); + } } public function constructUrl($path){ if(substr($path,-1)=='/'){ $path=substr($path,0,-1); } - return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; + return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path; } } diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php index 970008d642..e58a87fabd 100644 --- a/apps/files_external/tests/config.php +++ b/apps/files_external/tests/config.php @@ -34,7 +34,8 @@ return array( 'user'=>'test', 'password'=>'test', 'host'=>'localhost', - 'root'=>'/test', + 'share'=>'/test', + 'root'=>'/test/', ), 'amazons3'=>array( 'run'=>false, diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php index 52e1700b01..e1495b7480 100644 --- a/apps/files_external/tests/smb.php +++ b/apps/files_external/tests/smb.php @@ -19,7 +19,7 @@ if(!is_array($config) or !isset($config['smb']) or !$config['smb']['run']){ public function setUp(){ $id=uniqid(); $this->config=include('apps/files_external/tests/config.php'); - $this->config['smb']['root'].='/'.$id;//make sure we have an new empty folder to work in + $this->config['smb']['root'].=$id;//make sure we have an new empty folder to work in $this->instance=new OC_Filestorage_SMB($this->config['smb']); }