This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
CMS/5.MISC/CMS程序替换教程/html/app.py
2024-11-19 17:19:21 +08:00

239 lines
12 KiB
Python

import time
import toml
import re
import uuid
import hashlib
import subprocess
from flask import Flask, request, render_template
import threading
app = Flask(__name__)
mac_address = uuid.getnode()
mac_hash = hashlib.md5(str(mac_address).encode()).hexdigest()
mac_decimal = int(mac_hash, 16) % (10 ** 13)
start_password = None
govern_password = None
print(mac_decimal)
def password_config():
global start_password
global govern_password
# 读取密码
with open('/var/www/html/password_config.toml', 'r', encoding='utf-8') as f:
passwordconfig = toml.load(f)
start_password = passwordconfig['password']['start']
govern_password = passwordconfig['password']['govern']
def update_network_config(device_ip, gateway):
# 更新IP地址和网关到网络配置文件
with open('/etc/netplan/01-netcfg.yaml', 'r') as f:
network_config = f.read()
network_config = re.sub(r'addresses:\s*\[.*?\]', f'addresses: [{device_ip}/24]', network_config, count=1)
network_config = re.sub(r'via:\s*\d+\.\d+\.\d+\.\d+', f'via: {gateway}', network_config, count=1)
with open('/etc/netplan/01-netcfg.yaml', 'w') as f:
f.write(network_config)
# 应用网关配置文件
subprocess.run(['netplan', 'apply'])
time.sleep(120)
subprocess.run(['sudo', 'reboot'])
@app.route('/')
def index():
global start_password
global govern_password
# 加载文件中的数据到字典
with open('/usr/local/gateway/src/config.toml', 'r', encoding='utf-8') as f:
config = toml.load(f)
return render_template('test.html', mac_decimal=mac_decimal, govern_password=govern_password,
start_password=start_password,
broker=config['mqtt']['broker'],
client_id=config['mqtt']['client_id'],
device_id=config['mqtt']['device_id'],
windfarm=config['mqtt']['windfarm'],
fansnum=config['mqtt']['fansnum'],
ch0_measurpoint=config['mqtt']['ch0_measurpoint'],
ch1_measurpoint=config['mqtt']['ch1_measurpoint'],
ch2_measurpoint=config['mqtt']['ch2_measurpoint'],
ch3_measurpoint=config['mqtt']['ch3_measurpoint'],
ch4_measurpoint=config['mqtt']['ch4_measurpoint'],
ch5_measurpoint=config['mqtt']['ch5_measurpoint'],
ch6_measurpoint=config['mqtt']['ch6_measurpoint'],
ch7_measurpoint=config['mqtt']['ch7_measurpoint'],
ch0_measurpointdirection=config['mqtt']['ch0_measurpointdirection'],
ch1_measurpointdirection=config['mqtt']['ch1_measurpointdirection'],
ch2_measurpointdirection=config['mqtt']['ch2_measurpointdirection'],
ch3_measurpointdirection=config['mqtt']['ch3_measurpointdirection'],
ch4_measurpointdirection=config['mqtt']['ch4_measurpointdirection'],
ch5_measurpointdirection=config['mqtt']['ch5_measurpointdirection'],
ch6_measurpointdirection=config['mqtt']['ch6_measurpointdirection'],
ch7_measurpointdirection=config['mqtt']['ch7_measurpointdirection'],
ch0_sensorparameters=config['mqtt']['ch0_sensorparameters'],
ch1_sensorparameters=config['mqtt']['ch1_sensorparameters'],
ch2_sensorparameters=config['mqtt']['ch2_sensorparameters'],
ch3_sensorparameters=config['mqtt']['ch3_sensorparameters'],
ch4_sensorparameters=config['mqtt']['ch4_sensorparameters'],
ch5_sensorparameters=config['mqtt']['ch5_sensorparameters'],
ch6_sensorparameters=config['mqtt']['ch6_sensorparameters'],
ch7_sensorparameters=config['mqtt']['ch7_sensorparameters'],
ch0_samplingtime=config['mqtt']['ch0_samplingtime'],
ch1_samplingtime=config['mqtt']['ch1_samplingtime'],
ch2_samplingtime=config['mqtt']['ch2_samplingtime'],
ch3_samplingtime=config['mqtt']['ch3_samplingtime'],
ch4_samplingtime=config['mqtt']['ch4_samplingtime'],
ch5_samplingtime=config['mqtt']['ch5_samplingtime'],
ch6_samplingtime=config['mqtt']['ch6_samplingtime'],
ch7_samplingtime=config['mqtt']['ch7_samplingtime'],
ch0_samplingfrequency=config['mqtt']['ch0_samplingfrequency'],
ch1_samplingfrequency=config['mqtt']['ch1_samplingfrequency'],
ch2_samplingfrequency=config['mqtt']['ch2_samplingfrequency'],
ch3_samplingfrequency=config['mqtt']['ch3_samplingfrequency'],
ch4_samplingfrequency=config['mqtt']['ch4_samplingfrequency'],
ch5_samplingfrequency=config['mqtt']['ch5_samplingfrequency'],
ch6_samplingfrequency=config['mqtt']['ch6_samplingfrequency'],
ch7_samplingfrequency=config['mqtt']['ch7_samplingfrequency']
# 其他需要传递的值
)
@app.route('/submit', methods=['POST'])
def submit():
ppassword = request.form.get('newPassword')
broker = request.form.get('broker')
client_id = request.form.get('client_id')
windfarm = request.form.get('windfarm')
fansnum = request.form.get('fansnum')
ch0_measurpoint = request.form.get('ch0_measurpoint')
ch1_measurpoint = request.form.get('ch1_measurpoint')
ch2_measurpoint = request.form.get('ch2_measurpoint')
ch3_measurpoint = request.form.get('ch3_measurpoint')
ch4_measurpoint = request.form.get('ch4_measurpoint')
ch5_measurpoint = request.form.get('ch5_measurpoint')
ch6_measurpoint = request.form.get('ch6_measurpoint')
ch7_measurpoint = request.form.get('ch7_measurpoint')
ch0_measurpointdirection = request.form.get('ch0_measurpointdirection')
ch1_measurpointdirection = request.form.get('ch1_measurpointdirection')
ch2_measurpointdirection = request.form.get('ch2_measurpointdirection')
ch3_measurpointdirection = request.form.get('ch3_measurpointdirection')
ch4_measurpointdirection = request.form.get('ch4_measurpointdirection')
ch5_measurpointdirection = request.form.get('ch5_measurpointdirection')
ch6_measurpointdirection = request.form.get('ch6_measurpointdirection')
ch7_measurpointdirection = request.form.get('ch7_measurpointdirection')
ch0_sensorparameters = request.form.get('ch0_sensorparameters')
ch1_sensorparameters = request.form.get('ch1_sensorparameters')
ch2_sensorparameters = request.form.get('ch2_sensorparameters')
ch3_sensorparameters = request.form.get('ch3_sensorparameters')
ch4_sensorparameters = request.form.get('ch4_sensorparameters')
ch5_sensorparameters = request.form.get('ch5_sensorparameters')
ch6_sensorparameters = request.form.get('ch6_sensorparameters')
ch7_sensorparameters = request.form.get('ch7_sensorparameters')
ch0_samplingtime = request.form.get('ch0_samplingtime')
ch1_samplingtime = request.form.get('ch1_samplingtime')
ch2_samplingtime = request.form.get('ch2_samplingtime')
ch3_samplingtime = request.form.get('ch3_samplingtime')
ch4_samplingtime = request.form.get('ch4_samplingtime')
ch5_samplingtime = request.form.get('ch5_samplingtime')
ch6_samplingtime = request.form.get('ch6_samplingtime')
ch7_samplingtime = request.form.get('ch7_samplingtime')
ch0_samplingfrequency = request.form.get('ch0_samplingfrequency')
ch1_samplingfrequency = request.form.get('ch1_samplingfrequency')
ch2_samplingfrequency = request.form.get('ch2_samplingfrequency')
ch3_samplingfrequency = request.form.get('ch3_samplingfrequency')
ch4_samplingfrequency = request.form.get('ch4_samplingfrequency')
ch5_samplingfrequency = request.form.get('ch5_samplingfrequency')
ch6_samplingfrequency = request.form.get('ch6_samplingfrequency')
ch7_samplingfrequency = request.form.get('ch7_samplingfrequency')
device_id = request.form.get('device_id')
print("password:", ppassword)
# 加载文件中的数据到字典
with open('/usr/local/gateway/src/config.toml', 'r', encoding='utf-8') as f:
config = toml.load(f)
# 修改密码
if ppassword:
with open('/var/www/html/password_config.toml', 'r', encoding='utf-8') as f:
passwordconfig = toml.load(f)
passwordconfig['password']['start'] = ppassword
with open('/var/www/html/password_config.toml', 'w', encoding='utf-8') as f:
toml.dump(passwordconfig, f)
# 修改字典中的值
config['mqtt']['broker'] = broker
config['mqtt']['client_id'] = client_id
config['mqtt']['windfarm'] = windfarm
config['mqtt']['fansnum'] = fansnum
config['mqtt']['ch0_measurpoint'] = ch0_measurpoint
config['mqtt']['ch1_measurpoint'] = ch1_measurpoint
config['mqtt']['ch2_measurpoint'] = ch2_measurpoint
config['mqtt']['ch3_measurpoint'] = ch3_measurpoint
config['mqtt']['ch4_measurpoint'] = ch4_measurpoint
config['mqtt']['ch5_measurpoint'] = ch5_measurpoint
config['mqtt']['ch6_measurpoint'] = ch6_measurpoint
config['mqtt']['ch7_measurpoint'] = ch7_measurpoint
config['mqtt']['ch0_measurpointdirection'] = ch0_measurpointdirection
config['mqtt']['ch1_measurpointdirection'] = ch1_measurpointdirection
config['mqtt']['ch2_measurpointdirection'] = ch2_measurpointdirection
config['mqtt']['ch3_measurpointdirection'] = ch3_measurpointdirection
config['mqtt']['ch4_measurpointdirection'] = ch4_measurpointdirection
config['mqtt']['ch5_measurpointdirection'] = ch5_measurpointdirection
config['mqtt']['ch6_measurpointdirection'] = ch6_measurpointdirection
config['mqtt']['ch7_measurpointdirection'] = ch7_measurpointdirection
config['mqtt']['ch0_sensorparameters'] = ch0_sensorparameters
config['mqtt']['ch1_sensorparameters'] = ch1_sensorparameters
config['mqtt']['ch2_sensorparameters'] = ch2_sensorparameters
config['mqtt']['ch3_sensorparameters'] = ch3_sensorparameters
config['mqtt']['ch4_sensorparameters'] = ch4_sensorparameters
config['mqtt']['ch5_sensorparameters'] = ch5_sensorparameters
config['mqtt']['ch6_sensorparameters'] = ch6_sensorparameters
config['mqtt']['ch7_sensorparameters'] = ch7_sensorparameters
config['mqtt']['ch0_samplingtime'] = ch0_samplingtime
config['mqtt']['ch1_samplingtime'] = ch1_samplingtime
config['mqtt']['ch2_samplingtime'] = ch2_samplingtime
config['mqtt']['ch3_samplingtime'] = ch3_samplingtime
config['mqtt']['ch4_samplingtime'] = ch4_samplingtime
config['mqtt']['ch5_samplingtime'] = ch5_samplingtime
config['mqtt']['ch6_samplingtime'] = ch6_samplingtime
config['mqtt']['ch7_samplingtime'] = ch7_samplingtime
config['mqtt']['ch0_samplingfrequency'] = ch0_samplingfrequency
config['mqtt']['ch1_samplingfrequency'] = ch1_samplingfrequency
config['mqtt']['ch2_samplingfrequency'] = ch2_samplingfrequency
config['mqtt']['ch3_samplingfrequency'] = ch3_samplingfrequency
config['mqtt']['ch4_samplingfrequency'] = ch4_samplingfrequency
config['mqtt']['ch5_samplingfrequency'] = ch5_samplingfrequency
config['mqtt']['ch6_samplingfrequency'] = ch6_samplingfrequency
config['mqtt']['ch7_samplingfrequency'] = ch7_samplingfrequency
config['mqtt']['device_id'] = device_id
device_ip = request.form.get('device_IP')
gateway = request.form.get('gateway')
# 保存修改后的字典回文件
with open('/usr/local/gateway/src/config.toml', 'w', encoding='utf-8') as f:
toml.dump(config, f)
# 在后台异步处理网络配置的更改操作
threading.Thread(target=update_network_config, args=(device_ip, gateway)).start()
return '提交成功!'
if __name__ == '__main__':
password_config()
app.run(host='0.0.0.0')