mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
update
This commit is contained in:
@@ -27,8 +27,8 @@ def list():
|
||||
page = request.args.get('p', 1)
|
||||
size = 10
|
||||
count = Crontab.query.count()
|
||||
print(count)
|
||||
# print(count)
|
||||
clist = Crontab.query.paginate(page=int(page), per_page=size)
|
||||
print(clist)
|
||||
# print(clist)
|
||||
|
||||
return []
|
||||
@@ -32,6 +32,18 @@ blueprint = Blueprint('dashboard', __name__, url_prefix='/', template_folder='..
|
||||
def index():
|
||||
return render_template('default/index.html')
|
||||
|
||||
# 安全路径
|
||||
@blueprint.route('/<path>',endpoint='admin_safe_path',methods=['GET'])
|
||||
def admin_safe_path(path):
|
||||
db_path = model.getOption('admin_path')
|
||||
if db_path == path:
|
||||
return render_template('default/login.html')
|
||||
|
||||
unauthorized_status = model.getOption('unauthorized_status')
|
||||
if unauthorized_status == '0':
|
||||
return render_template('default/path.html')
|
||||
return Response(status=int(unauthorized_status))
|
||||
|
||||
# 仅针对webhook插件
|
||||
@blueprint.route("/hook", methods=['POST', 'GET'])
|
||||
def webhook():
|
||||
@@ -63,19 +75,6 @@ def webhook():
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
|
||||
# 安全路径
|
||||
@blueprint.route('/<path>',endpoint='admin_safe_path',methods=['GET'])
|
||||
def admin_safe_path(path):
|
||||
db_path = model.getOption('admin_path')
|
||||
if db_path == path:
|
||||
return render_template('default/login.html')
|
||||
|
||||
unauthorized_status = model.getOption('unauthorized_status')
|
||||
if unauthorized_status == '0':
|
||||
return render_template('default/path.html')
|
||||
return Response(status=int(unauthorized_status))
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------------
|
||||
# 定义登录入口相关方法
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
@@ -75,8 +75,21 @@ def set_ping():
|
||||
mf = MwFirewall.instance()
|
||||
return mf.setPing()
|
||||
|
||||
|
||||
|
||||
# 添加放行端口
|
||||
@blueprint.route('/add_accept_port', endpoint='add_accept_port', methods=['POST'])
|
||||
@panel_login_required
|
||||
def add_accept_port():
|
||||
mf = MwFirewall.instance()
|
||||
if not mf.getFwStatus():
|
||||
return mw.returnData(False, '防火墙启动时,才能添加规则!')
|
||||
|
||||
port = request.form.get('port', '').strip()
|
||||
ps = request.form.get('ps', '').strip()
|
||||
protocol = request.form.get('protocol', '').strip()
|
||||
stype = request.form.get('type', '').strip()
|
||||
|
||||
data = mf.addAcceptPort(port, ps, stype, protocol=protocol)
|
||||
return mw.getJson(data)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
# Author: midoks <midoks@163.com>
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
from .initdb import *
|
||||
|
||||
from .logs import addLog,clearLog
|
||||
@@ -25,5 +26,11 @@ from .user import isLoginCheck
|
||||
from .user import getUserByName,getUserById,getUserByRoot
|
||||
from .user import setUserByRoot
|
||||
|
||||
from .firewall import addFirewall
|
||||
|
||||
from .temp_login import getTempLoginByToken,clearTempLogin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
# coding:utf-8
|
||||
|
||||
# ---------------------------------------------------------------------------------
|
||||
# MW-Linux面板
|
||||
# ---------------------------------------------------------------------------------
|
||||
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
||||
# ---------------------------------------------------------------------------------
|
||||
# Author: midoks <midoks@163.com>
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
from admin.model import db, Firewall
|
||||
|
||||
import core.mw as mw
|
||||
|
||||
|
||||
|
||||
def addFirewall(port,
|
||||
protocol: str | None = 'tcp',
|
||||
ps: str | None = '备注'
|
||||
) -> bool:
|
||||
'''
|
||||
设置配置的值
|
||||
:port -> str 端口 (必填)
|
||||
:protocol -> str 协议 (可选|tcp,udp,tcp/udp)
|
||||
:ps -> str 备注 (可选)
|
||||
'''
|
||||
now_time = mw.formatDate()
|
||||
add_data = Firewall(
|
||||
port=port,
|
||||
protocol=protocol,
|
||||
add_time=now_time,
|
||||
update_time=now_time)
|
||||
db.session.add(add_data)
|
||||
db.session.commit()
|
||||
return True
|
||||
|
||||
|
||||
def getFirewallCountByPort(port):
|
||||
return Firewall.query.filter(Tasks.port==port).count()
|
||||
|
||||
|
||||
@@ -13,13 +13,7 @@ import json
|
||||
import time
|
||||
|
||||
from admin.model import db, Logs
|
||||
|
||||
def formatDate(format="%Y-%m-%d %H:%M:%S", times=None):
|
||||
# 格式化指定时间戳
|
||||
if not times:
|
||||
times = int(time.time())
|
||||
time_local = time.localtime(times)
|
||||
return time.strftime(format, time_local)
|
||||
import core.mw as mw
|
||||
|
||||
def clearLog():
|
||||
try:
|
||||
@@ -42,12 +36,12 @@ def addLog(type, log,
|
||||
:log -> str 日志内容 (必填)
|
||||
:uid -> int 用户ID
|
||||
'''
|
||||
add_time = formatDate()
|
||||
now_time = mw.formatDate()
|
||||
add_logs = Logs(
|
||||
uid=uid,
|
||||
log=log,
|
||||
type=type,
|
||||
add_time=add_time)
|
||||
add_time=now_time)
|
||||
db.session.add(add_logs)
|
||||
db.session.commit()
|
||||
db.session.close()
|
||||
|
||||
@@ -142,7 +142,7 @@ def set_basic_auth():
|
||||
return mw.returnData(True, '设置成功!')
|
||||
|
||||
|
||||
# 设置站点状态
|
||||
# 设置面板未登录状态
|
||||
@blueprint.route('/set_status_code', endpoint='set_status_code', methods=['POST'])
|
||||
@panel_login_required
|
||||
def set_status_code():
|
||||
@@ -159,7 +159,32 @@ def set_status_code():
|
||||
model.setOption('unauthorized_status', str(status_code))
|
||||
mw.writeLog('面板设置', '将未授权响应状态码设置为:{0}:{1}'.format(status_code,info['text']))
|
||||
return mw.returnData(True, '设置成功!')
|
||||
|
||||
|
||||
# 设置站点状态
|
||||
@blueprint.route('/set_port', endpoint='set_port', methods=['POST'])
|
||||
@panel_login_required
|
||||
def set_port():
|
||||
port = request.form.get('port', '')
|
||||
if port != mw.getHostPort():
|
||||
import system_api
|
||||
import firewall_api
|
||||
|
||||
sysCfgDir = mw.systemdCfgDir()
|
||||
if os.path.exists(sysCfgDir + "/firewalld.service"):
|
||||
if not firewall_api.firewall_api().getFwStatus():
|
||||
return mw.returnData(False, 'firewalld必须先启动!')
|
||||
|
||||
# mw.setHostPort(port)
|
||||
|
||||
msg = mw.getInfo('放行端口[{1}]成功', (port,))
|
||||
mw.writeLog("防火墙管理", msg)
|
||||
addtime = time.strftime('%Y-%m-%d %X', time.localtime())
|
||||
mw.M('firewall').add('port,ps,addtime', (port, "配置修改", addtime))
|
||||
|
||||
# firewall_api.firewall_api().addAcceptPort(port)
|
||||
# firewall_api.firewall_api().firewallReload()
|
||||
|
||||
# system_api.system_api().restartMw()
|
||||
|
||||
return mw.returnJson(True, '端口保存成功!')
|
||||
|
||||
@@ -8,169 +8,6 @@
|
||||
# Author: midoks <midoks@163.com>
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import request
|
||||
|
||||
from admin.user_login_check import panel_login_required
|
||||
import admin.model.option as option
|
||||
|
||||
import core.mw as mw
|
||||
import utils.system as sys
|
||||
|
||||
|
||||
blueprint = Blueprint('system', __name__, url_prefix='/system', template_folder='../../templates')
|
||||
|
||||
# 获取系统的统计信息
|
||||
@blueprint.route('/system_total', endpoint='system_total')
|
||||
@panel_login_required
|
||||
def system_total():
|
||||
data = sys.getMemInfo()
|
||||
cpu = sys.getCpuInfo(interval=1)
|
||||
data['cpuNum'] = cpu[1]
|
||||
data['cpuRealUsed'] = cpu[0]
|
||||
data['time'] = sys.getBootTime()
|
||||
data['system'] = sys.getSystemVersion()
|
||||
data['version'] = '0.0.1'
|
||||
return data
|
||||
|
||||
# 获取系统的网络流量信息
|
||||
@blueprint.route('/network', endpoint='network')
|
||||
@panel_login_required
|
||||
def network():
|
||||
stat = {}
|
||||
stat['cpu'] = sys.getCpuInfo()
|
||||
stat['load'] = sys.getLoadAverage()
|
||||
stat['mem'] = sys.getMemInfo()
|
||||
stat['iostat'] = sys.stats().disk()
|
||||
stat['network'] = sys.stats().network()
|
||||
return stat
|
||||
|
||||
# 获取系统的磁盘信息
|
||||
@blueprint.route('/disk_info', endpoint='disk_info')
|
||||
@panel_login_required
|
||||
def disk_info():
|
||||
data = sys.getDiskInfo()
|
||||
return data
|
||||
|
||||
# 获取系统的负载统计信息
|
||||
@blueprint.route('/get_load_average', endpoint='get_load_average', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_load_average():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
data = mw.M('load_average').dbPos(mw.getPanelDataDir(),'system')\
|
||||
.where("addtime>=? AND addtime<=?", (start, end,))\
|
||||
.field('id,pro,one,five,fifteen,addtime')\
|
||||
.order('id asc').select()
|
||||
# return self.toAddtime(data)
|
||||
# print(data)
|
||||
return data
|
||||
|
||||
# 获取系统的磁盘IO统计信息
|
||||
@blueprint.route('/get_disk_io', endpoint='get_disk_io', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_disk_io():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
data = mw.M('diskio').dbPos(mw.getPanelDataDir(),'system')\
|
||||
.where("addtime>=? AND addtime<=?", (start, end))\
|
||||
.field('id,read_count,write_count,read_bytes,write_bytes,read_time,write_time,addtime')\
|
||||
.order('id asc').select()
|
||||
return data
|
||||
|
||||
# 获取系统的CPU/IO统计信息
|
||||
@blueprint.route('/get_cpu_io', endpoint='get_cpu_io', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_cpu_io():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
data = mw.M('cpuio').dbPos(mw.getPanelDataDir(),'system')\
|
||||
.where("addtime>=? AND addtime<=?",(start, end))\
|
||||
.field('id,pro,mem,addtime')\
|
||||
.order('id asc').select()
|
||||
# return self.toAddtime(data)
|
||||
# print(data)
|
||||
return data
|
||||
|
||||
|
||||
# 获取系统网络IO统计信息
|
||||
@blueprint.route('/get_network_io', endpoint='get_network_io', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_network_io():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
data = mw.M('network').dbPos(mw.getPanelDataDir(),'system')\
|
||||
.where("addtime>=? AND addtime<=?", (start, end))\
|
||||
.field('id,up,down,total_up,total_down,down_packets,up_packets,addtime')\
|
||||
.order('id asc').select()
|
||||
# return self.toAddtime(data)
|
||||
# print(data)
|
||||
return data
|
||||
|
||||
# 获取系统网络IO统计信息
|
||||
@blueprint.route('/set_control', endpoint='set_control', methods=['POST'])
|
||||
@panel_login_required
|
||||
def set_control():
|
||||
stype = request.form.get('type', '')
|
||||
day = request.form.get('day', '')
|
||||
|
||||
if stype == '0':
|
||||
option.setOption('monitor_status', 'close', type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == '1':
|
||||
_day = int(day)
|
||||
if _day < 1:
|
||||
return mw.returnData(False, "设置失败!")
|
||||
option.setOption('monitor_day', day, type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == '2':
|
||||
option.setOption('monitor_only_netio', 'close', type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == '3':
|
||||
option.setOption('monitor_only_netio', 'open', type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == 'del':
|
||||
if not mw.isRestart():
|
||||
return mw.returnData(False, '请等待所有安装任务完成再执行')
|
||||
os.remove("data/system.db")
|
||||
|
||||
sql = db.Sql().dbfile('system')
|
||||
csql = mw.readFile('data/sql/system.sql')
|
||||
csql_list = csql.split(';')
|
||||
for index in range(len(csql_list)):
|
||||
sql.execute(csql_list[index], ())
|
||||
return mw.returnData(True, "监控服务已关闭")
|
||||
else:
|
||||
monitor_status = option.getOption('monitor_status', default='open', type='monitor')
|
||||
monitor_day = option.getOption('monitor_day', default='30', type='monitor')
|
||||
monitor_only_netio = option.getOption('monitor_only_netio', default='open', type='monitor')
|
||||
data = {}
|
||||
data['day'] = monitor_day
|
||||
if monitor_status == 'open':
|
||||
data['status'] = True
|
||||
else:
|
||||
data['status'] = False
|
||||
if monitor_only_netio == 'open':
|
||||
data['stat_all_status'] = True
|
||||
else:
|
||||
data['stat_all_status'] = False
|
||||
|
||||
return data
|
||||
|
||||
return mw.returnData(False, "异常!")
|
||||
|
||||
|
||||
|
||||
|
||||
# 升级检测
|
||||
@blueprint.route('/update_server', endpoint='update_server')
|
||||
@panel_login_required
|
||||
def update_server():
|
||||
panel_type = request.args.get('type', 'check')
|
||||
version = request.args.get('version', '')
|
||||
|
||||
return mw.returnData(False, '已经是最新,无需更新!')
|
||||
|
||||
|
||||
from .system import *
|
||||
from .upgrade import *
|
||||
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
# coding:utf-8
|
||||
|
||||
# ---------------------------------------------------------------------------------
|
||||
# MW-Linux面板
|
||||
# ---------------------------------------------------------------------------------
|
||||
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
||||
# ---------------------------------------------------------------------------------
|
||||
# Author: midoks <midoks@163.com>
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import request
|
||||
|
||||
from admin.user_login_check import panel_login_required
|
||||
import admin.model.option as option
|
||||
|
||||
import core.mw as mw
|
||||
import utils.system as sys
|
||||
|
||||
|
||||
blueprint = Blueprint('system', __name__, url_prefix='/system', template_folder='../../templates')
|
||||
|
||||
# 获取系统的统计信息
|
||||
@blueprint.route('/system_total', endpoint='system_total')
|
||||
@panel_login_required
|
||||
def system_total():
|
||||
data = sys.getMemInfo()
|
||||
cpu = sys.getCpuInfo(interval=1)
|
||||
data['cpuNum'] = cpu[1]
|
||||
data['cpuRealUsed'] = cpu[0]
|
||||
data['time'] = sys.getBootTime()
|
||||
data['system'] = sys.getSystemVersion()
|
||||
data['version'] = '0.0.1'
|
||||
return data
|
||||
|
||||
# 获取系统的网络流量信息
|
||||
@blueprint.route('/network', endpoint='network')
|
||||
@panel_login_required
|
||||
def network():
|
||||
stat = {}
|
||||
stat['cpu'] = sys.getCpuInfo()
|
||||
stat['load'] = sys.getLoadAverage()
|
||||
stat['mem'] = sys.getMemInfo()
|
||||
stat['iostat'] = sys.stats().disk()
|
||||
stat['network'] = sys.stats().network()
|
||||
return stat
|
||||
|
||||
# 获取系统的磁盘信息
|
||||
@blueprint.route('/disk_info', endpoint='disk_info')
|
||||
@panel_login_required
|
||||
def disk_info():
|
||||
data = sys.getDiskInfo()
|
||||
return data
|
||||
|
||||
# 获取系统的负载统计信息
|
||||
@blueprint.route('/get_load_average', endpoint='get_load_average', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_load_average():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
return sys.getLoadAverageByDB(start, end)
|
||||
|
||||
# 获取系统的磁盘IO统计信息
|
||||
@blueprint.route('/get_disk_io', endpoint='get_disk_io', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_disk_io():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
return sys.getDiskIoByDB(start, end)
|
||||
|
||||
# 获取系统的CPU/IO统计信息
|
||||
@blueprint.route('/get_cpu_io', endpoint='get_cpu_io', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_cpu_io():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
return sys.getCpuIoByDB(start, end)
|
||||
|
||||
# 获取系统网络IO统计信息
|
||||
@blueprint.route('/get_network_io', endpoint='get_network_io', methods=['GET'])
|
||||
@panel_login_required
|
||||
def get_network_io():
|
||||
start = request.args.get('start', '')
|
||||
end = request.args.get('end', '')
|
||||
return sys.getNetworkIoByDB(start, end)
|
||||
|
||||
# 重启面板
|
||||
@blueprint.route('/restart', endpoint='restart', methods=['POST'])
|
||||
@panel_login_required
|
||||
def restart():
|
||||
mw.restartMw()
|
||||
return mw.returnData(True, '面板已重启!')
|
||||
|
||||
# 重启面板
|
||||
@blueprint.route('/restart_server', endpoint='restart_server', methods=['POST'])
|
||||
@panel_login_required
|
||||
def restart_server():
|
||||
mw.restartMw()
|
||||
return mw.returnData(True, '面板已重启!')
|
||||
|
||||
|
||||
|
||||
# 设置
|
||||
@blueprint.route('/set_control', endpoint='set_control', methods=['POST'])
|
||||
@panel_login_required
|
||||
def set_control():
|
||||
stype = request.form.get('type', '')
|
||||
day = request.form.get('day', '')
|
||||
|
||||
if stype == '0':
|
||||
option.setOption('monitor_status', 'close', type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == '1':
|
||||
_day = int(day)
|
||||
if _day < 1:
|
||||
return mw.returnData(False, "设置失败!")
|
||||
option.setOption('monitor_day', day, type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == '2':
|
||||
option.setOption('monitor_only_netio', 'close', type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == '3':
|
||||
option.setOption('monitor_only_netio', 'open', type='monitor')
|
||||
return mw.returnData(True, "设置成功!")
|
||||
elif stype == 'del':
|
||||
if not mw.isRestart():
|
||||
return mw.returnData(False, '请等待所有安装任务完成再执行')
|
||||
os.remove("data/system.db")
|
||||
|
||||
sql = db.Sql().dbfile('system')
|
||||
csql = mw.readFile('data/sql/system.sql')
|
||||
csql_list = csql.split(';')
|
||||
for index in range(len(csql_list)):
|
||||
sql.execute(csql_list[index], ())
|
||||
return mw.returnData(True, "监控服务已关闭")
|
||||
else:
|
||||
monitor_status = option.getOption('monitor_status', default='open', type='monitor')
|
||||
monitor_day = option.getOption('monitor_day', default='30', type='monitor')
|
||||
monitor_only_netio = option.getOption('monitor_only_netio', default='open', type='monitor')
|
||||
data = {}
|
||||
data['day'] = monitor_day
|
||||
if monitor_status == 'open':
|
||||
data['status'] = True
|
||||
else:
|
||||
data['status'] = False
|
||||
if monitor_only_netio == 'open':
|
||||
data['stat_all_status'] = True
|
||||
else:
|
||||
data['stat_all_status'] = False
|
||||
|
||||
return data
|
||||
|
||||
return mw.returnData(False, "异常!")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# coding:utf-8
|
||||
|
||||
# ---------------------------------------------------------------------------------
|
||||
# MW-Linux面板
|
||||
# ---------------------------------------------------------------------------------
|
||||
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
||||
# ---------------------------------------------------------------------------------
|
||||
# Author: midoks <midoks@163.com>
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import request
|
||||
|
||||
from admin.user_login_check import panel_login_required
|
||||
|
||||
from admin import model
|
||||
|
||||
import core.mw as mw
|
||||
import utils.system as sys
|
||||
|
||||
from .system import blueprint
|
||||
|
||||
# 升级检测
|
||||
@blueprint.route('/update_server', endpoint='update_server')
|
||||
@panel_login_required
|
||||
def update_server():
|
||||
panel_type = request.args.get('type', 'check')
|
||||
version = request.args.get('version', '')
|
||||
|
||||
return mw.returnData(False, '已经是最新,无需更新!')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user