@cryptotaxi247 / CoPilot / commits / 1e2bb42a

Create messages.py

taylor_socfortress committed Jul 10, 2023 at 16:43 UTC 1e2bb42a322c66632771bfdee64f3481337263ad
1 file changed +70
backend/app/services/Graylog/messages.py new
+70
@@ -0,0 +1,70 @@
1 +from app.models.agents import (
2 + AgentMetadata,
3 + agent_metadata_schema,
4 + agent_metadatas_schema,
5 +)
6 +from app import db
7 +from datetime import datetime
8 +import requests
9 +from loguru import logger
10 +from app.models.connectors import connector_factory, Connector, GraylogConnector
11 +from app.services.Graylog.universal import UniversalService
12 +
13 +
14 +class MessagesService:
15 + """
16 + A service class that encapsulates the logic for polling messages from Graylog.
17 + """
18 +
19 + def collect_messages(self):
20 + """
21 + Collects the latest 10 messages from Graylog.
22 +
23 + Returns:
24 + list: A list containing the messages.
25 + """
26 + (
27 + connector_url,
28 + connector_username,
29 + connector_password,
30 + ) = UniversalService().collect_graylog_details("Graylog")
31 + if (
32 + connector_url is None
33 + or connector_username is None
34 + or connector_password is None
35 + ):
36 + return {"message": "Failed to collect Graylog details", "success": False}
37 + else:
38 + try:
39 + # Get the Graylog Journal Messages where a parameter of `page` is passed with an integer value of `1`
40 + page_number = 1
41 + graylog_messages = requests.get(
42 + f"{connector_url}/api/system/messages?page={page_number}",
43 + auth=(connector_username, connector_password),
44 + verify=False,
45 + )
46 + # If the response is successful, return the messages as a list
47 + if graylog_messages.status_code == 200:
48 + logger.info(
49 + f"Received {len(graylog_messages.json()['messages'])} messages from Graylog"
50 + )
51 + return {
52 + "message": "Successfully retrieved messages",
53 + "success": True,
54 + "graylog_messages": graylog_messages.json()["messages"],
55 + }
56 + # Otherwise, return an error message
57 + else:
58 + logger.error(
59 + f"Failed to collect messages from Graylog: {graylog_messages.json()}"
60 + )
61 + return {
62 + "message": "Failed to collect messages from Graylog",
63 + "success": False,
64 + }
65 + except Exception as e:
66 + logger.error(f"Failed to collect messages from Graylog: {e}")
67 + return {
68 + "message": "Failed to collect messages from Graylog",
69 + "success": False,
70 + }