copy Pureftp class from qinghaihu branch, #274
This commit is contained in:
parent
37670a58ab
commit
ec9e709607
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
class Pureftp
|
||||
{
|
||||
public $db;
|
||||
public $pwd;
|
||||
public $time;
|
||||
public $data_path='/home/wlx/qhhdata';
|
||||
|
||||
function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
// deal with online & offline user
|
||||
// online user, the $user->path is a string, which is a path omit the $data_path (e.g., /test/data means the physical path is $data_path/test/data)
|
||||
// offline user, the $user->path is an array of string
|
||||
function createuser($user)
|
||||
{
|
||||
$this->insert_user($user);
|
||||
// add system link directory
|
||||
if (is_array($user->path))
|
||||
{
|
||||
foreach ($user->path as $path)
|
||||
symlink($path,'/home/ftp/'.$user->username.'/'.str_replace('/','-',substr($path,strlen($this->data_path)+1)));
|
||||
} else {
|
||||
//online path, only one path
|
||||
symlink($this->data_path.$user->path,'/home/ftp/'.$user->username.'/'.str_replace('/','-',substr($user->path,1)));
|
||||
}
|
||||
return $this->update_pwd($user);
|
||||
}
|
||||
|
||||
/*
|
||||
* insert user into pureftp table
|
||||
* param $user: username,
|
||||
* return null
|
||||
*/
|
||||
private function insert_user($user)
|
||||
{
|
||||
//插入到pureftp表中
|
||||
$sql=$this->db->quoteInto("select * from pureftp where userid=?",$user->username);
|
||||
$u=$this->db->fetchRow($sql);
|
||||
if (empty($u))
|
||||
{
|
||||
$sql="insert into pureftp (userid,passwd,homedir) values('".$user->username."','".$user->password."','".'/home/ftp/'.$user->username."')";
|
||||
$this->db->query($sql);
|
||||
//create user home dir
|
||||
mkdir('/home/ftp/'.$user->username);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* update password in the table used by pureftp
|
||||
* param $user: password,id,time,username
|
||||
* return: bool
|
||||
*/
|
||||
private function update_pwd($user)
|
||||
{
|
||||
$this->pwd=$user->password;//初始化
|
||||
$this->time=$user->time;
|
||||
//判断用户密码是否失效,或用户一次下载数据已经达到上限
|
||||
$sql=$this->db->quoteInto("select * from ftpuser where userid=?",$user->id);
|
||||
$u=$this->db->fetchRow($sql);
|
||||
if (empty($u)) {
|
||||
//插入ftpuser信息
|
||||
$sql="insert into ftpuser (userid,pwd,ts_created,ts_invalid,datacount) values(?,?,now(),?,1)";
|
||||
$this->db->query($sql,array($user->id,$user->password,$user->time));
|
||||
return true;
|
||||
} elseif (strtotime($u['ts_invalid'])<=time() or $u['datacount']<1) {
|
||||
//更新用户密码和数据计数
|
||||
$sql="update pureftp set passwd='".$user->password."' where userid='".$user->username."'";
|
||||
//$this->db->query($sql,array($user->password,$user->username));
|
||||
$this->db->query($sql);
|
||||
$sql="update ftpuser set pwd=?,ts_created=now(),ts_invalid=?,datacount=1 where userid=?";
|
||||
$this->db->query($sql,array($user->password,$user->time,$user->id));
|
||||
return true;
|
||||
} elseif (strtotime($u['ts_invalid'])>time()/* && $u['datacount']<$user->maxdata*/) {
|
||||
//更新数据计数
|
||||
//同步ftpuser和pureftp用户密码
|
||||
$sql="update ftpuser set ts_invalid=?,datacount=datacount+?,pwd=pureftp.passwd
|
||||
from pureftp where ftpuser.userid=? and pureftp.userid=?";
|
||||
$this->db->query($sql,array($user->time,$user->datacount,$user->id,$user->username));
|
||||
$sql="select pwd,ts_invalid from ftpuser where userid=?";
|
||||
$u=$this->db->fetchRow($sql,array($user->id));
|
||||
$this->pwd=$u['pwd'];
|
||||
$this->time=$u['ts_invalid'];
|
||||
return true;
|
||||
} else //同时下载数据数超过限制
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
Reference in New Issue