2024-10-11 13:40:19 +00:00
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
import logging as log
|
|
|
|
|
2024-10-14 13:59:25 +00:00
|
|
|
from schemas import scomNetworkMessage, scomServerMessage
|
2024-10-11 13:40:19 +00:00
|
|
|
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,
|
|
|
|
)
|
2024-10-14 13:59:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
@router.post("/net")
|
2024-10-14 14:01:47 +00:00
|
|
|
async def net_send_message(
|
2024-10-14 13:59:25 +00:00
|
|
|
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,
|
|
|
|
)
|