mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-10 04:19:26 +08:00
update
This commit is contained in:
+103
-4
@@ -346,13 +346,15 @@ def isSqlError(mysqlMsg):
|
||||
if "MySQLdb" in mysqlMsg:
|
||||
return public.returnJson(False, 'MySQLdb组件缺失! <br>进入SSH命令行输入: pip install mysql-python')
|
||||
if "2002," in mysqlMsg:
|
||||
return public.returnMsg(False, '数据库连接失败,请检查数据库服务是否启动!')
|
||||
return public.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!')
|
||||
if "using password:" in mysqlMsg:
|
||||
return public.returnMsg(False, '数据库管理密码错误!')
|
||||
return public.returnJson(False, '数据库管理密码错误!')
|
||||
if "Connection refused" in mysqlMsg:
|
||||
return public.returnMsg(False, '数据库连接失败,请检查数据库服务是否启动!')
|
||||
return public.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!')
|
||||
if "1133" in mysqlMsg:
|
||||
return public.returnMsg(False, '数据库用户不存在!')
|
||||
return public.returnJson(False, '数据库用户不存在!')
|
||||
if "1007" in mysqlMsg:
|
||||
return public.returnJson(False, '数据库已经存在!')
|
||||
return None
|
||||
|
||||
|
||||
@@ -464,6 +466,99 @@ def setRootPwd():
|
||||
return public.returnJson(False, '修改错误:' + str(ex))
|
||||
|
||||
|
||||
def __createUser(dbname, username, password, address):
|
||||
pdb = pMysqlDb()
|
||||
pdb.execute(
|
||||
"CREATE USER `%s`@`localhost` IDENTIFIED BY '%s'" % (username, password))
|
||||
pdb.execute(
|
||||
"grant all privileges on %s.* to `%s`@`localhost`" % (dbname, username))
|
||||
for a in address.split(','):
|
||||
pdb.execute(
|
||||
"CREATE USER `%s`@`%s` IDENTIFIED BY '%s'" % (username, a, password))
|
||||
pdb.execute(
|
||||
"grant all privileges on %s.* to `%s`@`%s`" % (dbname, username, a))
|
||||
pdb.execute("flush privileges")
|
||||
|
||||
|
||||
def addDb():
|
||||
args = getArgs()
|
||||
if not 'password' in args:
|
||||
return 'password missing'
|
||||
|
||||
if not 'name' in args:
|
||||
return 'name missing'
|
||||
|
||||
if not 'codeing' in args:
|
||||
return 'codeing missing'
|
||||
|
||||
if not 'db_user' in args:
|
||||
return 'db_user missing'
|
||||
|
||||
if not 'dataAccess' in args:
|
||||
return 'dataAccess missing'
|
||||
|
||||
if not 'address' in args:
|
||||
address = ''
|
||||
else:
|
||||
address = args['address'].strip()
|
||||
|
||||
dbname = args['name'].strip()
|
||||
dbuser = args['db_user'].strip()
|
||||
codeing = args['codeing'].strip()
|
||||
password = args['password'].strip()
|
||||
dataAccess = args['dataAccess'].strip()
|
||||
|
||||
reg = "^[\w\.-]+$"
|
||||
if not re.match(reg, args['name']):
|
||||
return public.returnJson(False, '数据库名称不能带有特殊符号!')
|
||||
checks = ['root', 'mysql', 'test', 'sys', 'panel_logs']
|
||||
if dbuser in checks or len(dbuser) < 1:
|
||||
return public.returnJson(False, '数据库用户名不合法!')
|
||||
if dbname in checks or len(dbname) < 1:
|
||||
return public.returnJson(False, '数据库名称不合法!')
|
||||
|
||||
if len(password) < 1:
|
||||
password = public.md5(time.time())[0:8]
|
||||
|
||||
wheres = {
|
||||
'utf8': 'utf8_general_ci',
|
||||
'utf8mb4': 'utf8mb4_general_ci',
|
||||
'gbk': 'gbk_chinese_ci',
|
||||
'big5': 'big5_chinese_ci'
|
||||
}
|
||||
codeStr = wheres[codeing]
|
||||
|
||||
pdb = pMysqlDb()
|
||||
psdb = pSqliteDb('databases')
|
||||
|
||||
if psdb.where("name=? or username=?", (dbname, dbuser)).count():
|
||||
return public.returnJson(False, '数据库已存在!')
|
||||
|
||||
result = pdb.execute("create database `" + dbname +
|
||||
"` DEFAULT CHARACTER SET " + codeing + " COLLATE " + codeStr)
|
||||
# print result
|
||||
isError = isSqlError(result)
|
||||
if isError != None:
|
||||
return isError
|
||||
|
||||
pdb.execute("drop user '" + dbuser + "'@'localhost'")
|
||||
for a in address.split(','):
|
||||
pdb.execute("drop user '" + dbuser + "'@'" + a + "'")
|
||||
|
||||
__createUser(dbname, dbuser, password, address)
|
||||
|
||||
addTime = time.strftime('%Y-%m-%d %X', time.localtime())
|
||||
psdb.add('pid,name,username,password,accept,ps,addtime',
|
||||
(0, dbname, dbuser, password, address, '', addTime))
|
||||
return public.returnJson(True, '添加成功!')
|
||||
|
||||
|
||||
def delDb():
|
||||
try:
|
||||
return public.returnJson(True, '删除成功!')
|
||||
except Exception as ex:
|
||||
return public.returnJson(False, '删除失败!')
|
||||
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
@@ -500,6 +595,10 @@ if __name__ == "__main__":
|
||||
print initMysqlPwd()
|
||||
elif func == 'get_db_list':
|
||||
print getDbList()
|
||||
elif func == 'add_db':
|
||||
print addDb()
|
||||
elif func == 'del_db':
|
||||
print delDb()
|
||||
elif func == 'sync_get_databases':
|
||||
print syncGetDatabases()
|
||||
elif func == 'set_root_pwd':
|
||||
|
||||
@@ -461,7 +461,19 @@ function setRootPwd(type, pwd){
|
||||
});
|
||||
}
|
||||
|
||||
function addDatabase(){
|
||||
function addDatabase(type){
|
||||
if (type==1){
|
||||
var data = $("#add_db").serialize();
|
||||
myPost('add_db', 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});
|
||||
});
|
||||
return;
|
||||
}
|
||||
var index = layer.open({
|
||||
type: 1,
|
||||
skin: 'demo-class',
|
||||
@@ -495,12 +507,11 @@ function addDatabase(){
|
||||
<option value='%'>所有人</option>\
|
||||
<option value='ip'>指定IP</option>\
|
||||
</select>\
|
||||
<input id='dataAccess_subid' class='bt-input-text mr5' type='text' name='address' placeholder='多个IP使用逗号(,)分隔' style='width: 230px; display: inline-block;'>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class='bt-form-submit-btn'>\
|
||||
<button id='my_mod_close' type='button' class='btn btn-danger btn-sm btn-title'>关闭</button>\
|
||||
<button type='button' class='btn btn-success btn-sm btn-title' onclick=\"setRootPwd(1)\" >提交</button>\
|
||||
<button type='button' class='btn btn-success btn-sm btn-title' onclick=\"addDatabase(1)\" >提交</button>\
|
||||
</div>\
|
||||
</form>",
|
||||
});
|
||||
@@ -508,6 +519,21 @@ function addDatabase(){
|
||||
$('#my_mod_close').click(function(){
|
||||
$('.layui-layer-close1').click();
|
||||
});
|
||||
|
||||
$('select[name="dataAccess"]').change(function(){
|
||||
var v = $(this).val();
|
||||
if (v == 'ip'){
|
||||
$(this).after("<input id='dataAccess_subid' class='bt-input-text mr5' type='text' name='address' placeholder='多个IP使用逗号(,)分隔' style='width: 230px; display: inline-block;'>");
|
||||
} else {
|
||||
$('#dataAccess_subid').remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function delDb(id, name){
|
||||
safeMessage('删除['+name+']','您真的要删除['+name+']吗?',function(){
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function dbList(page, search){
|
||||
@@ -532,7 +558,7 @@ function dbList(page, search){
|
||||
list += '<td>' + rdata.data[i]['name'] +'</td>';
|
||||
list += '<td>' + rdata.data[i]['username'] +'</td>';
|
||||
list += '<td>' +
|
||||
'<span class="password" data-pw="cajKa4ZAmQJNaYsx">**********</span>' +
|
||||
'<span class="password" data-pw="'+rdata.data[i]['password']+'">**********</span>' +
|
||||
'<span onclick="bt.pub.show_hide_pass(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="复制密码" data-pw="cajKa4ZAmQJNaYsx" onclick="bt.pub.copy_pass(\'cajKa4ZAmQJNaYsx\')"></span>'+
|
||||
'</td>';
|
||||
@@ -543,7 +569,7 @@ function dbList(page, search){
|
||||
'<a href="javascript:;" class="btlink" title="MySQL优化修复工具">工具</a> | ' +
|
||||
'<a href="javascript:;" class="btlink" title="设置数据库权限">权限</a> | ' +
|
||||
'<a href="javascript:;" class="btlink" title="修改数据库密码">改密</a> | ' +
|
||||
'<a href="javascript:;" class="btlink" title="删除数据库">删除</a>' +
|
||||
'<a href="javascript:;" class="btlink" title="删除数据库" onclick="delDb(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\')">删除</a>' +
|
||||
'</td>';
|
||||
list += '</tr>';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user