From a6a527f15cab7bee59cc12e26434aec0ead43dbc Mon Sep 17 00:00:00 2001 From: dongho Date: Mon, 8 Dec 2025 12:42:02 +0000 Subject: [PATCH] update --- docker-compose.remote.yml | 6 ++++-- main.py | 28 ++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/docker-compose.remote.yml b/docker-compose.remote.yml index d598f4f..edf5b84 100644 --- a/docker-compose.remote.yml +++ b/docker-compose.remote.yml @@ -1,6 +1,8 @@ services: element-manager: build: . + ports: + - "8000:8000" env_file: - .env restart: unless-stopped @@ -14,12 +16,12 @@ services: - traefik.http.middlewares.manager-redirect.redirectscheme.permanent=true - traefik.http.middlewares.manager-redirect.redirectscheme.scheme=https - traefik.http.routers.manager.middlewares=manager-redirect - - traefik.http.middlewares.manager-auth.basicauth.users=${TRAEFIK_AUTH} + # - traefik.http.middlewares.manager-auth.basicauth.users=${TRAEFIK_AUTH} - traefik.http.routers.manager-secure.entrypoints=https - traefik.http.routers.manager-secure.rule=Host(`manager.dongho.kim`) - traefik.http.routers.manager-secure.tls=true - traefik.http.routers.manager-secure.tls.certresolver=cloudflare - - traefik.http.routers.manager-secure.middlewares=manager-auth + # - traefik.http.routers.manager-secure.middlewares=manager-auth - traefik.http.services.manager-secure-service.loadbalancer.server.port=8000 networks: diff --git a/main.py b/main.py index 9ed43bb..9422cc6 100644 --- a/main.py +++ b/main.py @@ -1,17 +1,33 @@ -from fastapi import FastAPI, HTTPException, BackgroundTasks +from fastapi import FastAPI, HTTPException, BackgroundTasks, Request from pydantic import BaseModel from bot import MatrixBot import asyncio from contextlib import asynccontextmanager +import logging +import sys + +# Configure logging to output to stdout +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger("matrix_manager") bot = MatrixBot() @asynccontextmanager async def lifespan(app: FastAPI): # Startup - await bot.login() + logger.info("Starting up Matrix Manager Service...") + try: + await bot.login() + logger.info("Bot logged in successfully.") + except Exception as e: + logger.error(f"Failed to login bot: {e}") yield # Shutdown + logger.info("Shutting down Matrix Manager Service...") await bot.close() app = FastAPI(lifespan=lifespan) @@ -38,6 +54,7 @@ async def send_notification(notification: Notification, background_tasks: Backgr """ Send a notification to a Matrix room. """ + logger.info(f"Received notification request from service: {notification.service_name}") try: # Format the message to include the service name # Plain text fallback @@ -46,9 +63,11 @@ async def send_notification(notification: Notification, background_tasks: Backgr html_message = f"[{notification.service_name}]
{notification.content}" # We can send it in background to not block the API response + logger.info(f"Queueing message for room_id: {notification.room_id or 'Default'}") background_tasks.add_task(bot.send_message, plain_message, html_message, notification.room_id) return {"status": "queued"} except Exception as e: + logger.error(f"Error in send_notification: {e}") raise HTTPException(status_code=500, detail=str(e)) @app.post("/jellyfin") @@ -56,8 +75,10 @@ async def receive_jellyfin_webhook(payload: JellyfinPayload, background_tasks: B """ Receive webhook from Jellyfin and forward to Matrix. """ + logger.info(f"Received Jellyfin webhook. Type: {payload.notification_type}, Item: {payload.item_type}") try: if payload.notification_type != "ItemAdded": + logger.info("Ignored Jellyfin event (not ItemAdded)") return {"status": "ignored", "reason": "Not an ItemAdded event"} # content construction @@ -80,13 +101,16 @@ async def receive_jellyfin_webhook(payload: JellyfinPayload, background_tasks: B plain_message = f"[Jellyfin]\n{content}" html_message = f"[Jellyfin]
{content.replace(chr(10), '
')}" + logger.info(f"Queueing Jellyfin message for room_id: {payload.room_id or 'Default'}") background_tasks.add_task(bot.send_message, plain_message, html_message, payload.room_id) return {"status": "queued"} except Exception as e: + logger.error(f"Error in receive_jellyfin_webhook: {e}") raise HTTPException(status_code=500, detail=str(e)) @app.get("/health") async def health_check(): + logger.info("Health check requested") return {"status": "ok"}