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

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})