diff --git a/class/core/config_api.py b/class/core/config_api.py index 72821da45..51ae9f88a 100755 --- a/class/core/config_api.py +++ b/class/core/config_api.py @@ -15,7 +15,7 @@ from flask import request class config_api: - __version = '0.10.0.1' + __version = '0.10.0.2' def __init__(self): pass diff --git a/plugins/mysql/index.py b/plugins/mysql/index.py index b8c65fbe2..0cb47f8be 100755 --- a/plugins/mysql/index.py +++ b/plugins/mysql/index.py @@ -827,6 +827,56 @@ def setDbBackup(): return mw.returnJson(True, 'ok') +def importDbExternal(): + args = getArgs() + data = checkArgs(args, ['file', 'name']) + if not data[0]: + return data[1] + + file = args['file'] + name = args['name'] + + import_dir = mw.getRootDir() + '/backup/import/' + + file_path = import_dir + file + if not os.path.exists(file_path): + return mw.returnJson(False, '文件突然消失?') + + import_sql = "" + if file.find("sql.gz") > -1: + cmd = 'cd ' + import_dir + ' && gzip -dc ' + \ + file + " > " + import_dir + "tmp.sql" + info = mw.execShell(cmd) + if info[1] == "": + import_sql = import_dir + "tmp.sql" + + if file.find(".zip") > -1: + cmd = 'cd ' + import_dir + ' && unzip ' + file + mw.execShell(cmd) + + if file.find("tar.gz") > -1: + cmd = 'cd ' + import_dir + ' && tar -zxvf ' + file + mw.execShell(cmd) + + if import_sql == "": + cmd = 'cd ' + import_dir + ' && ls && grep ".sql$"' + sql_name = mw.execShell(cmd) + import_sql = import_dir + sql_name[0] + + if import_sql == "": + return mw.returnJson(False, '未找SQL文件') + + pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root') + sock = getSocketFile() + mysql_cmd = getServerDir() + '/bin/mysql -S ' + sock + ' -uroot -p' + \ + pwd + ' ' + name + ' < ' + import_sql + + os.system(mysql_cmd) + os.remove(import_sql) + + return mw.returnJson(True, 'ok') + + def importDbBackup(): args = getArgs() data = checkArgs(args, ['file', 'name']) @@ -855,13 +905,17 @@ def importDbBackup(): def deleteDbBackup(): args = getArgs() - data = checkArgs(args, ['filename']) + data = checkArgs(args, ['filename', 'path']) if not data[0]: return data[1] + path = args['path'] + full_file = "" bkDir = mw.getRootDir() + '/backup/database' - - os.remove(bkDir + '/' + args['filename']) + full_file = bkDir + '/' + args['filename'] + if path != "": + full_file = path + "/" + args['filename'] + os.remove(full_file) return mw.returnJson(True, 'ok') @@ -893,6 +947,39 @@ def getDbBackupList(): return mw.returnJson(True, 'ok', rr) +def getDbBackupImportList(): + + bkImportDir = mw.getRootDir() + '/backup/import' + if not os.path.exists(bkImportDir): + os.mkdir(bkImportDir) + + blist = os.listdir(bkImportDir) + + rr = [] + for x in range(0, len(blist)): + name = blist[x] + p = bkImportDir + '/' + name + data = {} + data['name'] = name + + 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) + + data['file'] = p + + rdata = { + "list": rr, + "upload_dir": bkImportDir, + } + return mw.returnJson(True, 'ok', rdata) + + def getDbList(): args = getArgs() page = 1 @@ -2427,10 +2514,14 @@ if __name__ == "__main__": print(setDbBackup()) elif func == 'import_db_backup': print(importDbBackup()) + elif func == 'import_db_external': + print(importDbExternal()) elif func == 'delete_db_backup': print(deleteDbBackup()) elif func == 'get_db_backup_list': print(getDbBackupList()) + elif func == 'get_db_backup_import_list': + print(getDbBackupImportList()) elif func == 'add_db': print(addDb()) elif func == 'del_db': diff --git a/route/static/app/files.js b/route/static/app/files.js index 01ce125db..0d3367af4 100755 --- a/route/static/app/files.js +++ b/route/static/app/files.js @@ -1323,7 +1323,8 @@ function uploadFiles(){ title:lan.files.up_title, area: ['500px','300px'], shadeClose:false, - content:'