from fastapi import APIRouter, Depends import logging as log from schemas import scomNetworkMessage, scomServerMessage from auth import verify_token_scom from redis_db import set_value, pop_value from config import conf from telegram import send_message from telegram import del_message router = APIRouter() @router.post("/send-to-dashboard") async def send_message_to_dashboard( message: scomNetworkMessage, token: str = Depends(verify_token_scom), ): if message.alert_resolution_state == "Closed": msg_id = await pop_value(f"scom:net:{message.alert_source}") if msg_id: msg_id = int(msg_id.decode("utf-8")) await del_message(message_id=msg_id, chat_id=conf.tg.chat_id) return result = await send_message( text=f"‼️{message.alert_resolution_state} {message.alert_source} is not responding", chat_id=conf.tg.chat_id, message_thread_id=conf.tg.dashboard_tred_id, ) if result and result["status"] == 200: await set_value(f"scom:net:{message.alert_source}", result["msg_id"]) @router.post("/send-to-net-chat") async def send_message_to_net_chat( message: scomNetworkMessage, token: str = Depends(verify_token_scom), ): if message.alert_resolution_state == "New": text = f"‼️{message.alert_resolution_state} {message.alert_source} is not responding" else: text = ( f"✅{message.alert_resolution_state} {message.alert_source} is responding" ) await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.net_tred_id, ) @router.post("/net") async def net_send_message( message: scomNetworkMessage, token: str = Depends(verify_token_scom), ): if message.alert_resolution_state == "New": text = f"‼️{message.alert_resolution_state} {message.alert_source} is not responding" result = await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.net_dashboard_tred_id, ) if result and result["status"] == 200: await set_value( f"scom:net_dashboard:{message.alert_source}", result["msg_id"] ) result = await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.net_tred_id, ) if result and result["status"] == 200: await set_value(f"scom:net:{message.alert_source}", result["msg_id"]) else: text = f"✅{message.alert_source}\nAlert: {message.alert_name}\nState: {message.alert_resolution_state}\nDescription: {message.alert_description}" dashboard_msg_id = await pop_value(f"scom:net_dashboard:{message.alert_source}") if dashboard_msg_id: dashboard_msg_id = int(dashboard_msg_id.decode("utf-8")) await del_message(message_id=dashboard_msg_id, chat_id=conf.tg.chat_id) msg_id = await pop_value(f"scom:net:{message.alert_source}") if msg_id: msg_id = int(msg_id.decode("utf-8")) await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.net_tred_id, reply_to_message_id=msg_id, ) @router.post("/srv") async def srv_send_message( message: scomServerMessage, token: str = Depends(verify_token_scom), ): if message.alert_resolution_state == "New": text = f"‼️{message.alert_source}\nAlert: {message.alert_name}\nState: {message.alert_resolution_state}\nDescription: {message.alert_description}" result = await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.srv_dashboard_tred_id, ) if result and result["status"] == 200: await set_value( f"scom:srv_dashboard:{message.alert_source}-{message.alert_name}", result["msg_id"], ) result = await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.srv_tred_id, ) if result and result["status"] == 200: await set_value( f"scom:srv:{message.alert_source}-{message.alert_name}", result["msg_id"], ) else: text = f"✅{message.alert_source}\nAlert: {message.alert_name}\nState: {message.alert_resolution_state}\nDescription: {message.alert_description}" dashboard_msg_id = await pop_value( f"scom:srv_dashboard:{message.alert_source}-{message.alert_name}" ) if dashboard_msg_id: dashboard_msg_id = int(dashboard_msg_id.decode("utf-8")) await del_message(message_id=dashboard_msg_id, chat_id=conf.tg.chat_id) msg_id = await pop_value( f"scom:srv:{message.alert_source}-{message.alert_name}" ) if msg_id: msg_id = int(msg_id.decode("utf-8")) await send_message( text=text, chat_id=conf.tg.chat_id, message_thread_id=conf.tg.srv_tred_id, reply_to_message_id=msg_id, )