mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-08-02 06:53:24 +02:00
changed font size on chat
This commit is contained in:
Generated
+1
-1
@@ -2,7 +2,7 @@
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/meshview-2.iml" filepath="$PROJECT_DIR$/.idea/meshview-2.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/meshview 4.iml" filepath="$PROJECT_DIR$/.idea/meshview 4.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,31 @@
|
||||
import configparser
|
||||
import argparse
|
||||
|
||||
# Parse command-line arguments
|
||||
parser = argparse.ArgumentParser(description="MeshView Configuration Loader")
|
||||
parser.add_argument("--config", type=str, default="config.ini", help="Path to config.ini file (default: config.ini)")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Initialize config parser
|
||||
config = configparser.ConfigParser()
|
||||
if not config.read(args.config):
|
||||
raise FileNotFoundError(f"Config file '{args.config}' not found! Ensure the file exists.")
|
||||
|
||||
# MQTT settings
|
||||
SERVER = config["MQTT"].get("SERVER", "localhost")
|
||||
TOPICS = config["MQTT"].get("TOPICS", "").split(",") # Convert to list
|
||||
MQTT_PORT = int(config["MQTT"].get("PORT", 1883))
|
||||
USERNAME = config["MQTT"].get("USERNAME", "")
|
||||
PASSWORD = config["MQTT"].get("PASSWORD", "")
|
||||
|
||||
# Database settings
|
||||
CONNECTION_STRING = config["DATABASE"].get("CONNECTION_STRING", "sqlite:///meshview.db")
|
||||
|
||||
# Server settings
|
||||
BIND = config["SERVER"].get("BIND", "0.0.0.0")
|
||||
WEB_PORT = int(config["SERVER"].get("PORT", 8080))
|
||||
TLS_CERTS = config["SERVER"].get("TLS_CERTS", "")
|
||||
ACME_CHALLENGE = config["SERVER"].get("ACME_CHALLENGE", "")
|
||||
|
||||
# Website settings
|
||||
TITLE = config["WEBSITE"].get("TITLE", "MeshView")
|
||||
@@ -1,48 +1,12 @@
|
||||
import asyncio
|
||||
import argparse
|
||||
import configparser
|
||||
from meshview import mqtt_reader
|
||||
from meshview import database
|
||||
from meshview import mqtt_store
|
||||
from meshview import web
|
||||
|
||||
async def main():
|
||||
|
||||
|
||||
async def load_database_from_mqtt(mqtt_server: str , mqtt_port: int, topic: list, mqtt_user: str | None = None, mqtt_passwd: str | None = None):
|
||||
async for topic, env in mqtt_reader.get_topic_envelopes(mqtt_server, mqtt_port, topic, mqtt_user, mqtt_passwd):
|
||||
await mqtt_store.process_envelope(topic, env)
|
||||
|
||||
|
||||
async def main(config):
|
||||
database.init_database(config["database"]["connection_string"])
|
||||
|
||||
#await database.create_tables()
|
||||
|
||||
async with asyncio.TaskGroup() as tg:
|
||||
tg.create_task(
|
||||
web.run_server(
|
||||
config["server"]["bind"],
|
||||
int(config["server"]["port"]),
|
||||
config["server"].get("tls_cert"),
|
||||
)
|
||||
web.run_server()
|
||||
)
|
||||
|
||||
def load_config(file_path):
|
||||
"""Load configuration from an INI-style text file."""
|
||||
config_parser = configparser.ConfigParser()
|
||||
config_parser.read(file_path)
|
||||
|
||||
# Convert to a dictionary for easier access
|
||||
config = {section: dict(config_parser.items(section)) for section in config_parser.sections()}
|
||||
return config
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser("meshview")
|
||||
parser.add_argument("--config", help="Path to the configuration file.", default="config.ini")
|
||||
args = parser.parse_args()
|
||||
|
||||
config = load_config(args.config)
|
||||
|
||||
asyncio.run(main(config))
|
||||
asyncio.run(main())
|
||||
|
||||
+18
-8
@@ -20,10 +20,14 @@ from meshtastic.protobuf.portnums_pb2 import PortNum
|
||||
from meshview import store
|
||||
from meshview import models
|
||||
from meshview import decode_payload
|
||||
import gc
|
||||
from meshview import database
|
||||
import psutil
|
||||
import gc
|
||||
import config
|
||||
|
||||
env = Environment(loader=PackageLoader("meshview"), autoescape=select_autoescape())
|
||||
# Start Database
|
||||
database.init_database(config.CONNECTION_STRING)
|
||||
|
||||
# Optimize garbage collection frequency
|
||||
gc.set_threshold(100, 10, 10)
|
||||
@@ -1329,21 +1333,27 @@ async def nodegraph(request):
|
||||
|
||||
|
||||
|
||||
async def run_server(bind, port, tls_cert):
|
||||
gc.set_threshold(10, 10, 10)
|
||||
@routes.get("/config")
|
||||
async def get_config(request):
|
||||
return web.json_response({
|
||||
"Server": config.SERVER,
|
||||
"Title": config.TITLE
|
||||
})
|
||||
|
||||
|
||||
async def run_server():
|
||||
app = web.Application()
|
||||
app.add_routes(routes)
|
||||
runner = web.AppRunner(app)
|
||||
await runner.setup()
|
||||
if tls_cert:
|
||||
if config.TLS_CERTS:
|
||||
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
||||
ssl_context.load_cert_chain(tls_cert)
|
||||
ssl_context.load_cert_chain(config.TLS_CERTS)
|
||||
else:
|
||||
ssl_context = None
|
||||
for host in bind:
|
||||
site = web.TCPSite(runner, host, port, ssl_context=ssl_context)
|
||||
for host in config.BIND:
|
||||
site = web.TCPSite(runner, host, config.WEB_PORT, ssl_context=ssl_context)
|
||||
await site.start()
|
||||
print_memory_usage()
|
||||
while True:
|
||||
await asyncio.sleep(3600) # sleep forever
|
||||
|
||||
|
||||
Reference in New Issue
Block a user