aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external/lib/smb.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/lib/smb.php')
-rw-r--r--apps/files_external/lib/smb.php46
1 files changed, 24 insertions, 22 deletions
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index 96778b0b2e1..961efb1a50a 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -18,22 +18,26 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
private $share;
public function __construct($params) {
- $this->host=$params['host'];
- $this->user=$params['user'];
- $this->password=$params['password'];
- $this->share=$params['share'];
- $this->root=isset($params['root'])?$params['root']:'/';
- if ( ! $this->root || $this->root[0]!='/') {
- $this->root='/'.$this->root;
- }
- if (substr($this->root, -1, 1)!='/') {
- $this->root.='/';
- }
- if ( ! $this->share || $this->share[0]!='/') {
- $this->share='/'.$this->share;
- }
- if(substr($this->share, -1, 1)=='/') {
- $this->share = substr($this->share,0,-1);
+ if (isset($params['host']) && isset($params['user']) && isset($params['password']) && isset($params['share'])) {
+ $this->host=$params['host'];
+ $this->user=$params['user'];
+ $this->password=$params['password'];
+ $this->share=$params['share'];
+ $this->root=isset($params['root'])?$params['root']:'/';
+ if ( ! $this->root || $this->root[0]!='/') {
+ $this->root='/'.$this->root;
+ }
+ if (substr($this->root, -1, 1)!='/') {
+ $this->root.='/';
+ }
+ if ( ! $this->share || $this->share[0]!='/') {
+ $this->share='/'.$this->share;
+ }
+ if (substr($this->share, -1, 1)=='/') {
+ $this->share = substr($this->share, 0, -1);
+ }
+ } else {
+ throw new \Exception();
}
}
@@ -45,7 +49,10 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
if (substr($path, -1)=='/') {
$path=substr($path, 0, -1);
}
- return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path;
+ $path = urlencode($path);
+ $user = urlencode($this->user);
+ $pass = urlencode($this->password);
+ return 'smb://'.$user.':'.$pass.'@'.$this->host.$this->share.$this->root.$path;
}
public function stat($path) {
@@ -59,11 +66,6 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
}
}
- public function filetype($path) {
- // using opendir causes the same amount of requests and caches the content of the folder in one go
- return (bool)@$this->opendir($path) ? 'dir' : 'file';
- }
-
/**
* check if a file or folder has been updated since $time
* @param string $path