From 6da8309e1b5880c95ef4f80ff027026495db9e97 Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Wed, 9 Jan 2019 13:51:14 +0800 Subject: [PATCH] update --- plugins/mysql/index.py | 81 ++++++++++++++++++++++++++ plugins/mysql/js/mysql.js | 34 ++++++----- plugins/phpmyadmin/conf/config.inc.php | 12 ++++ plugins/phpmyadmin/index.py | 13 ++++- 4 files changed, 122 insertions(+), 18 deletions(-) create mode 100644 plugins/phpmyadmin/conf/config.inc.php diff --git a/plugins/mysql/index.py b/plugins/mysql/index.py index 51638fe79..223797961 100755 --- a/plugins/mysql/index.py +++ b/plugins/mysql/index.py @@ -7,6 +7,9 @@ import time import subprocess import re +reload(sys) +sys.setdefaultencoding('utf-8') + sys.path.append(os.getcwd() + "/class/core") import public @@ -365,6 +368,16 @@ def isSqlError(mysqlMsg): return None +def mapToList(map_obj): + # map to list + try: + if type(map_obj) != list and type(map_obj) != str: + map_obj = list(map_obj) + return map_obj + except: + return [] + + def getDbList(): args = getArgs() page = 1 @@ -473,6 +486,46 @@ def setRootPwd(): return public.returnJson(False, '修改错误:' + str(ex)) +def setUserPwd(): + args = getArgs() + data = checkArgs(args, ['password', 'name']) + if not data[0]: + return data[1] + + newpassword = args['password'] + username = args['name'] + id = args['id'] + try: + pdb = pMysqlDb() + psdb = pSqliteDb('databases') + name = psdb.where('id=?', (id,)).getField('name') + + m_version = public.readFile(getServerDir() + '/version.pl') + if m_version.find('5.7') == 0 or m_version.find('8.0') == 0: + tmp = pdb.query( + "select Host from mysql.user where User='" + name + "' AND Host!='localhost'") + accept = mapToList(tmp) + pdb.execute( + "update mysql.user set authentication_string='' where User='" + username + "'") + result = pdb.execute( + "ALTER USER `%s`@`localhost` IDENTIFIED BY '%s'" % (username, newpassword)) + for my_host in accept: + pdb.execute("ALTER USER `%s`@`%s` IDENTIFIED BY '%s'" % ( + username, my_host[0], newpassword)) + else: + result = pdb.execute("update mysql.user set Password=password('" + + newpassword + "') where User='" + username + "'") + isError = isSqlError(result) + if isError != None: + return isError + pdb.execute("flush privileges") + psdb.where("id=?", (id,)).setField('password', newpassword) + return public.returnJson(True, public.getInfo('修改数据库[{1}]密码成功!', (name))) + except Exception as ex: + print str(ex) + return public.returnJson(False, public.getInfo('修改数据库[{1}]密码失败!', (name))) + + def __createUser(dbname, username, password, address): pdb = pMysqlDb() pdb.execute( @@ -586,6 +639,30 @@ def delDb(): except Exception as ex: return public.returnJson(False, '删除失败!' + str(ex)) + +def getDbAccess(): + args = getArgs() + data = checkArgs(args, ['username']) + if not data[0]: + return data[1] + username = args['username'] + pdb = pMysqlDb() + + users = pdb.query("select Host from mysql.user where User='" + + username + "' AND Host!='localhost'") + isError = isSqlError(users) + if isError != None: + return isError + + users = mapToList(users) + if len(users) < 1: + return public.returnJson(True, "127.0.0.1") + accs = [] + for c in users: + accs.append(c[0]) + userStr = ','.join(accs) + return public.returnJson(True, userStr) + if __name__ == "__main__": func = sys.argv[1] if func == 'status': @@ -630,5 +707,9 @@ if __name__ == "__main__": print syncGetDatabases() elif func == 'set_root_pwd': print setRootPwd() + elif func == 'set_user_pwd': + print setUserPwd() + elif func == 'get_db_access': + print getDbAccess() else: print 'error' diff --git a/plugins/mysql/js/mysql.js b/plugins/mysql/js/mysql.js index 2270ccd47..a22641d8c 100755 --- a/plugins/mysql/js/mysql.js +++ b/plugins/mysql/js/mysql.js @@ -487,6 +487,13 @@ function copyPass(password){ $("#bt_copys").click(); } +function setDbAccess(username){ + myPost('get_db_access','username='+username, function(data){ + console.log(data); + }); + +} + function setDbPass(id, username, password){ var index = layer.open({ @@ -500,12 +507,13 @@ function setDbPass(id, username, password){ content: "
\
\ 用户名\ -
\ +
\
\
\ 密码\
\
\ + \
\ \ \ @@ -519,15 +527,13 @@ function setDbPass(id, username, password){ $('#my_mod_save').click(function(){ var data = $("#mod_pwd").serialize(); - console.log(data); - // myPost('set_root_pwd', data, function(data){ - // var rdata = $.parseJSON(data.data); - // // console.log(rdata); - // showMsg(rdata.msg,function(){ - // dbList(); - // $('.layui-layer-close1').click(); - // },{icon: rdata.status ? 1 : 2}); - // }); + myPost('set_user_pwd', data, function(data){ + var rdata = $.parseJSON(data.data); + showMsg(rdata.msg,function(){ + dbList(); + $('.layui-layer-close1').click(); + },{icon: rdata.status ? 1 : 2}); + }); }); } @@ -679,10 +685,8 @@ function dbList(page, search){ } myPost('get_db_list', _data, function(data){ var rdata = $.parseJSON(data.data); - // console.log(rdata); var list = ''; for(i in rdata.data){ - // console.log(i, rdata.data[i]); list += ''; list +=''; list += '' + rdata.data[i]['name'] +''; @@ -697,9 +701,9 @@ function dbList(page, search){ list += '' + '管理 | ' + '工具 | ' + - '权限 | ' + - '改密 | ' + - '删除' + + '权限 | ' + + '改密 | ' + + '删除' + ''; list += ''; } diff --git a/plugins/phpmyadmin/conf/config.inc.php b/plugins/phpmyadmin/conf/config.inc.php new file mode 100644 index 000000000..45a93b25b --- /dev/null +++ b/plugins/phpmyadmin/conf/config.inc.php @@ -0,0 +1,12 @@ + diff --git a/plugins/phpmyadmin/index.py b/plugins/phpmyadmin/index.py index 7f05c3864..b4c616ab4 100755 --- a/plugins/phpmyadmin/index.py +++ b/plugins/phpmyadmin/index.py @@ -109,12 +109,19 @@ def status(): def start(): file_tpl = getPluginDir() + '/conf/phpmyadmin.conf' - file_conf = getConf() + file_run = getConf() - if not os.path.exists(file_conf): + if not os.path.exists(file_run): centent = public.readFile(file_tpl) centent = contentReplace(centent) - public.writeFile(file_conf, centent) + public.writeFile(file_run, centent) + + conf_run = getServerDir() + '/phpmyadmin/config.inc.php' + if not os.path.exists(conf_run): + conf_tpl = getPluginDir() + '/conf/config.inc.php' + centent = public.readFile(conf_tpl) + # centent = contentReplace(centent) + print public.writeFile(conf_run, centent) public.restartWeb() return 'ok'