From a1fefea66fb9688435948711910b7d25a47759dd Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 8 Jun 2012 01:29:46 +0200 Subject: [PATCH] split share and root config for smb backend, also sanitize config a bit more --- apps/files_external/lib/smb.php | 20 ++++++++++++++++++-- apps/files_external/tests/config.php | 3 ++- apps/files_external/tests/smb.php | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index f5e6d78e776..f594fbb880d 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 35b5fa03863..1b47618e472 100644 --- a/apps/files_external/tests/config.php +++ b/apps/files_external/tests/config.php @@ -34,6 +34,7 @@ return array( 'user'=>'test', 'password'=>'test', 'host'=>'localhost', - 'root'=>'/test', + 'share'=>'/test', + 'root'=>'/test/', ), ); diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php index 52e1700b019..e1495b7480d 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']); } -- 2.39.5