Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/apps.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-07-20 01:03:02 +0400
committerRobin Appelman <icewind@owncloud.com>2012-07-20 01:03:02 +0400
commita7f7054534241c557f220a882f10a08f990dadfa (patch)
treea1d7b224ea6d3eb75e239086ade4d47f63285985 /user_external
parentd0476dbb34f7f15162d5c80ae9e23fe8e1674335 (diff)
ftp user backend
Diffstat (limited to 'user_external')
-rw-r--r--user_external/appinfo/app.php1
-rw-r--r--user_external/lib/ftp.php45
-rw-r--r--user_external/tests/config.php8
-rw-r--r--user_external/tests/ftp.php34
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'));
+ }
+}