239 lines
12 KiB
Python
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')
|