mmrelaynode/app/conf_wrapper.py

59 wiersze
2.1 KiB
Python

import os
import yaml
# Read environment variables and construct the configuration dictionary
relay_config = {
"matrix": {
"homeserver": os.environ.get('MATRIX_HOMESERVER'),
"access_token": os.environ.get('MATRIX_ACCESS_TOKEN'),
"bot_user_id": os.environ.get('MATRIX_BOT_USER_ID')
},
"meshtastic": {
"connection_type": os.environ.get('MESHTASTIC_CONNECTION_TYPE'),
"serial_port": os.environ.get('MESHTASTIC_SERIAL_PORT'),
"host": os.environ.get('MESHTASTIC_HOST'),
"meshnet_name": os.environ.get('MESHTASTIC_MESHNET_NAME'),
"broadcast_enabled": os.environ.get('MESHTASTIC_BROADCAST_ENABLED') == 'true'
},
"logging": {
"level": os.environ.get('LOGGING_LEVEL')
}
}
# Construct the matrix_rooms list based on environment variables
matrix_rooms = []
for i in range(1, 9): # Loop for 8 rooms
room_id = os.environ.get(f'MATRIX_ROOMS_ID_{i}')
meshtastic_channel = os.environ.get(f'MATRIX_ROOMS_MESHTASTIC_CHANNEL_{i}')
if room_id and meshtastic_channel is not None:
matrix_rooms.append({
"id": room_id,
"meshtastic_channel": int(meshtastic_channel)
})
# Add the matrix_rooms list to the relay_config dictionary
relay_config["matrix_rooms"] = matrix_rooms
# Construct the plugins dictionary based on environment variables
plugins_config = {}
health_plugin_active = os.environ.get('HEALTH_PLUGIN_ACTIVE')
if health_plugin_active:
plugins_config["health"] = {"active": health_plugin_active.lower() == "true"}
map_plugin_active = os.environ.get('MAP_PLUGIN_ACTIVE')
if map_plugin_active:
plugins_config["map"] = {"active": map_plugin_active.lower() == "true"}
nodes_plugin_active = os.environ.get('NODES_PLUGIN_ACTIVE')
if nodes_plugin_active:
plugins_config["nodes"] = {"active": nodes_plugin_active.lower() == "true"}
# Add the plugins dictionary to the relay_config if it's not empty
if plugins_config:
relay_config["plugins"] = plugins_config
# Write the configuration to config.yaml
with open("config.yaml", "w") as f:
yaml.dump(relay_config, f)