mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1d8523dd9 | ||
|
|
295e456a20 | ||
|
|
453cb4cf14 | ||
|
|
56a1ffed2a | ||
|
|
b94f302fbe | ||
|
|
3a278f4cc6 | ||
|
|
67b7f9cf43 | ||
|
|
b3dc24428c | ||
|
|
233e6dfc0f | ||
|
|
07e74a8947 | ||
|
|
4eed1e8a93 | ||
|
|
1b91af6f22 | ||
|
|
9bc824906b | ||
|
|
394f345764 | ||
|
|
a10a11817b | ||
|
|
6b82dd5eca | ||
|
|
a5d976ad36 | ||
|
|
4bb4746a1b | ||
|
|
9fad06585f | ||
|
|
50ed66d26a | ||
|
|
ed17622a0b | ||
|
|
b8e993cd04 | ||
|
|
7fe6744c09 | ||
|
|
beb085e95c | ||
|
|
657f408a8b | ||
|
|
3994f1505e | ||
|
|
0ecc9307f1 | ||
|
|
93de3dd3ab | ||
|
|
f99225f172 |
@@ -1,4 +1,4 @@
|
|||||||
### mdserver-web 0.9.4
|
### mdserver-web 0.9.5
|
||||||
|
|
||||||
简单的Linux面板,感谢BT.CN写出如此好的web管理软件。我一看到,就知道这是我一直想要的页面化管理方式。
|
简单的Linux面板,感谢BT.CN写出如此好的web管理软件。我一看到,就知道这是我一直想要的页面化管理方式。
|
||||||
复制了后台管理界面,按照自己想要的方式写了一版。
|
复制了后台管理界面,按照自己想要的方式写了一版。
|
||||||
@@ -71,11 +71,13 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### 版本更新 0.9.4
|
### 版本更新 0.9.5
|
||||||
|
|
||||||
* 修复maridb的用户管理。
|
* 页面更新优化[2].
|
||||||
* OP防火墙优化。
|
* 修复maridb的用户管理[2].
|
||||||
* phpmyadmin插件优化。
|
* Gogs初始化提示更人性.
|
||||||
|
* MySQL&&MariaDB修改密码修复.
|
||||||
|
* MySQL&&MariaDB导入修复.
|
||||||
|
|
||||||
|
|
||||||
### JSDelivr安装地址
|
### JSDelivr安装地址
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from flask import request
|
|||||||
|
|
||||||
class config_api:
|
class config_api:
|
||||||
|
|
||||||
__version = '0.9.4'
|
__version = '0.9.5'
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -2026,7 +2026,7 @@ location ^~ {from} {
|
|||||||
return 404;
|
return 404;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# SECURITY-END
|
#SECURITY-END
|
||||||
include %s/enable-php-''' % (fix.strip().replace(',', '|'), domains.strip().replace(',', ' '), pre_path)
|
include %s/enable-php-''' % (fix.strip().replace(',', '|'), domains.strip().replace(',', ' '), pre_path)
|
||||||
conf = re.sub(re_path, rconf, conf)
|
conf = re.sub(re_path, rconf, conf)
|
||||||
mw.writeLog('网站管理', '站点[' + name + ']已开启防盗链!')
|
mw.writeLog('网站管理', '站点[' + name + ']已开启防盗链!')
|
||||||
|
|||||||
@@ -684,22 +684,23 @@ class system_api:
|
|||||||
|
|
||||||
dist_mw = toPath + '/mw.zip'
|
dist_mw = toPath + '/mw.zip'
|
||||||
if not os.path.exists(dist_mw):
|
if not os.path.exists(dist_mw):
|
||||||
mw.execShell('wget -O ' + dist_mw + ' ' + newUrl)
|
mw.execShell(
|
||||||
|
'wget --no-check-certificate -O ' + dist_mw + ' ' + newUrl)
|
||||||
|
|
||||||
dist_to = toPath + "/mdserver-web-" + version
|
dist_to = toPath + "/mdserver-web-" + version
|
||||||
if not os.path.exists(dist_to):
|
if not os.path.exists(dist_to):
|
||||||
mw.execShell('unzip -o ' + toPath +
|
os.system('unzip -o ' + toPath +
|
||||||
'/mw.zip' + ' -d ' + toPath)
|
'/mw.zip' + ' -d ' + toPath)
|
||||||
|
|
||||||
cmd_cp = "cp -rf " + toPath + '/mdserver-web-' + \
|
cmd_cp = 'cp -rf ' + toPath + '/mdserver-web-' + \
|
||||||
version + "/* " + mw.getServerDir() + "/mdserver-web"
|
version + '/* ' + mw.getServerDir() + '/mdserver-web'
|
||||||
mw.execShell(cmd_cp)
|
mw.execShell(cmd_cp)
|
||||||
|
|
||||||
mw.execShell('rm -rf ' + toPath + '/mdserver-web-' + version)
|
mw.execShell('rm -rf ' + toPath + '/mdserver-web-' + version)
|
||||||
mw.execShell('rm -rf ' + toPath + '/mw.zip')
|
mw.execShell('rm -rf ' + toPath + '/mw.zip')
|
||||||
|
|
||||||
self.restartMw()
|
self.restartMw()
|
||||||
return mw.returnJson(True, '安装更新成功,需自己重启!')
|
return mw.returnJson(True, '安装更新成功!')
|
||||||
|
|
||||||
return mw.returnJson(False, '已经是最新,无需更新!')
|
return mw.returnJson(False, '已经是最新,无需更新!')
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|||||||
@@ -388,7 +388,7 @@ def postReceiveLog():
|
|||||||
def getGogsConf():
|
def getGogsConf():
|
||||||
conf = getConf()
|
conf = getConf()
|
||||||
if not os.path.exists(conf):
|
if not os.path.exists(conf):
|
||||||
return mw.returnJson(False, "请先安装初始化!")
|
return mw.returnJson(False, "请先安装初始化!<br/>默认地址:http://" + mw.getLocalIp() + ":3000")
|
||||||
|
|
||||||
gets = [
|
gets = [
|
||||||
{'name': 'DOMAIN', 'type': -1, 'ps': '服务器域名'},
|
{'name': 'DOMAIN', 'type': -1, 'ps': '服务器域名'},
|
||||||
@@ -455,7 +455,7 @@ def userList():
|
|||||||
|
|
||||||
conf = getConf()
|
conf = getConf()
|
||||||
if not os.path.exists(conf):
|
if not os.path.exists(conf):
|
||||||
return mw.returnJson(False, "请先安装初始化!")
|
return mw.returnJson(False, "请先安装初始化!<br/>默认地址:http://" + mw.getLocalIp() + ":3000")
|
||||||
|
|
||||||
import math
|
import math
|
||||||
args = getArgs()
|
args = getArgs()
|
||||||
|
|||||||
@@ -632,7 +632,7 @@ def isSqlError(mysqlMsg):
|
|||||||
|
|
||||||
|
|
||||||
def __createUser(dbname, username, password, address):
|
def __createUser(dbname, username, password, address):
|
||||||
pdb = pMysqlDb()
|
pdb = pMysqlDb('mysql')
|
||||||
|
|
||||||
if username == 'root':
|
if username == 'root':
|
||||||
dbname = '*'
|
dbname = '*'
|
||||||
@@ -692,8 +692,8 @@ def importDbBackup():
|
|||||||
mw.execShell(cmd)
|
mw.execShell(cmd)
|
||||||
|
|
||||||
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
|
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
|
||||||
|
sock = getSocketFile()
|
||||||
mysql_cmd = mw.getRootDir() + '/server/mysql/bin/mysql -uroot -p' + pwd + \
|
mysql_cmd = getServerDir() + '/bin/mysql -S ' + sock + ' -uroot -p' + pwd + \
|
||||||
' ' + name + ' < ' + file_path_sql
|
' ' + name + ' < ' + file_path_sql
|
||||||
|
|
||||||
# print(mysql_cmd)
|
# print(mysql_cmd)
|
||||||
@@ -1038,7 +1038,7 @@ def delDb():
|
|||||||
id = args['id']
|
id = args['id']
|
||||||
name = args['name']
|
name = args['name']
|
||||||
psdb = pSqliteDb('databases')
|
psdb = pSqliteDb('databases')
|
||||||
pdb = pMysqlDb()
|
pdb = pMysqlDb('mysql')
|
||||||
find = psdb.where("id=?", (id,)).field(
|
find = psdb.where("id=?", (id,)).field(
|
||||||
'id,pid,name,username,password,accept,ps,addtime').find()
|
'id,pid,name,username,password,accept,ps,addtime').find()
|
||||||
accept = find['accept']
|
accept = find['accept']
|
||||||
@@ -1088,7 +1088,7 @@ def setDbAccess():
|
|||||||
return data[1]
|
return data[1]
|
||||||
name = args['username']
|
name = args['username']
|
||||||
access = args['access']
|
access = args['access']
|
||||||
pdb = pMysqlDb()
|
pdb = pMysqlDb('mysql')
|
||||||
psdb = pSqliteDb('databases')
|
psdb = pSqliteDb('databases')
|
||||||
|
|
||||||
dbname = psdb.where('username=?', (name,)).getField('name')
|
dbname = psdb.where('username=?', (name,)).getField('name')
|
||||||
|
|||||||
@@ -445,10 +445,9 @@ function syncToDatabase(type){
|
|||||||
|
|
||||||
function setRootPwd(type, pwd){
|
function setRootPwd(type, pwd){
|
||||||
if (type==1){
|
if (type==1){
|
||||||
var data = $("#mod_pwd").serialize();
|
var password = $("#MyPassword").val();
|
||||||
myPost('set_root_pwd', data, function(data){
|
myPost('set_root_pwd', {password:password}, function(data){
|
||||||
var rdata = $.parseJSON(data.data);
|
var rdata = $.parseJSON(data.data);
|
||||||
// console.log(rdata);
|
|
||||||
showMsg(rdata.msg,function(){
|
showMsg(rdata.msg,function(){
|
||||||
dbList();
|
dbList();
|
||||||
$('.layui-layer-close1').click();
|
$('.layui-layer-close1').click();
|
||||||
@@ -459,26 +458,23 @@ function setRootPwd(type, pwd){
|
|||||||
|
|
||||||
var index = layer.open({
|
var index = layer.open({
|
||||||
type: 1,
|
type: 1,
|
||||||
skin: 'demo-class',
|
|
||||||
area: '500px',
|
area: '500px',
|
||||||
title: '修改数据库密码',
|
title: '修改数据库密码',
|
||||||
closeBtn: 1,
|
closeBtn: 1,
|
||||||
shift: 5,
|
shift: 5,
|
||||||
|
btn:["提交","关闭"],
|
||||||
shadeClose: true,
|
shadeClose: true,
|
||||||
content: "<form class='bt-form pd20 pb70' id='mod_pwd'>\
|
content: "<form class='bt-form pd20' id='mod_pwd'>\
|
||||||
<div class='line'>\
|
<div class='line'>\
|
||||||
<span class='tname'>root密码</span>\
|
<span class='tname'>root密码</span>\
|
||||||
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+pwd+"' /><span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
|
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+pwd+"' />\
|
||||||
</div>\
|
<span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span>\
|
||||||
<div class='bt-form-submit-btn'>\
|
</div>\
|
||||||
<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>\
|
|
||||||
</div>\
|
</div>\
|
||||||
</form>",
|
</form>",
|
||||||
});
|
yes:function(){
|
||||||
|
setRootPwd(1);
|
||||||
$('#my_mod_close').click(function(){
|
}
|
||||||
$('.layui-layer-close1').click();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -632,12 +628,17 @@ function setDbPass(id, username, password){
|
|||||||
</div>\
|
</div>\
|
||||||
<div class='line'>\
|
<div class='line'>\
|
||||||
<span class='tname'>密码</span>\
|
<span class='tname'>密码</span>\
|
||||||
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+password+"' /><span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
|
<div class='info-r'>\
|
||||||
|
<input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+password+"' />\
|
||||||
|
<span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
|
||||||
</div>\
|
</div>\
|
||||||
<input type='hidden' name='id' value='"+id+"'>\
|
<input type='hidden' name='id' value='"+id+"'>\
|
||||||
</form>",
|
</form>",
|
||||||
yes:function(index){
|
yes:function(index){
|
||||||
var data = $("#mod_pwd").serialize();
|
var data = {};
|
||||||
|
data['name'] = $('input[name=name]').val();
|
||||||
|
data['password'] = $('#MyPassword').val();
|
||||||
|
data['id'] = $('input[name=id]').val();
|
||||||
myPost('set_user_pwd', data, function(data){
|
myPost('set_user_pwd', data, function(data){
|
||||||
var rdata = $.parseJSON(data.data);
|
var rdata = $.parseJSON(data.data);
|
||||||
showMsg(rdata.msg,function(){
|
showMsg(rdata.msg,function(){
|
||||||
|
|||||||
@@ -71,10 +71,15 @@ Install_app()
|
|||||||
if [ "$sysName" == "Darwin" ];then
|
if [ "$sysName" == "Darwin" ];then
|
||||||
OPTIONS='-DPLUGIN_TOKUDB=NO'
|
OPTIONS='-DPLUGIN_TOKUDB=NO'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
INSTALL_CMD=cmake
|
||||||
|
CMAKE3=`which cmake3`
|
||||||
|
if [ "$?" == "0" ];then
|
||||||
|
INSTALL_CMD=cmake3
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! -d $serverPath/mariadb ];then
|
if [ ! -d $serverPath/mariadb ];then
|
||||||
cd ${mariadbDir}/mariadb-${MY_VER} && cmake \
|
cd ${mariadbDir}/mariadb-${MY_VER} && $INSTALL_CMD \
|
||||||
-DCMAKE_INSTALL_PREFIX=$serverPath/mariadb \
|
-DCMAKE_INSTALL_PREFIX=$serverPath/mariadb \
|
||||||
-DMYSQL_DATADIR=$serverPath/mariadb/data/ \
|
-DMYSQL_DATADIR=$serverPath/mariadb/data/ \
|
||||||
-DMYSQL_USER=mysql \
|
-DMYSQL_USER=mysql \
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ Install_app()
|
|||||||
make -j${cpuCore} && make install && make clean
|
make -j${cpuCore} && make install && make clean
|
||||||
|
|
||||||
if [ -d $serverPath/mariadb ];then
|
if [ -d $serverPath/mariadb ];then
|
||||||
echo '10.7' > $serverPath/mariadb/version.pl
|
echo '10.8' > $serverPath/mariadb/version.pl
|
||||||
echo '安装完成' > $install_tmp
|
echo '安装完成' > $install_tmp
|
||||||
else
|
else
|
||||||
# rm -rf ${mariadbDir}/mariadb-${MY_VER}
|
# rm -rf ${mariadbDir}/mariadb-${MY_VER}
|
||||||
|
|||||||
@@ -821,8 +821,8 @@ def importDbBackup():
|
|||||||
mw.execShell(cmd)
|
mw.execShell(cmd)
|
||||||
|
|
||||||
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
|
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
|
||||||
|
sock = getSocketFile()
|
||||||
mysql_cmd = mw.getRootDir() + '/server/mysql/bin/mysql -uroot -p' + pwd + \
|
mysql_cmd = getServerDir() + '/bin/mysql -S ' + sock + ' -uroot -p' + pwd + \
|
||||||
' ' + name + ' < ' + file_path_sql
|
' ' + name + ' < ' + file_path_sql
|
||||||
|
|
||||||
# print(mysql_cmd)
|
# print(mysql_cmd)
|
||||||
|
|||||||
+19
-17
@@ -445,10 +445,9 @@ function syncToDatabase(type){
|
|||||||
|
|
||||||
function setRootPwd(type, pwd){
|
function setRootPwd(type, pwd){
|
||||||
if (type==1){
|
if (type==1){
|
||||||
var data = $("#mod_pwd").serialize();
|
var password = $("#MyPassword").val();
|
||||||
myPost('set_root_pwd', data, function(data){
|
myPost('set_root_pwd', {password:password}, function(data){
|
||||||
var rdata = $.parseJSON(data.data);
|
var rdata = $.parseJSON(data.data);
|
||||||
// console.log(rdata);
|
|
||||||
showMsg(rdata.msg,function(){
|
showMsg(rdata.msg,function(){
|
||||||
dbList();
|
dbList();
|
||||||
$('.layui-layer-close1').click();
|
$('.layui-layer-close1').click();
|
||||||
@@ -459,26 +458,23 @@ function setRootPwd(type, pwd){
|
|||||||
|
|
||||||
var index = layer.open({
|
var index = layer.open({
|
||||||
type: 1,
|
type: 1,
|
||||||
skin: 'demo-class',
|
|
||||||
area: '500px',
|
area: '500px',
|
||||||
title: '修改数据库密码',
|
title: '修改数据库密码',
|
||||||
closeBtn: 1,
|
closeBtn: 1,
|
||||||
shift: 5,
|
shift: 5,
|
||||||
|
btn:["提交","关闭"],
|
||||||
shadeClose: true,
|
shadeClose: true,
|
||||||
content: "<form class='bt-form pd20 pb70' id='mod_pwd'>\
|
content: "<form class='bt-form pd20' id='mod_pwd'>\
|
||||||
<div class='line'>\
|
<div class='line'>\
|
||||||
<span class='tname'>root密码</span>\
|
<span class='tname'>root密码</span>\
|
||||||
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+pwd+"' /><span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
|
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+pwd+"' />\
|
||||||
</div>\
|
<span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span>\
|
||||||
<div class='bt-form-submit-btn'>\
|
</div>\
|
||||||
<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>\
|
|
||||||
</div>\
|
</div>\
|
||||||
</form>",
|
</form>",
|
||||||
});
|
yes:function(){
|
||||||
|
setRootPwd(1);
|
||||||
$('#my_mod_close').click(function(){
|
}
|
||||||
$('.layui-layer-close1').click();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -632,12 +628,18 @@ function setDbPass(id, username, password){
|
|||||||
</div>\
|
</div>\
|
||||||
<div class='line'>\
|
<div class='line'>\
|
||||||
<span class='tname'>密码</span>\
|
<span class='tname'>密码</span>\
|
||||||
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+password+"' /><span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
|
<div class='info-r'>\
|
||||||
|
<input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+password+"' />\
|
||||||
|
<span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
|
||||||
</div>\
|
</div>\
|
||||||
<input type='hidden' name='id' value='"+id+"'>\
|
<input type='hidden' name='id' value='"+id+"'>\
|
||||||
</form>",
|
</form>",
|
||||||
yes:function(index){
|
yes:function(index){
|
||||||
var data = $("#mod_pwd").serialize();
|
// var data = $("#mod_pwd").serialize();
|
||||||
|
var data = {};
|
||||||
|
data['name'] = $('input[name=name]').val();
|
||||||
|
data['password'] = $('#MyPassword').val();
|
||||||
|
data['id'] = $('input[name=id]').val();
|
||||||
myPost('set_user_pwd', data, function(data){
|
myPost('set_user_pwd', data, function(data){
|
||||||
var rdata = $.parseJSON(data.data);
|
var rdata = $.parseJSON(data.data);
|
||||||
showMsg(rdata.msg,function(){
|
showMsg(rdata.msg,function(){
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ def contentReplace(content, version):
|
|||||||
|
|
||||||
def makeOpenrestyConf():
|
def makeOpenrestyConf():
|
||||||
phpversions = ['00', '52', '53', '54', '55', '56',
|
phpversions = ['00', '52', '53', '54', '55', '56',
|
||||||
'70', '71', '72', '73', '74', '80', '81']
|
'70', '71', '72', '73', '74', '80', '81', '82']
|
||||||
|
|
||||||
sdir = mw.getServerDir()
|
sdir = mw.getServerDir()
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ serverPath=$(dirname "$rootPath")
|
|||||||
sourcePath=${serverPath}/source/php
|
sourcePath=${serverPath}/source/php
|
||||||
|
|
||||||
LIBNAME=redis
|
LIBNAME=redis
|
||||||
LIBV=5.3.7
|
LIBV=5.3.6
|
||||||
sysName=`uname`
|
sysName=`uname`
|
||||||
actionType=$1
|
actionType=$1
|
||||||
version=$2
|
version=$2
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ def getArgs():
|
|||||||
tmp[t[0]] = t[1]
|
tmp[t[0]] = t[1]
|
||||||
elif args_len > 1:
|
elif args_len > 1:
|
||||||
for i in range(len(args)):
|
for i in range(len(args)):
|
||||||
t = args[i].split(':')
|
t = args[i].split(':', 1)
|
||||||
tmp[t[0]] = t[1]
|
tmp[t[0]] = t[1]
|
||||||
|
|
||||||
return tmp
|
return tmp
|
||||||
|
|||||||
Reference in New Issue
Block a user