diff --git a/application/admin/controllers/DataController.php b/application/admin/controllers/DataController.php
index 87131096..982632de 100755
--- a/application/admin/controllers/DataController.php
+++ b/application/admin/controllers/DataController.php
@@ -654,6 +654,115 @@ class Admin_DataController extends Zend_Controller_Action
echo '
数据目录未导入!
';
}
}
+ //ftp manage
+ else if($ac == "ftp")
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ $uuid = $this->_getParam('uuid');
+
+ $this->view->uuid = $uuid;
+
+ if(empty($uuid) || !preg_match("/^[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}$/",$uuid))
+ {
+ $data = array(
+ 'error'=>"参数错误"
+ );
+ $this->jsonexit($data);
+ return true;
+ }
+
+ //ftp 用户名
+ $auth = Zend_Auth::getInstance();
+ $u_id = $auth->getIdentity()->id;
+ $uname = 'sjy'.$u_id.'admin';
+
+ //ftp路径
+ $sql="select * from dataset where uuid='$uuid'";
+ $rs=$this->db->query($sql);
+ $row=$rs->fetch();
+ $homedir=$row['path'];
+ $host=$row['host'];
+ //$homedir = "/data/upload/".$uuid."/";
+ //ftp用户表
+ $ftptable=' pureftp ';
+ $uid = 1002;
+ $gid = 1002;
+
+ $sql = "SELECT * FROM $ftptable WHERE userid='$uname' ORDER BY pkid DESC";
+ $sth = $this->db->prepare($sql);
+ $sth->execute();
+ $row = $sth->fetch();
+
+ //create directory for upload
+ //server is not localhost, so we need a trick
+ //$old=umask(0);
+ //@mkdir($homedir,0777);
+ //umask($old);
+ $page=file_get_contents('http://ftp.sanjiangyuan.org.cn/proftp_upload.php?uuid='.$uuid);
+ if (!empty($page)) die($page);//there are errors in visit ftp page
+
+
+ if(!empty($row['pkid']))
+ {
+ if(preg_match("/.*".$uuid.".*/",$row['homedir']))
+ {
+ $data = array(
+ 'statu'=>1,
+ 'user'=>$row['userid'],
+ 'passwd'=>$row['passwd']
+ );
+
+ $this->jsonexit($data);
+ return true;
+
+ }else{
+ $passwd = $this->genRandomString(16);
+ $sql="update ".$ftptable." SET passwd='".$passwd."',uid=".$uid.",gid=".$gid.",homedir='".$homedir."' WHERE userid='".$uname."'";
+ $rs=$this->db->query($sql);
+ if($rs)
+ {
+ $data = array(
+ 'statu'=>1,
+ 'user'=>$uname,
+ 'passwd'=>$passwd
+ );
+ $this->jsonexit($data);
+ return true;
+ }else{
+ $data = array(
+ 'error'=>"FTP信息更新失败,请重试"
+ );
+ $this->jsonexit($data);
+ return true;
+ }
+ }
+ }
+
+ else{
+ $passwd = $this->genRandomString(16);
+
+ $sql="insert into ".$ftptable." (userid,passwd,uid,gid,homedir) values('".$uname."','".$passwd."',".$uid.",".$gid.",'".$homedir."')";
+ $rs=$this->db->query($sql);
+ if($rs)
+ {
+ $data = array(
+ 'statu'=>1,
+ 'user'=>$uname,
+ 'passwd'=>$passwd
+ );
+ $this->jsonexit($data);
+ return true;
+ }else{
+ $data = array(
+ 'error'=>"FTP信息更新失败,请重试"
+ );
+ $this->jsonexit($data);
+ return true;
+ }
+ }//end if
+ }//ftp
}//datasetAction存档管理
@@ -4292,5 +4401,27 @@ class Admin_DataController extends Zend_Controller_Action
public function jsonexit($data){
$this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK));
return true;
- }//jsonexit() 退出并返回json数据
+ }//jsonexit() 退出并返回json数据
+
+ private function genRandomString($len)
+ {
+ $chars = array(
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
+ "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
+ "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
+ "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
+ "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
+ "3", "4", "5", "6", "7", "8", "9"
+ );
+ $charsLen = count($chars) - 1;
+
+ shuffle($chars); // 将数组打乱
+
+ $output = "";
+ for ($i=0; $i<$len; $i++)
+ {
+ $output .= $chars[mt_rand(0, $charsLen)];
+ }
+ return $output;
+ }
}
diff --git a/application/admin/views/scripts/data/md.phtml b/application/admin/views/scripts/data/md.phtml
index 17ebddc2..fa746fe7 100644
--- a/application/admin/views/scripts/data/md.phtml
+++ b/application/admin/views/scripts/data/md.phtml
@@ -70,12 +70,13 @@
编辑数据来源 |
数据路径 |
- 重新导入数据目录 |
+ 重新导入数据目录 |
+ 数据FTP管理 |
设置数据路径 |
邮件通知 |
- 数据可视化
+ 数据可视化
@@ -91,4 +92,36 @@ $(".inline").colorbox({inline:true, width:"50%"});
function Alert(html){
$.colorbox({'innerWidth':'50%','html':''+html+'
'});
}
+function getFtp(uuid){
+ $.ajax({
+ 'type':"POST",
+ 'url':'/admin/data/dataset/ac/ftp/uuid/'+uuid,
+ 'data':'',
+ 'success':function(data){
+ if (typeof(data)=='object')
+ {
+ if(typeof(data.error)!='undefined')
+ {Alert(data.error);return false;}
+ if(typeof(data.statu)!='undefined')
+ {
+ if(data.statu > 0)
+ {
+ var html = '临时FTP帐号信息(此帐号仅对应当前数据集!)
ftp://ftp.sanjiangyuan.org.cn/
'+
+ '用户名:'+data.user+
+ '
密码:'+data.passwd+'
'
+ +'或直接点击此链接
';
+ Alert(html);
+ }
+ }
+ }
+ else{
+ Alert('出现错误,请稍候再试');
+ }
+ },
+ 'timeout': 30000,
+ 'error': function(){
+ Alert('处理中出现错误,请刷新页面后重试');
+ }
+ });
+}
\ No newline at end of file