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