diff --git a/application/models/Proftp.php b/application/models/Proftp.php new file mode 100644 index 00000000..3fc9e043 --- /dev/null +++ b/application/models/Proftp.php @@ -0,0 +1,58 @@ +db->quoteInto("select * from proftpusers where userid=?",$user->username); + $u=$this->db->fetchRow($sql); + if (empty($u)) + { + $sql=$this->db->quoteInto("insert into proftpusers (userid,passwd,uid,gid,homedir) values(?,?,109,1002,?)",$user->username,$user->userpass,'/home/ftp/'.$user->username); + $this->db->query($sql); + $sql=$this->db->quoteInto("select pkid from proftpusers where userid=?",$user->username); + $a=$this->db->fetchRow($sql); + $userid = $a['pkid']; + } else $userid=$u['id'];//g6ftp中的用户ID,非系统的用户ID + $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)); + //todo: create users home directory + return true; + } elseif (strtotime($u['ts_invalid'])<=time() or $u['datacount']<1) { + //更新用户密码、数据地址和数据计数 + //数据地址覆盖原来的信息 + //todo: 重置用户目录下的可用文件/目录。 + $sql=$this->db->quoteInto("update proftpusers set passwd=? where userid=?",$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) { + //更新数据地址和数据计数 + //数据地址要追加在原来的后面 + //需要判断数据是否已经在下载进程中 + $sql="update ftpuser set ts_invalid=?,datacount=? where userid=?"; + $this->db->query($sql,array($user->time,$user->datacount+1,$user->id)); + $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; + } +} +?> \ No newline at end of file