diff --git a/main.py b/main.py index f286b70..c982bd2 100644 --- a/main.py +++ b/main.py @@ -5,9 +5,12 @@ from meshview import mqtt_reader from meshview import database from meshview import mqtt_store from meshview import web +from meshview import http +from meshview import models import json + 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) @@ -24,6 +27,17 @@ async def main(config): if config["mqtt"]["password"] != "": mqtt_passwd: str = config["mqtt"]["password"] mqtt_topics = json.loads(config["mqtt"]["topics"]) + + # Create database with site configuration + async with database.async_session() as session: + site_config = models.SiteConfig( + site_domain = config["site"]["domain"], + site_title = config["site"]["title"], + site_message = config["site"]["message"] + ) + + session.add(site_config) + # print("Site configuration loaded to database") async with asyncio.TaskGroup() as tg: tg.create_task( @@ -44,6 +58,7 @@ def load_config(file_path): return config + if __name__ == '__main__': parser = argparse.ArgumentParser("meshview") parser.add_argument("--config", help="Path to the configuration file.", default="config.ini") diff --git a/meshview/models.py b/meshview/models.py index 78efa10..752c102 100644 --- a/meshview/models.py +++ b/meshview/models.py @@ -68,3 +68,10 @@ class Traceroute(Base): done: Mapped[bool] = mapped_column(nullable=True) route: Mapped[bytes] = mapped_column(nullable=True) import_time: Mapped[datetime] = mapped_column(nullable=True) + +class SiteConfig(Base): + __tablename__="site_config" + id: Mapped[int] = mapped_column(primary_key=True) + site_domain: Mapped[str] = mapped_column(nullable=False) + site_title: Mapped[str] = mapped_column(nullable=False) + site_message: Mapped[str] = mapped_column(nullable=True) diff --git a/meshview/store.py b/meshview/store.py index f1f7e3b..1b49e9e 100644 --- a/meshview/store.py +++ b/meshview/store.py @@ -2,9 +2,10 @@ import datetime from sqlalchemy import select, func from sqlalchemy.orm import lazyload from meshview import database -from meshview.models import Packet, PacketSeen, Node, Traceroute +from meshview.models import Packet, PacketSeen, Node, Traceroute, SiteConfig from sqlalchemy import text + async def get_node(node_id): async with database.async_session() as session: result = await session.execute(select(Node).where(Node.node_id == node_id)) @@ -313,4 +314,10 @@ async def get_nodes(role=None, channel=None, hw_model=None): return [] # Return an empty list in case of failure - +async def get_site_config(): + async with database.async_session() as session: + query = select(SiteConfig) + result = await session.execute(query) + site_config = result.scalars().all()[-1] + + return site_config \ No newline at end of file diff --git a/meshview/templates/base.html b/meshview/templates/base.html index 436b396..0908770 100644 --- a/meshview/templates/base.html +++ b/meshview/templates/base.html @@ -35,7 +35,8 @@ -
Bay Area Mesh - http://bayme.sh
+
{{ site_config.site_title }} - {{ site_config.site_domain }}
+
{{ site_config.site_message }}
Quick Links:  Nodes - Conversations - See everything  - Mesh Graph LF - MS  - Stats  - Weekly Net - Map - Top Traffic

diff --git a/meshview/templates/packet_index.html b/meshview/templates/packet_index.html index 0882c73..ecff901 100644 --- a/meshview/templates/packet_index.html +++ b/meshview/templates/packet_index.html @@ -3,11 +3,10 @@ {% block body %}
-
+
{% include 'packet.html' %}