pull/109/head
midoks 4 years ago
parent d356ebd8be
commit 2e592cba04
  1. 51
      plugins/mysql/index.py
  2. 57
      plugins/mysql/js/mysql.js

@ -627,6 +627,46 @@ def __createUser(dbname, username, password, address):
pdb.execute("flush privileges") pdb.execute("flush privileges")
def getDbBackupListFunc(dbname=''):
bkDir = mw.getRootDir() + '/backup/database'
blist = os.listdir(bkDir)
r = []
bname = 'db_' + dbname
blen = len(bname)
for x in blist:
fbstr = x[0:blen]
if fbstr == bname:
r.append(x)
return r
def getDbBackupList(dbname=''):
args = getArgs()
data = checkArgs(args, ['name'])
if not data[0]:
return data[1]
r = getDbBackupListFunc(args['name'])
bkDir = mw.getRootDir() + '/backup/database'
rr = []
for x in xrange(0, len(r)):
p = bkDir + '/' + r[x]
data = {}
data['name'] = r[x]
rsize = os.path.getsize(p)
data['size'] = mw.toSize(rsize)
t = os.path.getctime(p)
t = time.localtime(t)
data['time'] = time.strftime('%Y-%m-%d %H:%M:%S', t)
rr.append(data)
return mw.returnJson(True, 'ok', rr)
def getDbList(): def getDbList():
args = getArgs() args = getArgs()
page = 1 page = 1
@ -650,6 +690,15 @@ def getDbList():
field = 'id,pid,name,username,password,accept,ps,addtime' field = 'id,pid,name,username,password,accept,ps,addtime'
clist = conn.where(condition, ()).field( clist = conn.where(condition, ()).field(
field).limit(limit).order('id desc').select() field).limit(limit).order('id desc').select()
for x in xrange(0, len(clist)):
dbname = clist[x]['name']
blist = getDbBackupListFunc(dbname)
# print(blist)
clist[x]['is_backup'] = False
if len(blist) > 0:
clist[x]['is_backup'] = True
count = conn.where(condition, ()).count() count = conn.where(condition, ()).count()
_page = {} _page = {}
_page['count'] = count _page['count'] = count
@ -1692,6 +1741,8 @@ if __name__ == "__main__":
print(initMysqlPwd()) print(initMysqlPwd())
elif func == 'get_db_list': elif func == 'get_db_list':
print(getDbList()) print(getDbList())
elif func == 'get_db_backup_list':
print(getDbBackupList())
elif func == 'add_db': elif func == 'add_db':
print(addDb()) print(addDb())
elif func == 'del_db': elif func == 'del_db':

@ -842,6 +842,52 @@ function openPhpmyadmin(name,username,password){
},200); },200);
} }
function setBackup(db_name){
myPost('get_db_backup_list', {name:db_name}, function(data){
var rdata = $.parseJSON(data.data);
var tbody = '';
for (var i = 0; i < rdata.data.length; i++) {
tbody += '<tr>\
<td><span style="width:220px;"> ' + rdata.data[i]['name'] + '</span></td>\
<td><span style="width:220px;"> ' + rdata.data[i]['size'] + '</span></td>\
<td><span style="width:220px;"> ' + rdata.data[i]['time'] + '</span></td>\
<td style="text-align: right;">\
<a class="btlink" onclick="repDatabase(\''+ db_name + '\',\'' + rdata.data[i]['name'] + '\')">删除</a>\
</td>\
</tr> ';
}
layer.open({
type: 1,
title: "数据库备份详情",
area: ['600px', '280px'],
closeBtn: 2,
shadeClose: false,
content: '<div class="pd15">\
<div class="db_list">\
<button class="btn btn-success btn-sm" type="button">备份</button>\
</div >\
<div class="divtable">\
<div id="database_fix" style="height:150px;overflow:auto;border:#ddd 1px solid">\
<table class="table table-hover "style="border:none">\
<thead>\
<tr>\
<th>文件名称</th>\
<th>文件大小</th>\
<th>备份时间</th>\
<th style="text-align: right;">操作</th>\
</tr>\
</thead>\
<tbody class="gztr">' + tbody + '</tbody>\
</table>\
</div>\
</div>\
</div>'
});
});
}
function dbList(page, search){ function dbList(page, search){
var _data = {}; var _data = {};
@ -867,10 +913,14 @@ function dbList(page, search){
'<span onclick="showHidePass(this)" class="glyphicon glyphicon-eye-open cursor pw-ico" style="margin-left:10px"></span>'+ '<span onclick="showHidePass(this)" class="glyphicon glyphicon-eye-open cursor pw-ico" style="margin-left:10px"></span>'+
'<span class="ico-copy cursor btcopy" style="margin-left:10px" title="复制密码" onclick="copyPass(\''+rdata.data[i]['password']+'\')"></span>'+ '<span class="ico-copy cursor btcopy" style="margin-left:10px" title="复制密码" onclick="copyPass(\''+rdata.data[i]['password']+'\')"></span>'+
'</td>'; '</td>';
// list += '<td>备份</td>';
list += '<td><span class="c9 input-edit" onclick="setDbPs(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\',this)" style="display: inline-block;">'+rdata.data[i]['ps']+'</span></td>'; list += '<td><span class="c9 input-edit" onclick="setDbPs(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\',this)" style="display: inline-block;">'+rdata.data[i]['ps']+'</span></td>';
list += '<td style="text-align:right">' + list += '<td style="text-align:right">';
'<a href="javascript:;" class="btlink" onclick="openPhpmyadmin(\''+rdata.data[i]['name']+'\',\''+rdata.data[i]['username']+'\',\''+rdata.data[i]['password']+'\')" title="数据库管理">管理</a> | ' +
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\')" title="数据库备份">'+(rdata.data[i]['is_backup']?'备份':'未备份') +'</a> | ';
list += '<a href="javascript:;" class="btlink" onclick="openPhpmyadmin(\''+rdata.data[i]['name']+'\',\''+rdata.data[i]['username']+'\',\''+rdata.data[i]['password']+'\')" title="数据库管理">管理</a> | ' +
'<a href="javascript:;" class="btlink" onclick="repTools(\''+rdata.data[i]['name']+'\')" title="MySQL优化修复工具">工具</a> | ' + '<a href="javascript:;" class="btlink" onclick="repTools(\''+rdata.data[i]['name']+'\')" title="MySQL优化修复工具">工具</a> | ' +
'<a href="javascript:;" class="btlink" onclick="setDbAccess(\''+rdata.data[i]['username']+'\')" title="设置数据库权限">权限</a> | ' + '<a href="javascript:;" class="btlink" onclick="setDbAccess(\''+rdata.data[i]['username']+'\')" title="设置数据库权限">权限</a> | ' +
'<a href="javascript:;" class="btlink" onclick="setDbPass('+rdata.data[i]['id']+',\''+ rdata.data[i]['username'] +'\',\'' + rdata.data[i]['password'] + '\')">改密</a> | ' + '<a href="javascript:;" class="btlink" onclick="setDbPass('+rdata.data[i]['id']+',\''+ rdata.data[i]['username'] +'\',\'' + rdata.data[i]['password'] + '\')">改密</a> | ' +
@ -1620,7 +1670,6 @@ function masterOrSlaveConf(version=''){
getAsyncMasterDbList(); getAsyncMasterDbList();
getAsyncDataList() getAsyncDataList()
} }
}); });
} }
getMasterStatus(); getMasterStatus();

Loading…
Cancel
Save