From 85c62dd51afef9538b3583f3b6445e6953d85f08 Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Wed, 27 Nov 2024 23:59:56 +0800 Subject: [PATCH] update --- web/admin/setup/sql/default.sql | 2 +- web/admin/site/backup.py | 18 ++++++++++++++- web/static/app/site.js | 30 ++++++++++++------------ web/thisdb/__init__.py | 2 ++ web/thisdb/backup.py | 30 +++++++++++++++++------- web/utils/site.py | 41 +++++++++++++++++++++++++++++---- 6 files changed, 93 insertions(+), 30 deletions(-) diff --git a/web/admin/setup/sql/default.sql b/web/admin/setup/sql/default.sql index 2e2c60eff..b4011cf77 100755 --- a/web/admin/setup/sql/default.sql +++ b/web/admin/setup/sql/default.sql @@ -1,9 +1,9 @@ CREATE TABLE IF NOT EXISTS `backup` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `pid` INTEGER, `type` INTEGER, `name` TEXT, - `pid` INTEGER, `filename` TEXT, `size` INTEGER, `add_time` TEXT diff --git a/web/admin/site/backup.py b/web/admin/site/backup.py index e543d81f4..72b978fcf 100644 --- a/web/admin/site/backup.py +++ b/web/admin/site/backup.py @@ -23,7 +23,7 @@ import thisdb from .site import blueprint -# 设置默认站 +# 获取备份列表 @blueprint.route('/get_backup', endpoint='get_backup',methods=['POST']) @panel_login_required def get_backup(): @@ -32,6 +32,22 @@ def get_backup(): site_id = request.form.get('search', '') return MwSites.instance().getBackup(site_id,page=page,size=limit) +# 设置备份 +@blueprint.route('/to_backup', endpoint='to_backup',methods=['POST']) +@panel_login_required +def to_backup(): + site_id = request.form.get('id', '') + return MwSites.instance().toBackup(site_id) + +# 删除备份 +@blueprint.route('/del_backup', endpoint='del_backup',methods=['POST']) +@panel_login_required +def del_backup(): + site_id = request.form.get('id', '') + return MwSites.instance().delBackup(site_id) + + + diff --git a/web/static/app/site.js b/web/static/app/site.js index ff10cea86..50baefff4 100755 --- a/web/static/app/site.js +++ b/web/static/app/site.js @@ -803,7 +803,7 @@ function getBackup(id,name,page) { var ftpdown = "下载 | "; body += ""+frdata.data[i].name+"\ " + (toSize(frdata.data[i].size)) + "\ - " + frdata.data[i].addtime + "\ + " + frdata.data[i].add_time + "\ "+ ftpdown + "删除\ " } @@ -813,9 +813,9 @@ function getBackup(id,name,page) { if(name == 0){ var sBody = "\ - \ - "+body+"\ -
文件名称文件大小打包时间操作
" + 文件名称文件大小打包时间操作\ + "+body+"\ + " $("#webBackupList").html(sBody); $(".page").html(frdata.page); return; @@ -830,17 +830,17 @@ function getBackup(id,name,page) { shift: 0, shadeClose: false, content: "
\ - \ -
\ - \ - \ - \ - \ - " + body + "\ -
文件名称文件大小打包时间操作
\ -
" + frdata.page + "
\ -
\ -
" + \ +
\ + \ + \ + \ + \ + " + body + "\ +
文件名称文件大小打包时间操作
\ +
" + frdata.page + "
\ +
\ + " }); },'json'); } diff --git a/web/thisdb/__init__.py b/web/thisdb/__init__.py index 33f664b8b..41674e2d2 100644 --- a/web/thisdb/__init__.py +++ b/web/thisdb/__init__.py @@ -13,6 +13,8 @@ from .option import * from .sites import * from .site_types import * +from .backup import * + from .domain import * from .binding import * diff --git a/web/thisdb/backup.py b/web/thisdb/backup.py index 5b03532cc..961498b82 100644 --- a/web/thisdb/backup.py +++ b/web/thisdb/backup.py @@ -10,16 +10,27 @@ import core.mw as mw -# 站点-子目录绑定 +__FIELD = 'id,pid,type,name,filename,size,add_time' -__FIELD = 'id,type,name,pid,filename,size,add_time' +def addBackup(pid,name,filename,size,type=0): -def getBackupPage( - site_id = 1, - page = 1, - size = 10, -): - start = (page - 1) * size + add_time = mw.formatDate() + insert_data = { + 'type':type, + 'name':name, + 'pid':pid, + 'filename':filename, + 'size':size, + 'add_time':add_time, + } + mw.M('backup').insert(insert_data) + return True + +def getBackupById(bp_id): + return mw.M('backup').field(__FIELD).where("id=?", (bp_id,)).find() + +def getBackupPage(site_id,page = 1,size = 10): + start = (int(page) - 1) * int(size) limit = str(start) + ',' + str(size) bk_list = mw.M('backup').where('pid=?', (site_id,)).field(__FIELD).limit(limit).order('id desc').select() count = mw.M('backup').where('pid=?', (site_id,)).count() @@ -28,3 +39,6 @@ def getBackupPage( rdata['list'] = bk_list rdata['count'] = count return rdata + +def deleteBackupById(bp_id): + return mw.M('backup').where("id=?", (bp_id,)).delete() diff --git a/web/utils/site.py b/web/utils/site.py index 90f9789b2..5cdb56a4d 100644 --- a/web/utils/site.py +++ b/web/utils/site.py @@ -2351,15 +2351,46 @@ export PATH data = {} data['data'] = info['list'] data['site'] = site_info - data['page'] = mw.getPage({'count':info['count'],'tojs':'getBackup','p':page, 'row':limit}) + data['page'] = mw.getPage({'count':info['count'],'tojs':'getBackup','p':page, 'row':size}) return data + def toBackup(self, site_id): + site_info = thisdb.getSitesById(site_id) + + filename = site_info['name'] + '_' + time.strftime('%Y%m%d_%H%M%S', time.localtime()) + '.zip' + backup_path = mw.getBackupDir() + '/site' + zip_name = backup_path + '/' + filename + if not (os.path.exists(backup_path)): + os.makedirs(backup_path) + exec_log = mw.getPanelDir() + '/logs/panel_exec.log' + cmd = "cd '" + site_info['path'] + "' && zip '" + zip_name + "' -r ./* > " + exec_log + " 2>&1" + mw.execShell(cmd) + + fsize = 0 + if os.path.exists(zip_name): + fsize = os.path.getsize(zip_name) + + thisdb.addBackup(site_id,filename,zip_name,fsize) + + msg = mw.getInfo('备份网站[{1}]成功!', (site_info['name'],)) + mw.writeLog('网站管理', msg) + return mw.returnData(True, '备份成功!') + + def delBackup(self,backup_id): + info = thisdb.getBackupById(backup_id) + if os.path.exists(info['filename']): + os.remove(info['filename']) + msg = mw.getInfo('删除网站[{1}]的备份[{2}]成功!', (info['name'], info['filename'])) + mw.writeLog('网站管理', msg) + + thisdb.deleteBackupById(backup_id) + return mw.returnData(True, '站点删除成功!') + def getPhpVersion(self): - phpVersions = ('00', '52', '53', '54', '55', - '56', '70', '71', '72', '73', - '74', '80', '81', '82', '83', - '84') + phpVersions = ('00', '52', '53', '54', '55', '56', + '70', '71', '72', '73', '74', '80', + '81', '82', '83', '84') data = [] for val in phpVersions: tmp = {}