split share and root config for smb backend, also sanitize config a bit more

This commit is contained in:
Robin Appelman 2012-06-08 01:29:46 +02:00
parent 8fcce55e76
commit a1fefea66f
3 changed files with 21 additions and 4 deletions

View File

@ -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;
}
}

View File

@ -34,6 +34,7 @@ return array(
'user'=>'test',
'password'=>'test',
'host'=>'localhost',
'root'=>'/test',
'share'=>'/test',
'root'=>'/test/',
),
);

View File

@ -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']);
}