diff --git a/plugins/data_query/nosql_mongodb.py b/plugins/data_query/nosql_mongodb.py index be990231a..32d5ca0f2 100755 --- a/plugins/data_query/nosql_mongodb.py +++ b/plugins/data_query/nosql_mongodb.py @@ -7,6 +7,7 @@ import time import re import pymongo import json +import yaml from bson.objectid import ObjectId from bson.json_util import dumps @@ -139,15 +140,14 @@ class nosqlMongodb(): self.__DB_PORT = int(self.__config['port']) auth = getConfAuth() - self.__DB_PORT = getConfPort() + port = getConfPort() mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root') - # print(auth,self.__DB_HOST,self.__DB_PORT, self.__DB_PASS) + # print(auth,self.__DB_HOST,port, self.__DB_PASS) try: if auth == 'disabled': - self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=self.__DB_PORT, directConnection=True) + self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=port, directConnection=True) else: - self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=self.__DB_PORT, directConnection=True, username='root',password=mg_root) - # self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=self.__DB_PORT, maxPoolSize=10,directConnection=True) + self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=port, directConnection=True, username='root',password=mg_root) self.__DB_CONN.admin.command('ping') return self.__DB_CONN except pymongo.errors.ConnectionFailure: diff --git a/plugins/mongodb/index.py b/plugins/mongodb/index.py index 62dbf7df0..b767b8a9e 100755 --- a/plugins/mongodb/index.py +++ b/plugins/mongodb/index.py @@ -1131,6 +1131,37 @@ def getDbBackupList(): return mw.returnJson(True, 'ok', rr) +def getDbBackupImportList(): + + bkImportDir = mw.getRootDir() + '/backup/mongodb_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 deleteDbBackup(): args = getArgs() @@ -1158,6 +1189,57 @@ def setDbBackup(): os.system(cmd) 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/mongodb_import/' + mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root') + port = getConfPort() + + file_path = import_dir + file + if not os.path.exists(file_path): + return mw.returnJson(False, '文件突然消失?') + + exts = ['gz', 'zip'] + ext = mw.getFileSuffix(file) + if ext not in exts: + return mw.returnJson(False, '导入数据库格式不对!') + + # print(file,name) + # print(import_dir,name) + + file_dir = import_dir+name + if not os.path.exists(file_dir): + mw.execShell("mkdir -p "+file_dir) + + file_tgz = import_dir+file + if os.path.exists(file_tgz): + cmd = 'cd ' + file_dir + ' && tar -xzvf ' + file_tgz + " -C "+file_dir + # print(cmd) + r = mw.execShell(cmd) + # print(r) + + cmd = getServerDir() + "/bin/mongorestore --port "+str(port)+" --dir "+file_dir + print(cmd) + rdata = mw.execShell(cmd) + + # 删除文件 + if os.path.exists(file_dir): + del_cmd = "rm -rf "+file_dir + mw.execShell(del_cmd) + + # if rdata[1].lower().find('error') > -1: + # return mw.returnJson(False, rdata[1]) + + return mw.returnJson(True, 'ok') + + def importDbBackup(): args = getArgs() data = checkArgs(args, ['file', 'name']) @@ -1187,8 +1269,9 @@ def importDbBackup(): # 删除文件 - del_cmd = "rm -rf "+file_dir - mw.execShell(del_cmd) + if os.path.exists(file_dir): + del_cmd = "rm -rf "+file_dir + mw.execShell(del_cmd) return mw.returnJson(True, 'ok') @@ -1398,10 +1481,14 @@ if __name__ == "__main__": print(replClose()) elif func == 'get_db_backup_list': print(getDbBackupList()) + elif func == 'get_db_backup_import_list': + print(getDbBackupImportList()) elif func == 'delete_db_backup': print(deleteDbBackup()) elif func == 'set_db_backup': print(setDbBackup()) + elif func == 'import_db_external': + print(importDbExternal()) elif func == 'import_db_backup': print(importDbBackup()) elif func == 'run_log': diff --git a/plugins/mongodb/js/mongodb.js b/plugins/mongodb/js/mongodb.js index 9d2febb09..a229abd70 100644 --- a/plugins/mongodb/js/mongodb.js +++ b/plugins/mongodb/js/mongodb.js @@ -1015,3 +1015,127 @@ function importBackup(file,name){ }); } +function setLocalImport(db_name){ + + //上传文件 + function uploadDbFiles(upload_dir){ + var up_db = layer.open({ + type:1, + closeBtn: 1, + title:"上传导入文件["+upload_dir+']', + area: ['500px','300px'], + shadeClose:false, + content:'
| 文件名称 | \ +文件大小 | \ +备份时间 | \ +操作 | \ +
|---|