You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
4.2 KiB
108 lines
4.2 KiB
import os
|
|
from quart import jsonify, request,flash,redirect,url_for,session
|
|
from . import api
|
|
from web.common.utils import login_required
|
|
from core.DBManager import mDBM
|
|
from core.Upload_file import allowed_file,check_file,update_system
|
|
from myutils.ConfigManager import myCongif
|
|
from myutils.ReManager import mReM
|
|
from werkzeug.utils import secure_filename
|
|
|
|
@api.route('/system/info',methods=['GET'])
|
|
@login_required
|
|
async def system_info(): #获取系统信息
|
|
strsql = "select * from device;"
|
|
data = mDBM.do_select(strsql,1)
|
|
strRet = ""
|
|
if data:
|
|
strRet = {"ID":data[0],"version":data[1],"dev_ip":data[2],"dev_mask":data[3],"dev_gateway":data[4],
|
|
"server_ip":data[5],"server_port":data[6]}
|
|
return jsonify(strRet) #它将Python对象转换为JSON格式的字符串,并将其作为HTTP响应的主体返回给客户端,
|
|
# 同时设置正确的Content-Type响应头,表明响应主体是JSON格式的数据。
|
|
|
|
@api.route('/system/upload',methods=['POST'])
|
|
@login_required
|
|
async def system_upload(): #上传系统升级文件
|
|
form = await request.form
|
|
files = await request.files
|
|
if 'file' not in files:
|
|
flash('参数错误')
|
|
return redirect(request.url)
|
|
file = files['file']
|
|
if file.filename == '':
|
|
flash('没有选择文件')
|
|
return redirect(request.url)
|
|
if file and allowed_file(file.filename):
|
|
filename = secure_filename(file.filename)
|
|
file_path = os.path.join(myCongif.get_data('UPLOAD_FOLDER'), filename)
|
|
await file.save(file_path)
|
|
if check_file(file_path,1):
|
|
session['file'] = file_path
|
|
flash('升级包上传成功')
|
|
else:
|
|
flash('升级包不合法,请重新上传')
|
|
#return redirect(url_for('main.get_html', html='系统管理.html'))
|
|
return redirect(request.url)
|
|
else:
|
|
flash('只允许上传zip文件')
|
|
return redirect(request.url)
|
|
|
|
@api.route('/system/upgrade',methods=['POST'])
|
|
@login_required
|
|
async def system_upgrade(): #系统升级
|
|
if 'file' not in session:
|
|
reStatus = 0
|
|
reMsg = "请先上传升级包文件"
|
|
else:
|
|
filepath = session['file']
|
|
if update_system(filepath):
|
|
reStatus = 1
|
|
reMsg = "系统升级成功"
|
|
else:
|
|
reStatus = 0
|
|
reMsg = "系统升级失败"
|
|
return jsonify({'status': reStatus, 'msg': reMsg})
|
|
|
|
@api.route('/system/netinfo',methods=['GET']) #获取系统信息 时已经获取,不再处理
|
|
@login_required
|
|
async def system_net_info(): #获取网络信息
|
|
return jsonify(1)
|
|
|
|
@api.route('/system/changenet',methods=['POST'])
|
|
@login_required
|
|
async def system_net_change(): #修改网络信息
|
|
ip = (await request.form)['ip']
|
|
mask = (await request.form)['mask']
|
|
gateway = (await request.form)['gateway']
|
|
#对ip,mask.geteway的合法性进行判断
|
|
if mReM.is_valid_ip(ip) and mReM.is_valid_ip(gateway) and mReM.is_valid_subnet_mask(mask):
|
|
strsql = f"update device set dev_ip='{ip}',dev_mask='{mask}',dev_gateway='{gateway}'"
|
|
if mDBM.do_sql(strsql):
|
|
reStatus = 1
|
|
reMsg = '修改成功,请确认无误后,重启设备!'
|
|
else:
|
|
reStatus = 0
|
|
reMsg = '修改失败,请联系技术支持!'
|
|
else:
|
|
reStatus = 0
|
|
reMsg= '输入的参数不合法,请检查!'
|
|
return jsonify({'status':reStatus,'msg':reMsg})
|
|
|
|
@api.route('/system/changeserver',methods=['POST'])
|
|
@login_required
|
|
async def system_server_change(): #修改服务器信息
|
|
ip = (await request.form)['ip']
|
|
port = (await request.form)['port']
|
|
# 对ip,mask.geteway的合法性进行判断
|
|
if mReM.is_valid_ip(ip) and mReM.is_valid_port(port):
|
|
strsql = f"update device set service_ip='{ip}',service_port='{port}';"
|
|
if mDBM.do_sql(strsql):
|
|
reStatus = 1
|
|
reMsg = '修改成功,请确认无误后,重启设备!'
|
|
else:
|
|
reStatus = 0
|
|
reMsg = '修改失败,请联系技术支持!'
|
|
else:
|
|
reStatus = 0
|
|
reMsg = '输入的参数不合法,请检查!'
|
|
return jsonify({'status': reStatus, 'msg': reMsg})
|
|
|