修正proftp类并实现实时FTP用户控制

This commit is contained in:
wlx 2012-06-25 14:25:48 +00:00
parent 5195b58268
commit 56f317030e
2 changed files with 36 additions and 4 deletions

View File

@ -370,8 +370,8 @@ class Admin_DownController extends Zend_Controller_Action
$rs=$this->db->fetchAll($sql,array($finish)); $rs=$this->db->fetchAll($sql,array($finish));
$has_ftp1=false; $has_ftp1=false;
foreach($rs as $data) { foreach($rs as $data) {
if ($data['host']=='ftp1.westgis.ac.cn') if ($data['host']=='ftp1.westgis.ac.cn')
$has_ftp1=true; $has_ftp1=true;
// deal with ftp.westgis.ac.cn, use g6 to add path // deal with ftp.westgis.ac.cn, use g6 to add path
// todo ... // todo ...
} }
@ -381,7 +381,9 @@ class Admin_DownController extends Zend_Controller_Action
"username"=>"westdc_".$row['userid'], "username"=>"westdc_".$row['userid'],
"password"=>md5('westdc'.$row['userid'].rand(1000,9999)), "password"=>md5('westdc'.$row['userid'].rand(1000,9999)),
"time"=>date('Y-m-d H:i:s', strtotime('+2 week')), "time"=>date('Y-m-d H:i:s', strtotime('+2 week')),
//"path"=>$path, //"path"=>$path,
"param"=>"offlineappid=".$finish,
"host"=>'ftp1.westgis.ac.cn',
"maxdata"=>$this->view->config->download->max, "maxdata"=>$this->view->config->download->max,
"datacount"=>1 //represent one offline application "datacount"=>1 //represent one offline application
); );

View File

@ -7,7 +7,29 @@ class Proftp
function __construct() function __construct()
{ {
} }
// deal with online & offline user
// online user, $user->param is 'onlineappid=xx', xx is number
// offline user, $user->param is 'offlineid=xx', xx is number
function createuser($user) function createuser($user)
{
$this->insert_user($user);
//处理FTP用户目录
if (!empty($user->host))
{
//vist $user->host web
$page=file_get_contents('http://'.$user->host.'/proftp.php?'.$user->param);
if (!empty($page) die($page);//there are errors in visit ftp page
}
return $this->update_pwd($user);
}
/*
* insert user into pureftp table
* param $user: username,
* return null
*/
private function insert_user($user)
{ {
//只插入到users表中 //只插入到users表中
$sql=$this->db->quoteInto("select * from proftpusers where userid=?",$user->username); $sql=$this->db->quoteInto("select * from proftpusers where userid=?",$user->username);
@ -19,6 +41,14 @@ class Proftp
$sql="insert into proftpusers (userid,passwd,uid,gid,homedir) values('".$user->username."','".$user->password."',109,1002,'".'/home/ftp/'.$user->username."')"; $sql="insert into proftpusers (userid,passwd,uid,gid,homedir) values('".$user->username."','".$user->password."',109,1002,'".'/home/ftp/'.$user->username."')";
$this->db->query($sql); $this->db->query($sql);
} }
}
/*
* 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->pwd=$user->password;//初始化
$this->time=$user->time; $this->time=$user->time;
//判断用户密码是否失效,或用户一次下载数据已经达到上限 //判断用户密码是否失效,或用户一次下载数据已经达到上限
@ -49,7 +79,7 @@ class Proftp
$this->time=$u['ts_invalid']; $this->time=$u['ts_invalid'];
return true; return true;
} else //同时下载数据数超过限制 } else //同时下载数据数超过限制
return false; return false;
} }
} }
?> ?>