diff --git a/class/core/site_api.py b/class/core/site_api.py index bea52b504..b22838a08 100755 --- a/class/core/site_api.py +++ b/class/core/site_api.py @@ -53,8 +53,8 @@ class site_api: p = request.form.get('p', '').encode('utf-8') start = (int(p) - 1) * (int(limit)) - _list = public.M('sites').where('', ()).field( - 'id,name,path,status,ps,addtime,edate').limit((str(start)) + ',' + limit).order('id desc').select() + _list = public.M('sites').where('', ()).field('id,name,path,status,ps,addtime,edate').limit( + (str(start)) + ',' + limit).order('id desc').select() _ret = {} _ret['data'] = _list @@ -75,6 +75,69 @@ class site_api: return public.returnJson(True, '修改成功!') return public.returnJson(False, '修改失败!') + def getBackupApi(self): + limit = request.form.get('limit', '').encode('utf-8') + p = request.form.get('p', '').encode('utf-8') + mid = request.form.get('search', '').encode('utf-8') + + find = public.M('sites').where("id=?", (mid,)).field( + "id,name,path,status,ps,addtime,edate").find() + + start = (int(p) - 1) * (int(limit)) + _list = public.M('backup').where('type=?', (mid,)).field('id,type,name,pid,filename,size,addtime').limit( + (str(start)) + ',' + limit).order('id desc').select() + _ret = {} + _ret['data'] = _list + + count = public.M('backup').where("id=?", (mid,)).count() + info = {} + info['count'] = count + info['tojs'] = 'getBackup' + info['p'] = p + info['row'] = limit + _ret['page'] = public.getPage(info) + _ret['site'] = find + return public.getJson(_ret) + + def toBackupApi(self): + mid = request.form.get('id', '').encode('utf-8') + find = public.M('sites').where( + "id=?", (mid,)).field('name,path,id').find() + fileName = find['name'] + '_' + \ + time.strftime('%Y%m%d_%H%M%S', time.localtime()) + '.zip' + backupPath = public.getBackupDir() + '/site' + zipName = backupPath + '/' + fileName + if not (os.path.exists(backupPath)): + os.makedirs(backupPath) + tmps = '/tmp/panelExec.log' + execStr = "cd '" + find['path'] + "' && zip '" + \ + zipName + "' -r ./* > " + tmps + " 2>&1" + # print execStr + # print public.execShell(execStr) + + if os.path.exists(zipName): + fsize = os.path.getsize(zipName) + else: + fsize = 0 + sql = public.M('backup').add('type,name,pid,filename,size,addtime', + (mid, fileName, find['id'], zipName, fsize, public.getDate())) + + msg = public.getInfo('备份网站[{1}]成功!', (find['name'],)) + public.writeLog('网站管理', msg) + return public.returnJson(True, '备份成功!') + + def delBackupApi(self): + mid = request.form.get('id', '').encode('utf-8') + filename = public.M('backup').where( + "id=?", (mid,)).getField('filename') + if os.path.exists(filename): + os.remove(filename) + name = public.M('backup').where("id=?", (mid,)).getField('name') + msg = public.getInfo('删除网站[{1}]的备份[{2}]成功!', (name, filename)) + public.writeLog('网站管理', msg) + public.M('backup').where("id=?", (mid,)).delete() + return public.returnJson(True, '站点删除成功!') + def getPhpVersionApi(self): return self.getPhpVersion() @@ -767,7 +830,7 @@ class site_api: data['filename'] = filename return public.getJson(data) - # 修改物理路径 + # 修改物理路径 def setPathApi(self): mid = request.form.get('id', '').encode('utf-8') path = request.form.get('path', '').encode('utf-8') diff --git a/route/static/app/site.js b/route/static/app/site.js index c288e154d..568932fe8 100755 --- a/route/static/app/site.js +++ b/route/static/app/site.js @@ -32,9 +32,9 @@ function getWeb(page, search) { //是否有备份 if (data.data[i].backup_count > 0) { - var backup = ""+lan.site.backup_yes+""; + var backup = "有备份"; } else { - var backup = ""+lan.site.backup_no+""; + var backup = "无备份"; } //是否设置有效期 var web_end_time = (data.data[i].edate == "0000-00-00") ? lan.site.web_end_time : data.data[i].edate; @@ -809,13 +809,13 @@ function isDomain(domain) { * @param {String} name 主域名 */ function webBackup(id, name) { - var loadT =layer.msg(lan.database.backup_the, {icon:16,time:0,shade: [0.3, '#000']}); - var data = "id="+id; - $.post('/site?action=ToBackup', data, function(rdata) { + var loadT =layer.msg('正在备份,请稍候...', {icon:16,time:0,shade: [0.3, '#000']}); + $.post('/site/to_backup', "id="+id, function(rdata) { layer.closeAll(); - layer.msg(rdata.msg,{icon:rdata.status?1:2}) + layer.msg(rdata.msg,{icon:rdata.status?1:2}); + getBackup(id); - }); + },'json'); } /** @@ -825,69 +825,63 @@ function webBackup(id, name) { * @param {String} name 主域名 */ function webBackupDelete(id,pid){ - layer.confirm(lan.site.webback_del_confirm,{title:lan.site.del_bak_file,icon:3,closeBtn:2},function(index){ - var loadT =layer.msg(lan.public.the_del, {icon:16,time:0,shade: [0.3, '#000']}); - $.post('/site?action=DelBackup','id='+id, function(rdata){ + layer.confirm('真的要删除备份包吗?',{title:'删除备份文件!',icon:3,closeBtn:2},function(index){ + var loadT =layer.msg('正在删除,请稍候...', {icon:16,time:0,shade: [0.3, '#000']}); + $.post('/site/del_backup','id='+id, function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); getBackup(pid); - }); + },'json'); }) } function getBackup(id,name,page) { - + if(page == undefined){ page = '1'; } - - $.post('/data?action=getFind','table=sites&id=' + id, function(rdata) { - $.post('/data?action=getData','table=backup&search=' + id + '&limit=5&p='+page+'&type=0&tojs=getBackup',function(frdata){ - - var body = ''; - for (var i = 0; i < frdata.data.length; i++) { - if(frdata.data[i].type == '1') continue; - if(frdata.data[i].filename.length < 15){ - var ftpdown = "下载 | "; - }else{ - var ftpdown = "下载 | "; - } - body += ""+frdata.data[i].name+"\ - " + (ToSize(frdata.data[i].size)) + "\ - " + frdata.data[i].addtime + "\ - "+ ftpdown + ""+lan.public.del+"\ - " + $.post('/site/get_backup','search=' + id + '&limit=5&p='+page, function(frdata){ + var body = ''; + for (var i = 0; i < frdata.data.length; i++) { + if(frdata.data[i].type == '1') { + continue; } - var ftpdown = ''; - frdata.page = frdata.page.replace(/'/g,'"').replace(/getBackup\(/g,"getBackup(" + id + ",0,"); - - if(name == 0){ - var sBody = "\ - \ - "+body+"\ -
文件名称文件大小打包时间操作
" - $("#WebBackupList").html(sBody); - $(".page").html(frdata.page); - return; + + var ftpdown = "下载 | "; + body += ""+frdata.data[i].name+"\ + " + (toSize(frdata.data[i].size)) + "\ + " + frdata.data[i].addtime + "\ + "+ ftpdown + "删除\ + " } - layer.closeAll(); - layer.open({ - type: 1, - skin: 'demo-class', - area: '700px', - title: lan.site.backup_title, - closeBtn: 2, - shift: 0, - shadeClose: false, - content: "
\ - \ -
\ - \ - "+body+"\ -
文件名称文件大小打包时间操作
"+frdata.page+"
" - }); - }); + var ftpdown = ''; + frdata.page = frdata.page.replace(/'/g,'"').replace(/getBackup\(/g,"getBackup(" + id + ",0,"); + if(name == 0){ + var sBody = "\ + \ + "+body+"\ +
文件名称文件大小打包时间操作
" + $("#webBackupList").html(sBody); + $(".page").html(frdata.page); + return; + } + layer.closeAll(); + layer.open({ + type: 1, + skin: 'demo-class', + area: '700px', + title: '打包备份', + closeBtn: 2, + shift: 0, + shadeClose: false, + content: "
\ + \ +
\ + \ + "+body+"\ +
文件名称文件大小打包时间操作
"+frdata.page+"
" + }); },'json'); }