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