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: ""
- });
- });
+ 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: ""
+ });
},'json');
}