diff options
author | Robin Appelman <icewind@owncloud.com> | 2012-07-20 01:03:02 +0400 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2012-07-20 01:03:02 +0400 |
commit | a7f7054534241c557f220a882f10a08f990dadfa (patch) | |
tree | a1d7b224ea6d3eb75e239086ade4d47f63285985 /user_external | |
parent | d0476dbb34f7f15162d5c80ae9e23fe8e1674335 (diff) |
ftp user backend
Diffstat (limited to 'user_external')
-rw-r--r-- | user_external/appinfo/app.php | 1 | ||||
-rw-r--r-- | user_external/lib/ftp.php | 45 | ||||
-rw-r--r-- | user_external/tests/config.php | 8 | ||||
-rw-r--r-- | user_external/tests/ftp.php | 34 |
4 files changed, 87 insertions, 1 deletions
diff --git a/user_external/appinfo/app.php b/user_external/appinfo/app.php index 66320da95..c7408ec30 100644 --- a/user_external/appinfo/app.php +++ b/user_external/appinfo/app.php @@ -1,3 +1,4 @@ <?php OC::$CLASSPATH['OC_User_IMAP']='apps/user_external/lib/imap.php'; OC::$CLASSPATH['OC_User_SMB']='apps/user_external/lib/smb.php'; +OC::$CLASSPATH['OC_User_FTP']='apps/user_external/lib/ftp.php'; diff --git a/user_external/lib/ftp.php b/user_external/lib/ftp.php new file mode 100644 index 000000000..e03e17d2b --- /dev/null +++ b/user_external/lib/ftp.php @@ -0,0 +1,45 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class OC_User_FTP extends OC_User_Backend{ + private $host; + private $secure; + private $protocol; + + public function __construct($host,$secure=false){ + $this->host=$host; + $this->secure=$secure; + $this->protocol='ftp'; + if($this->secure){ + $this->protocol.='s'; + } + $this->protocol.='://'; + } + + /** + * @brief Check if the password is correct + * @param $uid The username + * @param $password The password + * @returns true/false + * + * Check if the password is correct without logging in the user + */ + public function checkPassword($uid, $password){ + $url=$this->protocol.$uid.':'.$password.'@'.$this->host.'/'; + $result=@opendir($url); + if(is_resource($result)){ + return $uid; + }else{ + return false; + } + } + + public function userExists($uid){ + return true; + } +} diff --git a/user_external/tests/config.php b/user_external/tests/config.php index a72b2bbce..64ee141d3 100644 --- a/user_external/tests/config.php +++ b/user_external/tests/config.php @@ -14,7 +14,13 @@ return array( 'password'=>'bar', ), 'smb'=>array( - 'run'=>true, + 'run'=>false, + 'host'=>'localhost', + 'user'=>'test',//valid username/password combination + 'password'=>'test', + ), + 'ftp'=>array( + 'run'=>false, 'host'=>'localhost', 'user'=>'test',//valid username/password combination 'password'=>'test', diff --git a/user_external/tests/ftp.php b/user_external/tests/ftp.php new file mode 100644 index 000000000..0cf7565f9 --- /dev/null +++ b/user_external/tests/ftp.php @@ -0,0 +1,34 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class Test_User_FTP extends UnitTestCase{ + /** + * @var OC_User_IMAP $instance + */ + private $instance; + + private function getConfig(){ + return include(__DIR__.'/config.php'); + } + + function skip(){ + $config=$this->getConfig(); + $this->skipUnless($config['ftp']['run']); + } + + function setUp(){ + $config=$this->getConfig(); + $this->instance=new OC_User_FTP($config['ftp']['host']); + } + + function testLogin(){ + $config=$this->getConfig(); + $this->assertEqual($config['ftp']['user'],$this->instance->checkPassword($config['ftp']['user'],$config['ftp']['password'])); + $this->assertFalse($this->instance->checkPassword($config['ftp']['user'],$config['ftp']['password'].'foo')); + } +} |