@cryptotaxi247 / CoPilot / commits / b40bb8a9

precommit

Taylor committed Jul 11, 2023 at 16:47 UTC b40bb8a9d89da838358dd1b912ed8f0e02426bb0
6 files changed +3541 -3936
backend/docs/connectors.md
+50 -2
@@ -2,14 +2,62 @@
2
3 ### <span style="color:blue">Connectors Model</span>
4
5 +This Python file, named connectors.py, primarily defines a series of connector classes that establish and verify connections with various services. Each connector class is a subclass of an abstract base class called Connector, which outlines the essential methods that each connector needs to implement.
6 +
7 +Here is a breakdown of the main components of the file:
8 +
9 +Connector(ABC): This is the abstract base class that outlines the essential blueprint for the connector classes. It defines an abstract method verify_connection(self) -> Dict[str, Any] that all subclasses must implement.
10 +
11 +WazuhIndexerConnector(Connector), GraylogConnector(Connector), WazuhManagerConnector(Connector), ShuffleConnector(Connector), DfirIrisConnector(Connector), VelociraptorConnector(Connector), RabbitMQConnector(Connector): These are subclasses of the Connector class. Each subclass represents a connector for a specific service (e.g., Wazuh indexer service, Graylog service, Wazuh manager service, etc.). They implement the verify_connection(self) -> Dict[str, Any] method to establish and verify a connection with their respective service.
12 +
13 +This module contains the following classes:
14 +
15 +ConnectorFactory: This class is used to create instances of the connector classes. It maintains a dictionary mapping connector keys to their corresponding creator names. The register_creator method allows you to add new connector creators to the dictionary. The create method uses this dictionary to create a new connector instance based on the provided key.
16 +
17 +dynamic_import(module_name: str, class_name: str) -> Any: This function dynamically imports a module and returns a specific class from it.
18 +
19 +At the end of the file, an instance of the ConnectorFactory class is created and the connector creators for the seven connector classes are registered. This allows for the dynamic creation of connector instances based on the specified key.
20 +
21 +Overall, this file provides a framework for creating and handling different types of service connectors, making it easier to establish and manage connections with various services.
22 +
23 ::: app.models.connectors
6 -<br>
24
25 ### <span style="color:green">Connectors Routes</span>
26
27 +This file, connectors.py, is a Flask blueprint module designed to define routes for operations related to connectors. Connectors are likely software components used to interact with various external systems or services, such as APIs or databases.
28 +
29 +Here is a detailed breakdown of its functions:
30 +
31 +list_connectors_available: An endpoint (/connectors) that uses a GET request to retrieve all available connectors. It queries the database for all connectors, dumps them into a result, and then processes each connector to instantiate it. The function returns a JSON response containing the list of all instantiated connectors.
32 +
33 +get_connector_details: An endpoint (/connectors/<id>) that uses a GET request to retrieve the details of a specific connector, identified by its ID. It uses the ConnectorService to validate if the connector exists. If the connector exists, the function queries the database for the connector details, processes the connector to instantiate it, and returns a JSON response containing the connector details. If the connector does not exist, it returns a 404 error.
34 +
35 +update_connector_route: An endpoint (/connectors/<id>) that uses a PUT request to update the details of a specific connector, identified by its ID. It uses the ConnectorService to validate if the connector exists and if the request data is valid. If both conditions are satisfied, the function uses the ConnectorService to update the connector in the database and then verify the connector connection. It returns a JSON response containing the connector name and the status of the connection verification. If the connector does not exist or the request data is invalid, it returns an error.
36 +
37 +This module contains the routes related to connectors.
38 +
39 ::: app.routes.connectors
11 -<br>
40
41 ### <span style="color:red">Connectors Services</span>
42
43 +The connectors.py script is part of a service layer that handles the operations related to connector objects in the application. Connectors in this context refer to connections with external services or APIs.
44 +
45 +Here is a detailed summary of its functionalities:
46 +
47 +The ConnectorService class is defined to manage operations related to connectors. The service class is initialized with a database session which is used for connector operations.
48 +
49 +The update_connector_in_db method updates a connector in the database with the provided data. It returns a dictionary containing the success status and a message indicating the status.
50 +
51 +The process_connector method creates a connector instance, verifies the connection, and returns the connector details.
52 +
53 +The validate_connector_exists method checks if a connector exists in the database. If the connector exists, it returns the connector name. If the connector was not found, it returns a message indicating so.
54 +
55 +The update_connector method updates a connector in the database with the provided data. It also checks if the connector is None and returns a relevant message if true.
56 +
57 +The verify_connector_connection method verifies the connection of a connector. If the connection was verified successfully, it returns the connector name and the connection status. If the connector was not found, it returns a message indicating so.
58 +
59 +The validate_request_data method validates the request data to ensure connector_url, connector_username, and connector_password are present.
60 +
61 +The validate_request_data_api_key method validates the request data to ensure connector_url and connector_api_key are present.
62 +
63 ::: app.services.connectors.connectors
backend/site/assets/javascripts/workers/search.74e28a9f.min.js
+11 -22
@@ -67,8 +67,7 @@
67 /*!
68 * lunr.utils
69 * Copyright (C) 2020 Oliver Nightingale
70 - */
71 - ;(t.utils = {}),
70 + */ ;(t.utils = {}),
71 (t.utils.warn = (function (e) {
72 return function (r) {
73 e.console && console.warn && console.warn(r)
@@ -115,8 +114,7 @@
114 /*!
115 * lunr.Set
116 * Copyright (C) 2020 Oliver Nightingale
118 - */
119 - ;(t.Set = function (e) {
117 + */ ;(t.Set = function (e) {
118 if (((this.elements = Object.create(null)), e)) {
119 this.length = e.length
120 for (var r = 0; r < this.length; r++) this.elements[e[r]] = !0
@@ -197,8 +195,7 @@
195 /*!
196 * lunr.tokenizer
197 * Copyright (C) 2020 Oliver Nightingale
200 - */
201 - ;(t.tokenizer = function (e, r) {
198 + */ ;(t.tokenizer = function (e, r) {
199 if (e == null || e == null) return []
200 if (Array.isArray(e))
201 return e.map(function (g) {
@@ -221,8 +218,7 @@
218 /*!
219 * lunr.Pipeline
220 * Copyright (C) 2020 Oliver Nightingale
224 - */
225 - ;(t.Pipeline = function () {
221 + */ ;(t.Pipeline = function () {
222 this._stack = []
223 }),
224 (t.Pipeline.registeredFunctions = Object.create(null)),
@@ -302,8 +298,7 @@
298 /*!
299 * lunr.Vector
300 * Copyright (C) 2020 Oliver Nightingale
305 - */
306 - ;(t.Vector = function (e) {
301 + */ ;(t.Vector = function (e) {
302 ;(this._magnitude = 0), (this.elements = e || [])
303 }),
304 (t.Vector.prototype.positionForIndex = function (e) {
@@ -383,8 +378,7 @@
378 * lunr.stemmer
379 * Copyright (C) 2020 Oliver Nightingale
380 * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
386 - */
387 - ;(t.stemmer = (function () {
381 + */ ;(t.stemmer = (function () {
382 var e = {
383 ational: "ate",
384 tional: "tion",
@@ -507,8 +501,7 @@
501 /*!
502 * lunr.stopWordFilter
503 * Copyright (C) 2020 Oliver Nightingale
510 - */
511 - ;(t.generateStopWordFilter = function (e) {
504 + */ ;(t.generateStopWordFilter = function (e) {
505 var r = e.reduce(function (n, i) {
506 return (n[i] = i), n
507 }, {})
@@ -641,8 +634,7 @@
634 /*!
635 * lunr.trimmer
636 * Copyright (C) 2020 Oliver Nightingale
644 - */
645 - ;(t.trimmer = function (e) {
637 + */ ;(t.trimmer = function (e) {
638 return e.update(function (r) {
639 return r.replace(/^\W+/, "").replace(/\W+$/, "")
640 })
@@ -651,8 +643,7 @@
643 /*!
644 * lunr.TokenSet
645 * Copyright (C) 2020 Oliver Nightingale
654 - */
655 - ;(t.TokenSet = function () {
646 + */ ;(t.TokenSet = function () {
647 ;(this.final = !1), (this.edges = {}), (this.id = t.TokenSet._nextId), (t.TokenSet._nextId += 1)
648 }),
649 (t.TokenSet._nextId = 1),
@@ -816,8 +807,7 @@
807 /*!
808 * lunr.Index
809 * Copyright (C) 2020 Oliver Nightingale
819 - */
820 - ;(t.Index = function (e) {
810 + */ ;(t.Index = function (e) {
811 ;(this.invertedIndex = e.invertedIndex),
812 (this.fieldVectors = e.fieldVectors),
813 (this.tokenSet = e.tokenSet),
@@ -994,8 +984,7 @@
984 /*!
985 * lunr.Builder
986 * Copyright (C) 2020 Oliver Nightingale
997 - */
998 - ;(t.Builder = function () {
987 + */ ;(t.Builder = function () {
988 ;(this._ref = "id"),
989 (this._fields = Object.create(null)),
990 (this._documents = Object.create(null)),
backend/site/connectors/index.html
+2850 -3312
@@ -1,723 +1,918 @@
1 +
2 <!doctype html>
3 <html lang="en" class="no-js">
3 - <head>
4 - <meta charset="utf-8" />
5 - <meta name="viewport" content="width=device-width,initial-scale=1" />
4 + <head>
5 +
6 + <meta charset="utf-8">
7 + <meta name="viewport" content="width=device-width,initial-scale=1">
8 +
9 +
10 +
11 +
12 + <link rel="prev" href="..">
13 +
14
7 - <link rel="prev" href=".." />
15 + <link rel="next" href="../agents/">
16 +
17 + <link rel="icon" href="../assets/images/favicon.png">
18 + <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18">
19
9 - <link rel="next" href="../agents/" />
20
11 - <link rel="icon" href="../assets/images/favicon.png" />
12 - <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18" />
21
22 <title>Connectors - SOCFortress CoPilot</title>
23
16 - <link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css" />
17 -
18 - <link rel="stylesheet" href="../assets/stylesheets/palette.ecc896b0.min.css" />
19 -
20 - <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
21 - <link
22 - rel="stylesheet"
23 - href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"
24 - />
25 - <style>
26 - :root {
27 - --md-text-font: "Roboto";
28 - --md-code-font: "Roboto Mono";
29 - }
30 - </style>
31 -
32 - <link rel="stylesheet" href="../assets/_mkdocstrings.css" />
33 -
34 - <script>
35 - ;(__md_scope = new URL("..", location)),
36 - (__md_hash = e => [...e].reduce((e, _) => (e << 5) - e + _.charCodeAt(0), 0)),
37 - (__md_get = (e, _ = localStorage, t = __md_scope) => JSON.parse(_.getItem(t.pathname + "." + e))),
38 - (__md_set = (e, _, t = localStorage, a = __md_scope) => {
39 - try {
40 - t.setItem(a.pathname + "." + e, JSON.stringify(_))
41 - } catch (e) {}
42 - })
43 - </script>
44 - </head>
24 +
25 +
26 + <link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css">
27 +
28 +
29 + <link rel="stylesheet" href="../assets/stylesheets/palette.ecc896b0.min.css">
30 +
31 +
32 +
33 +
34 +
35 +
36 +
37 +
38 +
39 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
40 + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
41 + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
42 +
43 +
44 +
45 + <link rel="stylesheet" href="../assets/_mkdocstrings.css">
46 +
47 + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
48 +
49 +
50 +
51 +
52 +
53 +
54 + </head>
55 +
56 +
57 +
58 +
59 +
60 +
61 +
62 +
63
64 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple">
47 - <script>
48 - var palette = __md_get("__palette")
49 - if (palette && "object" == typeof palette.color)
50 - for (var key of Object.keys(palette.color))
51 - document.body.setAttribute("data-md-color-" + key, palette.color[key])
52 - </script>
53 -
54 - <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off" />
55 - <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off" />
56 - <label class="md-overlay" for="__drawer"></label>
57 - <div data-md-component="skip">
58 - <a href="#connectors-overview" class="md-skip"> Skip to content </a>
65 +
66 +
67 +
68 + <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
69 +
70 + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
71 + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
72 + <label class="md-overlay" for="__drawer"></label>
73 + <div data-md-component="skip">
74 +
75 +
76 + <a href="#connectors-overview" class="md-skip">
77 + Skip to content
78 + </a>
79 +
80 + </div>
81 + <div data-md-component="announce">
82 +
83 + </div>
84 +
85 +
86 +
87 +
88 +<header class="md-header" data-md-component="header">
89 + <nav class="md-header__inner md-grid" aria-label="Header">
90 + <a href=".." title="SOCFortress CoPilot" class="md-header__button md-logo" aria-label="SOCFortress CoPilot" data-md-component="logo">
91 +
92 +
93 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
94 +
95 + </a>
96 + <label class="md-header__button md-icon" for="__drawer">
97 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
98 + </label>
99 + <div class="md-header__title" data-md-component="header-title">
100 + <div class="md-header__ellipsis">
101 + <div class="md-header__topic">
102 + <span class="md-ellipsis">
103 + SOCFortress CoPilot
104 + </span>
105 </div>
60 - <div data-md-component="announce"></div>
61 -
62 - <header class="md-header" data-md-component="header">
63 - <nav class="md-header__inner md-grid" aria-label="Header">
64 - <a
65 - href=".."
66 - title="SOCFortress CoPilot"
67 - class="md-header__button md-logo"
68 - aria-label="SOCFortress CoPilot"
69 - data-md-component="logo"
70 - >
71 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
72 - <path
73 - d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"
74 - />
75 - </svg>
76 - </a>
77 - <label class="md-header__button md-icon" for="__drawer">
78 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
79 - <path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z" />
80 - </svg>
81 - </label>
82 - <div class="md-header__title" data-md-component="header-title">
83 - <div class="md-header__ellipsis">
84 - <div class="md-header__topic">
85 - <span class="md-ellipsis"> SOCFortress CoPilot </span>
86 - </div>
87 - <div class="md-header__topic" data-md-component="header-topic">
88 - <span class="md-ellipsis"> Connectors </span>
89 - </div>
90 - </div>
91 - </div>
106 + <div class="md-header__topic" data-md-component="header-topic">
107 + <span class="md-ellipsis">
108 +
109 + Connectors
110 +
111 + </span>
112 + </div>
113 + </div>
114 + </div>
115 +
116 +
117 + <form class="md-header__option" data-md-component="palette">
118 +
119 +
120 +
121 +
122 + <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
123 +
124 + <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
125 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
126 + </label>
127 +
128 +
129 +
130 +
131 +
132 + <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="lime" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
133 +
134 + <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
135 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg>
136 + </label>
137 +
138 +
139 + </form>
140 +
141 +
142 +
143 +
144 +
145 + </nav>
146 +
147 +</header>
148 +
149 + <div class="md-container" data-md-component="container">
150 +
151 +
152 +
153 +
154 +
155 +<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
156 + <div class="md-grid">
157 + <ul class="md-tabs__list">
158 +
159 +
160 +
161 +
162 +
163 +
164 + <li class="md-tabs__item">
165 + <a href=".." class="md-tabs__link">
166 + Home
167 + </a>
168 + </li>
169 +
170 +
171 +
172 +
173 +
174 +
175 +
176 +
177 +
178 + <li class="md-tabs__item">
179 + <a href="./" class="md-tabs__link md-tabs__link--active">
180 + Connectors
181 + </a>
182 + </li>
183 +
184 +
185 +
186 +
187 +
188 +
189 +
190 + <li class="md-tabs__item">
191 + <a href="../agents/" class="md-tabs__link">
192 + Agents
193 + </a>
194 + </li>
195 +
196 +
197 +
198 +
199 +
200 +
201 +
202 + <li class="md-tabs__item">
203 + <a href="../wazuhindexer/" class="md-tabs__link">
204 + Wazuh-Indexer
205 + </a>
206 + </li>
207 +
208 +
209 +
210 +
211 +
212 +
213 +
214 + <li class="md-tabs__item">
215 + <a href="../dfiriris/" class="md-tabs__link">
216 + Dfir-Iris
217 + </a>
218 + </li>
219 +
220 +
221 +
222 +
223 +
224 +
225 +
226 + <li class="md-tabs__item">
227 + <a href="../graylog/" class="md-tabs__link">
228 + Graylog
229 + </a>
230 + </li>
231 +
232 +
233 +
234 +
235 +
236 +
237 +
238 + <li class="md-tabs__item">
239 + <a href="../wazuhmanager/" class="md-tabs__link">
240 + Wazuh-Manager
241 + </a>
242 + </li>
243 +
244 +
245 +
246 +
247 +
248 +
249 +
250 + <li class="md-tabs__item">
251 + <a href="../velociraptor/" class="md-tabs__link">
252 + Velociraptor
253 + </a>
254 + </li>
255 +
256 +
257 +
258 +
259 +
260 +
261 +
262 + <li class="md-tabs__item">
263 + <a href="../shuffle/" class="md-tabs__link">
264 + Shuffle
265 + </a>
266 + </li>
267 +
268 +
269 + </ul>
270 + </div>
271 +</nav>
272 +
273 +
274 +
275 + <main class="md-main" data-md-component="main">
276 + <div class="md-main__inner md-grid">
277 +
278 +
279 +
280 + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
281 + <div class="md-sidebar__scrollwrap">
282 + <div class="md-sidebar__inner">
283 +
284 +
285 +
286 +
287 +
288 +
289 +
290 +<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
291 + <label class="md-nav__title" for="__drawer">
292 + <a href=".." title="SOCFortress CoPilot" class="md-nav__button md-logo" aria-label="SOCFortress CoPilot" data-md-component="logo">
293 +
294 +
295 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
296 +
297 + </a>
298 + SOCFortress CoPilot
299 + </label>
300 +
301 + <ul class="md-nav__list" data-md-scrollfix>
302 +
303 +
304 +
305 +
306 +
307 +
308 +
309 +
310 + <li class="md-nav__item">
311 + <a href=".." class="md-nav__link">
312 + Home
313 + </a>
314 + </li>
315 +
316 +
317 +
318 +
319 +
320 +
321 +
322 +
323 +
324 +
325 +
326 +
327 + <li class="md-nav__item md-nav__item--active">
328 +
329 + <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
330 +
331 +
332 +
333 + <label class="md-nav__link md-nav__link--active" for="__toc">
334 + Connectors
335 + <span class="md-nav__icon md-icon"></span>
336 + </label>
337 +
338 + <a href="./" class="md-nav__link md-nav__link--active">
339 + Connectors
340 + </a>
341 +
342 +
343 +
344 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
345 +
346 +
347 +
348 +
349 + <label class="md-nav__title" for="__toc">
350 + <span class="md-nav__icon md-icon"></span>
351 + Table of contents
352 + </label>
353 + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
354 +
355 + <li class="md-nav__item">
356 + <a href="#connectors-overview" class="md-nav__link">
357 + Connectors Overview
358 + </a>
359 +
360 + <nav class="md-nav" aria-label="Connectors Overview">
361 + <ul class="md-nav__list">
362 +
363 + <li class="md-nav__item">
364 + <a href="#connectors-model" class="md-nav__link">
365 + Connectors Model
366 + </a>
367 +
368 +</li>
369 +
370 + </ul>
371 + </nav>
372 +
373 +</li>
374 +
375 + <li class="md-nav__item">
376 + <a href="#app.models.connectors" class="md-nav__link">
377 + app.models.connectors
378 + </a>
379 +
380 +</li>
381 +
382 + <li class="md-nav__item">
383 + <a href="#app.models.connectors.Connector" class="md-nav__link">
384 + Connector
385 + </a>
386 +
387 + <nav class="md-nav" aria-label="Connector">
388 + <ul class="md-nav__list">
389 +
390 + <li class="md-nav__item">
391 + <a href="#app.models.connectors.Connector.get_connector_info_from_db" class="md-nav__link">
392 + get_connector_info_from_db()
393 + </a>
394 +
395 +</li>
396 +
397 + <li class="md-nav__item">
398 + <a href="#app.models.connectors.Connector.verify_connection" class="md-nav__link">
399 + verify_connection()
400 + </a>
401 +
402 +</li>
403 +
404 + </ul>
405 + </nav>
406 +
407 +</li>
408 +
409 + <li class="md-nav__item">
410 + <a href="#app.models.connectors.ConnectorFactory" class="md-nav__link">
411 + ConnectorFactory
412 + </a>
413
93 - <form class="md-header__option" data-md-component="palette">
94 - <input
95 - class="md-option"
96 - data-md-color-media=""
97 - data-md-color-scheme="default"
98 - data-md-color-primary="teal"
99 - data-md-color-accent="purple"
100 - aria-label="Switch to dark mode"
101 - type="radio"
102 - name="__palette"
103 - id="__palette_1"
104 - />
105 -
106 - <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
107 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
108 - <path
109 - d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"
110 - />
111 - </svg>
112 - </label>
113 -
114 - <input
115 - class="md-option"
116 - data-md-color-media=""
117 - data-md-color-scheme="slate"
118 - data-md-color-primary="teal"
119 - data-md-color-accent="lime"
120 - aria-label="Switch to light mode"
121 - type="radio"
122 - name="__palette"
123 - id="__palette_2"
124 - />
125 -
126 - <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
127 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
128 - <path
129 - d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"
130 - />
131 - </svg>
132 - </label>
133 - </form>
134 - </nav>
135 - </header>
136 -
137 - <div class="md-container" data-md-component="container">
138 - <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
139 - <div class="md-grid">
140 - <ul class="md-tabs__list">
141 - <li class="md-tabs__item">
142 - <a href=".." class="md-tabs__link"> Home </a>
143 - </li>
144 -
145 - <li class="md-tabs__item">
146 - <a href="./" class="md-tabs__link md-tabs__link--active"> Connectors </a>
147 - </li>
148 -
149 - <li class="md-tabs__item">
150 - <a href="../agents/" class="md-tabs__link"> Agents </a>
151 - </li>
152 -
153 - <li class="md-tabs__item">
154 - <a href="../wazuhindexer/" class="md-tabs__link"> Wazuh-Indexer </a>
155 - </li>
156 -
157 - <li class="md-tabs__item">
158 - <a href="../dfiriris/" class="md-tabs__link"> Dfir-Iris </a>
159 - </li>
160 -
161 - <li class="md-tabs__item">
162 - <a href="../graylog/" class="md-tabs__link"> Graylog </a>
163 - </li>
164 -
165 - <li class="md-tabs__item">
166 - <a href="../wazuhmanager/" class="md-tabs__link"> Wazuh-Manager </a>
167 - </li>
168 -
169 - <li class="md-tabs__item">
170 - <a href="../velociraptor/" class="md-tabs__link"> Velociraptor </a>
171 - </li>
172 -
173 - <li class="md-tabs__item">
174 - <a href="../shuffle/" class="md-tabs__link"> Shuffle </a>
175 - </li>
176 - </ul>
414 + <nav class="md-nav" aria-label="ConnectorFactory">
415 + <ul class="md-nav__list">
416 +
417 + <li class="md-nav__item">
418 + <a href="#app.models.connectors.ConnectorFactory.__init__" class="md-nav__link">
419 + __init__()
420 + </a>
421 +
422 +</li>
423 +
424 + <li class="md-nav__item">
425 + <a href="#app.models.connectors.ConnectorFactory.create" class="md-nav__link">
426 + create()
427 + </a>
428 +
429 +</li>
430 +
431 + <li class="md-nav__item">
432 + <a href="#app.models.connectors.ConnectorFactory.register_creator" class="md-nav__link">
433 + register_creator()
434 + </a>
435 +
436 +</li>
437 +
438 + </ul>
439 + </nav>
440 +
441 +</li>
442 +
443 + <li class="md-nav__item">
444 + <a href="#app.models.connectors.DfirIrisConnector" class="md-nav__link">
445 + DfirIrisConnector
446 + </a>
447 +
448 + <nav class="md-nav" aria-label="DfirIrisConnector">
449 + <ul class="md-nav__list">
450 +
451 + <li class="md-nav__item">
452 + <a href="#app.models.connectors.DfirIrisConnector.verify_connection" class="md-nav__link">
453 + verify_connection()
454 + </a>
455 +
456 +</li>
457 +
458 + </ul>
459 + </nav>
460 +
461 +</li>
462 +
463 + <li class="md-nav__item">
464 + <a href="#app.models.connectors.GraylogConnector" class="md-nav__link">
465 + GraylogConnector
466 + </a>
467 +
468 + <nav class="md-nav" aria-label="GraylogConnector">
469 + <ul class="md-nav__list">
470 +
471 + <li class="md-nav__item">
472 + <a href="#app.models.connectors.GraylogConnector.verify_connection" class="md-nav__link">
473 + verify_connection()
474 + </a>
475 +
476 +</li>
477 +
478 + </ul>
479 + </nav>
480 +
481 +</li>
482 +
483 + <li class="md-nav__item">
484 + <a href="#app.models.connectors.RabbitMQConnector" class="md-nav__link">
485 + RabbitMQConnector
486 + </a>
487 +
488 + <nav class="md-nav" aria-label="RabbitMQConnector">
489 + <ul class="md-nav__list">
490 +
491 + <li class="md-nav__item">
492 + <a href="#app.models.connectors.RabbitMQConnector.verify_connection" class="md-nav__link">
493 + verify_connection()
494 + </a>
495 +
496 +</li>
497 +
498 + </ul>
499 + </nav>
500 +
501 +</li>
502 +
503 + <li class="md-nav__item">
504 + <a href="#app.models.connectors.ShuffleConnector" class="md-nav__link">
505 + ShuffleConnector
506 + </a>
507 +
508 + <nav class="md-nav" aria-label="ShuffleConnector">
509 + <ul class="md-nav__list">
510 +
511 + <li class="md-nav__item">
512 + <a href="#app.models.connectors.ShuffleConnector.verify_connection" class="md-nav__link">
513 + verify_connection()
514 + </a>
515 +
516 +</li>
517 +
518 + </ul>
519 + </nav>
520 +
521 +</li>
522 +
523 + <li class="md-nav__item">
524 + <a href="#app.models.connectors.VelociraptorConnector" class="md-nav__link">
525 + VelociraptorConnector
526 + </a>
527 +
528 + <nav class="md-nav" aria-label="VelociraptorConnector">
529 + <ul class="md-nav__list">
530 +
531 + <li class="md-nav__item">
532 + <a href="#app.models.connectors.VelociraptorConnector.verify_connection" class="md-nav__link">
533 + verify_connection()
534 + </a>
535 +
536 +</li>
537 +
538 + </ul>
539 + </nav>
540 +
541 +</li>
542 +
543 + <li class="md-nav__item">
544 + <a href="#app.models.connectors.WazuhIndexerConnector" class="md-nav__link">
545 + WazuhIndexerConnector
546 + </a>
547 +
548 + <nav class="md-nav" aria-label="WazuhIndexerConnector">
549 + <ul class="md-nav__list">
550 +
551 + <li class="md-nav__item">
552 + <a href="#app.models.connectors.WazuhIndexerConnector.verify_connection" class="md-nav__link">
553 + verify_connection()
554 + </a>
555 +
556 +</li>
557 +
558 + </ul>
559 + </nav>
560 +
561 +</li>
562 +
563 + <li class="md-nav__item">
564 + <a href="#app.models.connectors.WazuhManagerConnector" class="md-nav__link">
565 + WazuhManagerConnector
566 + </a>
567 +
568 + <nav class="md-nav" aria-label="WazuhManagerConnector">
569 + <ul class="md-nav__list">
570 +
571 + <li class="md-nav__item">
572 + <a href="#app.models.connectors.WazuhManagerConnector.get_auth_token" class="md-nav__link">
573 + get_auth_token()
574 + </a>
575 +
576 +</li>
577 +
578 + <li class="md-nav__item">
579 + <a href="#app.models.connectors.WazuhManagerConnector.verify_connection" class="md-nav__link">
580 + verify_connection()
581 + </a>
582 +
583 +</li>
584 +
585 + </ul>
586 + </nav>
587 +
588 +</li>
589 +
590 + <li class="md-nav__item">
591 + <a href="#app.models.connectors.dynamic_import" class="md-nav__link">
592 + dynamic_import()
593 + </a>
594 +
595 + <nav class="md-nav" aria-label="dynamic_import()">
596 + <ul class="md-nav__list">
597 +
598 + <li class="md-nav__item">
599 + <a href="#connectors-routes" class="md-nav__link">
600 + Connectors Routes
601 + </a>
602 +
603 +</li>
604 +
605 + </ul>
606 + </nav>
607 +
608 +</li>
609 +
610 + <li class="md-nav__item">
611 + <a href="#app.routes.connectors" class="md-nav__link">
612 + app.routes.connectors
613 + </a>
614 +
615 +</li>
616 +
617 + <li class="md-nav__item">
618 + <a href="#app.routes.connectors.get_connector_details" class="md-nav__link">
619 + get_connector_details()
620 + </a>
621 +
622 +</li>
623 +
624 + <li class="md-nav__item">
625 + <a href="#app.routes.connectors.list_connectors_available" class="md-nav__link">
626 + list_connectors_available()
627 + </a>
628 +
629 +</li>
630 +
631 + <li class="md-nav__item">
632 + <a href="#app.routes.connectors.update_connector_route" class="md-nav__link">
633 + update_connector_route()
634 + </a>
635 +
636 + <nav class="md-nav" aria-label="update_connector_route()">
637 + <ul class="md-nav__list">
638 +
639 + <li class="md-nav__item">
640 + <a href="#connectors-services" class="md-nav__link">
641 + Connectors Services
642 + </a>
643 +
644 +</li>
645 +
646 + </ul>
647 + </nav>
648 +
649 +</li>
650 +
651 + <li class="md-nav__item">
652 + <a href="#app.services.connectors.connectors" class="md-nav__link">
653 + app.services.connectors.connectors
654 + </a>
655 +
656 +</li>
657 +
658 + <li class="md-nav__item">
659 + <a href="#app.services.connectors.connectors.ConnectorService" class="md-nav__link">
660 + ConnectorService
661 + </a>
662 +
663 + <nav class="md-nav" aria-label="ConnectorService">
664 + <ul class="md-nav__list">
665 +
666 + <li class="md-nav__item">
667 + <a href="#app.services.connectors.connectors.ConnectorService.__init__" class="md-nav__link">
668 + __init__()
669 + </a>
670 +
671 +</li>
672 +
673 + <li class="md-nav__item">
674 + <a href="#app.services.connectors.connectors.ConnectorService.process_connector" class="md-nav__link">
675 + process_connector()
676 + </a>
677 +
678 +</li>
679 +
680 + <li class="md-nav__item">
681 + <a href="#app.services.connectors.connectors.ConnectorService.update_connector" class="md-nav__link">
682 + update_connector()
683 + </a>
684 +
685 +</li>
686 +
687 + <li class="md-nav__item">
688 + <a href="#app.services.connectors.connectors.ConnectorService.update_connector_in_db" class="md-nav__link">
689 + update_connector_in_db()
690 + </a>
691 +
692 +</li>
693 +
694 + <li class="md-nav__item">
695 + <a href="#app.services.connectors.connectors.ConnectorService.validate_connector_exists" class="md-nav__link">
696 + validate_connector_exists()
697 + </a>
698 +
699 +</li>
700 +
701 + <li class="md-nav__item">
702 + <a href="#app.services.connectors.connectors.ConnectorService.validate_request_data" class="md-nav__link">
703 + validate_request_data()
704 + </a>
705 +
706 +</li>
707 +
708 + <li class="md-nav__item">
709 + <a href="#app.services.connectors.connectors.ConnectorService.validate_request_data_api_key" class="md-nav__link">
710 + validate_request_data_api_key()
711 + </a>
712 +
713 +</li>
714 +
715 + <li class="md-nav__item">
716 + <a href="#app.services.connectors.connectors.ConnectorService.verify_connector_connection" class="md-nav__link">
717 + verify_connector_connection()
718 + </a>
719 +
720 +</li>
721 +
722 + </ul>
723 + </nav>
724 +
725 +</li>
726 +
727 + </ul>
728 +
729 +</nav>
730 +
731 + </li>
732 +
733 +
734 +
735 +
736 +
737 +
738 +
739 +
740 +
741 +
742 + <li class="md-nav__item">
743 + <a href="../agents/" class="md-nav__link">
744 + Agents
745 + </a>
746 + </li>
747 +
748 +
749 +
750 +
751 +
752 +
753 +
754 +
755 +
756 +
757 + <li class="md-nav__item">
758 + <a href="../wazuhindexer/" class="md-nav__link">
759 + Wazuh-Indexer
760 + </a>
761 + </li>
762 +
763 +
764 +
765 +
766 +
767 +
768 +
769 +
770 +
771 +
772 + <li class="md-nav__item">
773 + <a href="../dfiriris/" class="md-nav__link">
774 + Dfir-Iris
775 + </a>
776 + </li>
777 +
778 +
779 +
780 +
781 +
782 +
783 +
784 +
785 +
786 +
787 + <li class="md-nav__item">
788 + <a href="../graylog/" class="md-nav__link">
789 + Graylog
790 + </a>
791 + </li>
792 +
793 +
794 +
795 +
796 +
797 +
798 +
799 +
800 +
801 +
802 + <li class="md-nav__item">
803 + <a href="../wazuhmanager/" class="md-nav__link">
804 + Wazuh-Manager
805 + </a>
806 + </li>
807 +
808 +
809 +
810 +
811 +
812 +
813 +
814 +
815 +
816 +
817 + <li class="md-nav__item">
818 + <a href="../velociraptor/" class="md-nav__link">
819 + Velociraptor
820 + </a>
821 + </li>
822 +
823 +
824 +
825 +
826 +
827 +
828 +
829 +
830 +
831 +
832 + <li class="md-nav__item">
833 + <a href="../shuffle/" class="md-nav__link">
834 + Shuffle
835 + </a>
836 + </li>
837 +
838 +
839 +
840 + </ul>
841 +</nav>
842 + </div>
843 </div>
178 - </nav>
179 -
180 - <main class="md-main" data-md-component="main">
181 - <div class="md-main__inner md-grid">
182 - <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
183 - <div class="md-sidebar__scrollwrap">
184 - <div class="md-sidebar__inner">
185 - <nav
186 - class="md-nav md-nav--primary md-nav--lifted md-nav--integrated"
187 - aria-label="Navigation"
188 - data-md-level="0"
189 - >
190 - <label class="md-nav__title" for="__drawer">
191 - <a
192 - href=".."
193 - title="SOCFortress CoPilot"
194 - class="md-nav__button md-logo"
195 - aria-label="SOCFortress CoPilot"
196 - data-md-component="logo"
197 - >
198 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
199 - <path
200 - d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"
201 - />
202 - </svg>
203 - </a>
204 - SOCFortress CoPilot
205 - </label>
206 -
207 - <ul class="md-nav__list" data-md-scrollfix>
208 - <li class="md-nav__item">
209 - <a href=".." class="md-nav__link"> Home </a>
210 - </li>
211 -
212 - <li class="md-nav__item md-nav__item--active">
213 - <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc" />
214 -
215 - <label class="md-nav__link md-nav__link--active" for="__toc">
216 - Connectors
217 - <span class="md-nav__icon md-icon"></span>
218 - </label>
219 -
220 - <a href="./" class="md-nav__link md-nav__link--active"> Connectors </a>
221 -
222 - <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
223 - <label class="md-nav__title" for="__toc">
224 - <span class="md-nav__icon md-icon"></span>
225 - Table of contents
226 - </label>
227 - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
228 - <li class="md-nav__item">
229 - <a href="#connectors-overview" class="md-nav__link">
230 - Connectors Overview
231 - </a>
232 -
233 - <nav class="md-nav" aria-label="Connectors Overview">
234 - <ul class="md-nav__list">
235 - <li class="md-nav__item">
236 - <a href="#connectors-model" class="md-nav__link">
237 - Connectors Model
238 - </a>
239 - </li>
240 - </ul>
241 - </nav>
242 - </li>
243 -
244 - <li class="md-nav__item">
245 - <a href="#app.models.connectors" class="md-nav__link">
246 - app.models.connectors
247 - </a>
248 - </li>
249 -
250 - <li class="md-nav__item">
251 - <a href="#app.models.connectors.Connector" class="md-nav__link">
252 - Connector
253 - </a>
254 -
255 - <nav class="md-nav" aria-label="Connector">
256 - <ul class="md-nav__list">
257 - <li class="md-nav__item">
258 - <a
259 - href="#app.models.connectors.Connector.get_connector_info_from_db"
260 - class="md-nav__link"
261 - >
262 - get_connector_info_from_db()
263 - </a>
264 - </li>
265 -
266 - <li class="md-nav__item">
267 - <a
268 - href="#app.models.connectors.Connector.verify_connection"
269 - class="md-nav__link"
270 - >
271 - verify_connection()
272 - </a>
273 - </li>
274 - </ul>
275 - </nav>
276 - </li>
277 -
278 - <li class="md-nav__item">
279 - <a
280 - href="#app.models.connectors.ConnectorFactory"
281 - class="md-nav__link"
282 - >
283 - ConnectorFactory
284 - </a>
285 -
286 - <nav class="md-nav" aria-label="ConnectorFactory">
287 - <ul class="md-nav__list">
288 - <li class="md-nav__item">
289 - <a
290 - href="#app.models.connectors.ConnectorFactory.__init__"
291 - class="md-nav__link"
292 - >
293 - __init__()
294 - </a>
295 - </li>
296 -
297 - <li class="md-nav__item">
298 - <a
299 - href="#app.models.connectors.ConnectorFactory.create"
300 - class="md-nav__link"
301 - >
302 - create()
303 - </a>
304 - </li>
305 -
306 - <li class="md-nav__item">
307 - <a
308 - href="#app.models.connectors.ConnectorFactory.register_creator"
309 - class="md-nav__link"
310 - >
311 - register_creator()
312 - </a>
313 - </li>
314 - </ul>
315 - </nav>
316 - </li>
317 -
318 - <li class="md-nav__item">
319 - <a
320 - href="#app.models.connectors.DfirIrisConnector"
321 - class="md-nav__link"
322 - >
323 - DfirIrisConnector
324 - </a>
325 -
326 - <nav class="md-nav" aria-label="DfirIrisConnector">
327 - <ul class="md-nav__list">
328 - <li class="md-nav__item">
329 - <a
330 - href="#app.models.connectors.DfirIrisConnector.verify_connection"
331 - class="md-nav__link"
332 - >
333 - verify_connection()
334 - </a>
335 - </li>
336 - </ul>
337 - </nav>
338 - </li>
339 -
340 - <li class="md-nav__item">
341 - <a
342 - href="#app.models.connectors.GraylogConnector"
343 - class="md-nav__link"
344 - >
345 - GraylogConnector
346 - </a>
347 -
348 - <nav class="md-nav" aria-label="GraylogConnector">
349 - <ul class="md-nav__list">
350 - <li class="md-nav__item">
351 - <a
352 - href="#app.models.connectors.GraylogConnector.verify_connection"
353 - class="md-nav__link"
354 - >
355 - verify_connection()
356 - </a>
357 - </li>
358 - </ul>
359 - </nav>
360 - </li>
361 -
362 - <li class="md-nav__item">
363 - <a
364 - href="#app.models.connectors.RabbitMQConnector"
365 - class="md-nav__link"
366 - >
367 - RabbitMQConnector
368 - </a>
369 -
370 - <nav class="md-nav" aria-label="RabbitMQConnector">
371 - <ul class="md-nav__list">
372 - <li class="md-nav__item">
373 - <a
374 - href="#app.models.connectors.RabbitMQConnector.verify_connection"
375 - class="md-nav__link"
376 - >
377 - verify_connection()
378 - </a>
379 - </li>
380 - </ul>
381 - </nav>
382 - </li>
383 -
384 - <li class="md-nav__item">
385 - <a
386 - href="#app.models.connectors.ShuffleConnector"
387 - class="md-nav__link"
388 - >
389 - ShuffleConnector
390 - </a>
391 -
392 - <nav class="md-nav" aria-label="ShuffleConnector">
393 - <ul class="md-nav__list">
394 - <li class="md-nav__item">
395 - <a
396 - href="#app.models.connectors.ShuffleConnector.verify_connection"
397 - class="md-nav__link"
398 - >
399 - verify_connection()
400 - </a>
401 - </li>
402 - </ul>
403 - </nav>
404 - </li>
405 -
406 - <li class="md-nav__item">
407 - <a
408 - href="#app.models.connectors.VelociraptorConnector"
409 - class="md-nav__link"
410 - >
411 - VelociraptorConnector
412 - </a>
413 -
414 - <nav class="md-nav" aria-label="VelociraptorConnector">
415 - <ul class="md-nav__list">
416 - <li class="md-nav__item">
417 - <a
418 - href="#app.models.connectors.VelociraptorConnector.verify_connection"
419 - class="md-nav__link"
420 - >
421 - verify_connection()
422 - </a>
423 - </li>
424 - </ul>
425 - </nav>
426 - </li>
427 -
428 - <li class="md-nav__item">
429 - <a
430 - href="#app.models.connectors.WazuhIndexerConnector"
431 - class="md-nav__link"
432 - >
433 - WazuhIndexerConnector
434 - </a>
435 -
436 - <nav class="md-nav" aria-label="WazuhIndexerConnector">
437 - <ul class="md-nav__list">
438 - <li class="md-nav__item">
439 - <a
440 - href="#app.models.connectors.WazuhIndexerConnector.verify_connection"
441 - class="md-nav__link"
442 - >
443 - verify_connection()
444 - </a>
445 - </li>
446 - </ul>
447 - </nav>
448 - </li>
449 -
450 - <li class="md-nav__item">
451 - <a
452 - href="#app.models.connectors.WazuhManagerConnector"
453 - class="md-nav__link"
454 - >
455 - WazuhManagerConnector
456 - </a>
457 -
458 - <nav class="md-nav" aria-label="WazuhManagerConnector">
459 - <ul class="md-nav__list">
460 - <li class="md-nav__item">
461 - <a
462 - href="#app.models.connectors.WazuhManagerConnector.get_auth_token"
463 - class="md-nav__link"
464 - >
465 - get_auth_token()
466 - </a>
467 - </li>
468 -
469 - <li class="md-nav__item">
470 - <a
471 - href="#app.models.connectors.WazuhManagerConnector.verify_connection"
472 - class="md-nav__link"
473 - >
474 - verify_connection()
475 - </a>
476 - </li>
477 - </ul>
478 - </nav>
479 - </li>
480 -
481 - <li class="md-nav__item">
482 - <a
483 - href="#app.models.connectors.dynamic_import"
484 - class="md-nav__link"
485 - >
486 - dynamic_import()
487 - </a>
488 -
489 - <nav class="md-nav" aria-label="dynamic_import()">
490 - <ul class="md-nav__list">
491 - <li class="md-nav__item">
492 - <a href="#connectors-routes" class="md-nav__link">
493 - Connectors Routes
494 - </a>
495 - </li>
496 - </ul>
497 - </nav>
498 - </li>
499 -
500 - <li class="md-nav__item">
501 - <a href="#app.routes.connectors" class="md-nav__link">
502 - app.routes.connectors
503 - </a>
504 - </li>
505 -
506 - <li class="md-nav__item">
507 - <a
508 - href="#app.routes.connectors.get_connector_details"
509 - class="md-nav__link"
510 - >
511 - get_connector_details()
512 - </a>
513 - </li>
514 -
515 - <li class="md-nav__item">
516 - <a
517 - href="#app.routes.connectors.list_connectors_available"
518 - class="md-nav__link"
519 - >
520 - list_connectors_available()
521 - </a>
522 - </li>
523 -
524 - <li class="md-nav__item">
525 - <a
526 - href="#app.routes.connectors.update_connector_route"
527 - class="md-nav__link"
528 - >
529 - update_connector_route()
530 - </a>
531 -
532 - <nav class="md-nav" aria-label="update_connector_route()">
533 - <ul class="md-nav__list">
534 - <li class="md-nav__item">
535 - <a href="#connectors-services" class="md-nav__link">
536 - Connectors Services
537 - </a>
538 - </li>
539 - </ul>
540 - </nav>
541 - </li>
542 -
543 - <li class="md-nav__item">
544 - <a
545 - href="#app.services.connectors.connectors"
546 - class="md-nav__link"
547 - >
548 - app.services.connectors.connectors
549 - </a>
550 - </li>
551 -
552 - <li class="md-nav__item">
553 - <a
554 - href="#app.services.connectors.connectors.ConnectorService"
555 - class="md-nav__link"
556 - >
557 - ConnectorService
558 - </a>
559 -
560 - <nav class="md-nav" aria-label="ConnectorService">
561 - <ul class="md-nav__list">
562 - <li class="md-nav__item">
563 - <a
564 - href="#app.services.connectors.connectors.ConnectorService.__init__"
565 - class="md-nav__link"
566 - >
567 - __init__()
568 - </a>
569 - </li>
570 -
571 - <li class="md-nav__item">
572 - <a
573 - href="#app.services.connectors.connectors.ConnectorService.process_connector"
574 - class="md-nav__link"
575 - >
576 - process_connector()
577 - </a>
578 - </li>
579 -
580 - <li class="md-nav__item">
581 - <a
582 - href="#app.services.connectors.connectors.ConnectorService.update_connector"
583 - class="md-nav__link"
584 - >
585 - update_connector()
586 - </a>
587 - </li>
588 -
589 - <li class="md-nav__item">
590 - <a
591 - href="#app.services.connectors.connectors.ConnectorService.update_connector_in_db"
592 - class="md-nav__link"
593 - >
594 - update_connector_in_db()
595 - </a>
596 - </li>
597 -
598 - <li class="md-nav__item">
599 - <a
600 - href="#app.services.connectors.connectors.ConnectorService.validate_connector_exists"
601 - class="md-nav__link"
602 - >
603 - validate_connector_exists()
604 - </a>
605 - </li>
606 -
607 - <li class="md-nav__item">
608 - <a
609 - href="#app.services.connectors.connectors.ConnectorService.validate_request_data"
610 - class="md-nav__link"
611 - >
612 - validate_request_data()
613 - </a>
614 - </li>
615 -
616 - <li class="md-nav__item">
617 - <a
618 - href="#app.services.connectors.connectors.ConnectorService.validate_request_data_api_key"
619 - class="md-nav__link"
620 - >
621 - validate_request_data_api_key()
622 - </a>
623 - </li>
624 -
625 - <li class="md-nav__item">
626 - <a
627 - href="#app.services.connectors.connectors.ConnectorService.verify_connector_connection"
628 - class="md-nav__link"
629 - >
630 - verify_connector_connection()
631 - </a>
632 - </li>
633 - </ul>
634 - </nav>
635 - </li>
636 - </ul>
637 - </nav>
638 - </li>
639 -
640 - <li class="md-nav__item">
641 - <a href="../agents/" class="md-nav__link"> Agents </a>
642 - </li>
643 -
644 - <li class="md-nav__item">
645 - <a href="../wazuhindexer/" class="md-nav__link"> Wazuh-Indexer </a>
646 - </li>
647 -
648 - <li class="md-nav__item">
649 - <a href="../dfiriris/" class="md-nav__link"> Dfir-Iris </a>
650 - </li>
651 -
652 - <li class="md-nav__item">
653 - <a href="../graylog/" class="md-nav__link"> Graylog </a>
654 - </li>
655 -
656 - <li class="md-nav__item">
657 - <a href="../wazuhmanager/" class="md-nav__link"> Wazuh-Manager </a>
658 - </li>
659 -
660 - <li class="md-nav__item">
661 - <a href="../velociraptor/" class="md-nav__link"> Velociraptor </a>
662 - </li>
663 -
664 - <li class="md-nav__item">
665 - <a href="../shuffle/" class="md-nav__link"> Shuffle </a>
666 - </li>
667 - </ul>
668 - </nav>
669 - </div>
670 - </div>
671 - </div>
672 -
673 - <div class="md-content" data-md-component="content">
674 - <article class="md-content__inner md-typeset">
675 - <h1>Connectors</h1>
676 -
677 - <h2 id="connectors-overview">Connectors Overview</h2>
678 - <h3 id="connectors-model"><span style="color: blue">Connectors Model</span></h3>
679 -
680 - <div class="doc doc-object doc-module">
681 - <a id="app.models.connectors"></a>
682 - <div class="doc doc-contents first">
683 - <div class="doc doc-children">
684 - <div class="doc doc-object doc-class">
685 - <h2 id="app.models.connectors.Connector" class="doc doc-heading">
686 - <code>Connector</code>
687 -
688 - <span class="doc doc-labels">
689 - <small class="doc doc-label doc-label-dataclass"
690 - ><code>dataclass</code></small
691 - >
692 - </span>
693 - </h2>
694 -
695 - <div class="doc doc-contents">
696 - <p class="doc doc-class-bases">
697 - Bases: <code><span title="abc.ABC">ABC</span></code>
698 - </p>
699 -
700 - <p>
701 - This abstract base class defines the interface for a connector. A
702 - connector is an object that connects to a specific service or system
703 - and performs actions on it. The specific service or system a
704 - connector connects to is defined by the connector's attributes.
705 - </p>
706 - <p>
707 - :param attributes: A dictionary of attributes necessary for the
708 - connector to connect to the service or system.
709 - </p>
710 -
711 - <details class="quote">
712 - <summary>
713 - Source code in <code>app\models\connectors.py</code>
714 - </summary>
715 - <div class="highlight">
716 - <table class="highlighttable">
717 - <tr>
718 - <td class="linenos">
719 - <div class="linenodiv">
720 - <pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
844 + </div>
845 +
846 +
847 +
848 +
849 + <div class="md-content" data-md-component="content">
850 + <article class="md-content__inner md-typeset">
851 +
852 +
853 +
854 +
855 + <h1>Connectors</h1>
856 +
857 +<h2 id="connectors-overview">Connectors Overview</h2>
858 +<h3 id="connectors-model"><span style="color:blue">Connectors Model</span></h3>
859 +<p>This Python file, named connectors.py, primarily defines a series of connector classes that establish and verify connections with various services. Each connector class is a subclass of an abstract base class called Connector, which outlines the essential methods that each connector needs to implement.</p>
860 +<p>Here is a breakdown of the main components of the file:</p>
861 +<p>Connector(ABC): This is the abstract base class that outlines the essential blueprint for the connector classes. It defines an abstract method verify_connection(self) -&gt; Dict[str, Any] that all subclasses must implement.</p>
862 +<p>WazuhIndexerConnector(Connector), GraylogConnector(Connector), WazuhManagerConnector(Connector), ShuffleConnector(Connector), DfirIrisConnector(Connector), VelociraptorConnector(Connector), RabbitMQConnector(Connector): These are subclasses of the Connector class. Each subclass represents a connector for a specific service (e.g., Wazuh indexer service, Graylog service, Wazuh manager service, etc.). They implement the verify_connection(self) -&gt; Dict[str, Any] method to establish and verify a connection with their respective service.</p>
863 +<p>This module contains the following classes:</p>
864 +<p>ConnectorFactory: This class is used to create instances of the connector classes. It maintains a dictionary mapping connector keys to their corresponding creator names. The register_creator method allows you to add new connector creators to the dictionary. The create method uses this dictionary to create a new connector instance based on the provided key.</p>
865 +<p>dynamic_import(module_name: str, class_name: str) -&gt; Any: This function dynamically imports a module and returns a specific class from it.</p>
866 +<p>At the end of the file, an instance of the ConnectorFactory class is created and the connector creators for the seven connector classes are registered. This allows for the dynamic creation of connector instances based on the specified key.</p>
867 +<p>Overall, this file provides a framework for creating and handling different types of service connectors, making it easier to establish and manage connections with various services.</p>
868 +
869 +
870 +<div class="doc doc-object doc-module">
871 +
872 +
873 +<a id="app.models.connectors"></a>
874 + <div class="doc doc-contents first">
875 +
876 +
877 +
878 + <div class="doc doc-children">
879 +
880 +
881 +
882 +
883 +
884 +
885 +
886 +
887 +<div class="doc doc-object doc-class">
888 +
889 +
890 +
891 +<h2 id="app.models.connectors.Connector" class="doc doc-heading">
892 + <code>Connector</code>
893 +
894 +
895 + <span class="doc doc-labels">
896 + <small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
897 + </span>
898 +
899 +</h2>
900 +
901 +
902 + <div class="doc doc-contents ">
903 + <p class="doc doc-class-bases">
904 + Bases: <code><span title="abc.ABC">ABC</span></code></p>
905 +
906 +
907 + <p>This abstract base class defines the interface for a connector. A connector is an object that
908 +connects to a specific service or system and performs actions on it. The specific service or
909 +system a connector connects to is defined by the connector's attributes.</p>
910 +<p>:param attributes: A dictionary of attributes necessary for the connector to connect to the service or system.</p>
911 +
912 +
913 + <details class="quote">
914 + <summary>Source code in <code>app\models\connectors.py</code></summary>
915 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
916 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
917 <span class="normal"><a href="#__codelineno-0-38">38</a></span>
918 <span class="normal"><a href="#__codelineno-0-39">39</a></span>
@@ -763,12 +958,7 @@
958 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
959 <span class="normal"><a href="#__codelineno-0-80">80</a></span>
960 <span class="normal"><a href="#__codelineno-0-81">81</a></span>
766 -<span class="normal"><a href="#__codelineno-0-82">82</a></span></pre>
767 - </div>
768 - </td>
769 - <td class="code">
770 - <div>
771 - <pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="nd">@dataclass</span>
961 +<span class="normal"><a href="#__codelineno-0-82">82</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="nd">@dataclass</span>
962 <a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span>
963 <a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
964 <a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> This abstract base class defines the interface for a connector. A connector is an object that</span>
@@ -815,87 +1005,67 @@
1005 <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="n">attributes</span>
1006 <a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">else</span><span class="p">:</span>
1007 <a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">raise</span> <span class="n">NoResultFound</span>
818 -</code></pre>
819 - </div>
820 - </td>
821 - </tr>
822 - </table>
823 - </div>
824 - </details>
825 -
826 - <div class="doc doc-children">
827 - <div class="doc doc-object doc-function">
828 - <h3
829 - id="app.models.connectors.Connector.get_connector_info_from_db"
830 - class="doc doc-heading"
831 - >
832 - <code class="highlight language-python"
833 - ><span class="n">get_connector_info_from_db</span
834 - ><span class="p">(</span
835 - ><span class="n">connector_name</span
836 - ><span class="p">)</span></code
837 - >
838 -
839 - <span class="doc doc-labels">
840 - <small class="doc doc-label doc-label-staticmethod"
841 - ><code>staticmethod</code></small
842 - >
843 - </span>
844 - </h3>
845 -
846 - <div class="doc doc-contents">
847 - <p>
848 - This method retrieves connector information from the
849 - database.
850 - </p>
851 - <p>
852 - :param connector_name: A string that specifies the name
853 - of the connector whose information is to be retrieved.
854 - :return: A dictionary of the connector's attributes if
855 - the connector exists. Otherwise, it raises a
856 - NoResultFound exception.
857 - </p>
858 -
859 - <p><strong>Raises:</strong></p>
860 - <table>
861 - <thead>
862 - <tr>
863 - <th>Type</th>
864 - <th>Description</th>
865 - </tr>
866 - </thead>
867 - <tbody>
868 - <tr>
869 - <td>
870 - <code
871 - ><span
872 - title="sqlalchemy.orm.exc.NoResultFound"
873 - >NoResultFound</span
874 - ></code
875 - >
876 - </td>
877 - <td>
878 - <div class="doc-md-description">
879 - <p>
880 - If the connector_name is not found
881 - in the database.
882 - </p>
883 - </div>
884 - </td>
885 - </tr>
886 - </tbody>
887 - </table>
888 -
889 - <details class="quote">
890 - <summary>
891 - Source code in <code>app\models\connectors.py</code>
892 - </summary>
893 - <div class="highlight">
894 - <table class="highlighttable">
895 - <tr>
896 - <td class="linenos">
897 - <div class="linenodiv">
898 - <pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
1008 +</code></pre></div></td></tr></table></div>
1009 + </details>
1010 +
1011 +
1012 +
1013 + <div class="doc doc-children">
1014 +
1015 +
1016 +
1017 +
1018 +
1019 +
1020 +
1021 +
1022 +
1023 +<div class="doc doc-object doc-function">
1024 +
1025 +
1026 +
1027 +<h3 id="app.models.connectors.Connector.get_connector_info_from_db" class="doc doc-heading">
1028 +<code class="highlight language-python"><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span></code>
1029 +
1030 + <span class="doc doc-labels">
1031 + <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
1032 + </span>
1033 +
1034 +</h3>
1035 +
1036 +
1037 + <div class="doc doc-contents ">
1038 +
1039 + <p>This method retrieves connector information from the database.</p>
1040 +<p>:param connector_name: A string that specifies the name of the connector whose information is to be retrieved.
1041 +:return: A dictionary of the connector's attributes if the connector exists. Otherwise, it raises a
1042 +NoResultFound exception.</p>
1043 +
1044 + <p><strong>Raises:</strong></p>
1045 + <table>
1046 + <thead>
1047 + <tr>
1048 + <th>Type</th>
1049 + <th>Description</th>
1050 + </tr>
1051 + </thead>
1052 + <tbody>
1053 + <tr>
1054 + <td>
1055 + <code><span title="sqlalchemy.orm.exc.NoResultFound">NoResultFound</span></code>
1056 + </td>
1057 + <td>
1058 + <div class="doc-md-description">
1059 + <p>If the connector_name is not found in the database.</p>
1060 + </div>
1061 + </td>
1062 + </tr>
1063 + </tbody>
1064 + </table>
1065 +
1066 + <details class="quote">
1067 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1068 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
1069 <span class="normal"><a href="#__codelineno-0-59">59</a></span>
1070 <span class="normal"><a href="#__codelineno-0-60">60</a></span>
1071 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
@@ -919,12 +1089,7 @@
1089 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
1090 <span class="normal"><a href="#__codelineno-0-80">80</a></span>
1091 <span class="normal"><a href="#__codelineno-0-81">81</a></span>
922 -<span class="normal"><a href="#__codelineno-0-82">82</a></span></pre>
923 - </div>
924 - </td>
925 - <td class="code">
926 - <div>
927 - <pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@staticmethod</span>
1092 +<span class="normal"><a href="#__codelineno-0-82">82</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@staticmethod</span>
1093 <a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="nf">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
1094 <a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1095 <a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> This method retrieves connector information from the database.</span>
@@ -949,54 +1114,35 @@
1114 <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="n">attributes</span>
1115 <a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">else</span><span class="p">:</span>
1116 <a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">raise</span> <span class="n">NoResultFound</span>
952 -</code></pre>
953 - </div>
954 - </td>
955 - </tr>
956 - </table>
957 - </div>
958 - </details>
959 - </div>
960 - </div>
961 -
962 - <div class="doc doc-object doc-function">
963 - <h3
964 - id="app.models.connectors.Connector.verify_connection"
965 - class="doc doc-heading"
966 - >
967 - <code class="highlight language-python"
968 - ><span class="n">verify_connection</span
969 - ><span class="p">()</span></code
970 - >
971 -
972 - <span class="doc doc-labels">
973 - <small class="doc doc-label doc-label-abstractmethod"
974 - ><code>abstractmethod</code></small
975 - >
976 - </span>
977 - </h3>
978 -
979 - <div class="doc doc-contents">
980 - <p>
981 - This abstract method should be implemented by all
982 - subclasses of Connector. It is meant to verify the
983 - connection to the service or system the connector is
984 - designed to connect to.
985 - </p>
986 - <p>
987 - :return: Depends on the implementation in the subclass.
988 - </p>
989 -
990 - <details class="quote">
991 - <summary>
992 - Source code in <code>app\models\connectors.py</code>
993 - </summary>
994 - <div class="highlight">
995 - <table class="highlighttable">
996 - <tr>
997 - <td class="linenos">
998 - <div class="linenodiv">
999 - <pre><span></span><span class="normal"><a href="#__codelineno-0-48">48</a></span>
1117 +</code></pre></div></td></tr></table></div>
1118 + </details>
1119 + </div>
1120 +
1121 +</div>
1122 +
1123 +<div class="doc doc-object doc-function">
1124 +
1125 +
1126 +
1127 +<h3 id="app.models.connectors.Connector.verify_connection" class="doc doc-heading">
1128 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
1129 +
1130 + <span class="doc doc-labels">
1131 + <small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
1132 + </span>
1133 +
1134 +</h3>
1135 +
1136 +
1137 + <div class="doc doc-contents ">
1138 +
1139 + <p>This abstract method should be implemented by all subclasses of Connector. It is meant to verify the
1140 +connection to the service or system the connector is designed to connect to.</p>
1141 +<p>:return: Depends on the implementation in the subclass.</p>
1142 +
1143 + <details class="quote">
1144 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1145 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-48">48</a></span>
1146 <span class="normal"><a href="#__codelineno-0-49">49</a></span>
1147 <span class="normal"><a href="#__codelineno-0-50">50</a></span>
1148 <span class="normal"><a href="#__codelineno-0-51">51</a></span>
@@ -1004,12 +1150,7 @@
1150 <span class="normal"><a href="#__codelineno-0-53">53</a></span>
1151 <span class="normal"><a href="#__codelineno-0-54">54</a></span>
1152 <span class="normal"><a href="#__codelineno-0-55">55</a></span>
1007 -<span class="normal"><a href="#__codelineno-0-56">56</a></span></pre>
1008 - </div>
1009 - </td>
1010 - <td class="code">
1011 - <div>
1012 - <pre><span></span><code><a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="nd">@abstractmethod</span>
1153 +<span class="normal"><a href="#__codelineno-0-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="nd">@abstractmethod</span>
1154 <a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
1155 <a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1156 <a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> This abstract method should be implemented by all subclasses of Connector. It is meant to verify the</span>
@@ -1018,41 +1159,41 @@
1159 <a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> :return: Depends on the implementation in the subclass.</span>
1160 <a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> &quot;&quot;&quot;</span>
1161 <a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">pass</span>
1021 -</code></pre>
1022 - </div>
1023 - </td>
1024 - </tr>
1025 - </table>
1026 - </div>
1027 - </details>
1028 - </div>
1029 - </div>
1030 - </div>
1031 - </div>
1032 - </div>
1033 -
1034 - <div class="doc doc-object doc-class">
1035 - <h2 id="app.models.connectors.ConnectorFactory" class="doc doc-heading">
1036 - <code>ConnectorFactory</code>
1037 - </h2>
1038 -
1039 - <div class="doc doc-contents">
1040 - <p>This class represents a factory for creating connector instances.</p>
1041 - <p>
1042 - :param creators: A dictionary mapping connector keys to their
1043 - corresponding creator names.
1044 - </p>
1045 -
1046 - <details class="quote">
1047 - <summary>
1048 - Source code in <code>app\models\connectors.py</code>
1049 - </summary>
1050 - <div class="highlight">
1051 - <table class="highlighttable">
1052 - <tr>
1053 - <td class="linenos">
1054 - <div class="linenodiv">
1055 - <pre><span></span><span class="normal"><a href="#__codelineno-0-435">435</a></span>
1162 +</code></pre></div></td></tr></table></div>
1163 + </details>
1164 + </div>
1165 +
1166 +</div>
1167 +
1168 +
1169 +
1170 + </div>
1171 +
1172 + </div>
1173 +
1174 +</div>
1175 +
1176 +<div class="doc doc-object doc-class">
1177 +
1178 +
1179 +
1180 +<h2 id="app.models.connectors.ConnectorFactory" class="doc doc-heading">
1181 + <code>ConnectorFactory</code>
1182 +
1183 +
1184 +</h2>
1185 +
1186 +
1187 + <div class="doc doc-contents ">
1188 +
1189 +
1190 + <p>This class represents a factory for creating connector instances.</p>
1191 +<p>:param creators: A dictionary mapping connector keys to their corresponding creator names.</p>
1192 +
1193 +
1194 + <details class="quote">
1195 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1196 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-435">435</a></span>
1197 <span class="normal"><a href="#__codelineno-0-436">436</a></span>
1198 <span class="normal"><a href="#__codelineno-0-437">437</a></span>
1199 <span class="normal"><a href="#__codelineno-0-438">438</a></span>
@@ -1090,12 +1231,7 @@
1231 <span class="normal"><a href="#__codelineno-0-470">470</a></span>
1232 <span class="normal"><a href="#__codelineno-0-471">471</a></span>
1233 <span class="normal"><a href="#__codelineno-0-472">472</a></span>
1093 -<span class="normal"><a href="#__codelineno-0-473">473</a></span></pre>
1094 - </div>
1095 - </td>
1096 - <td class="code">
1097 - <div>
1098 - <pre><span></span><code><a id="__codelineno-0-435" name="__codelineno-0-435"></a><span class="k">class</span> <span class="nc">ConnectorFactory</span><span class="p">:</span>
1234 +<span class="normal"><a href="#__codelineno-0-473">473</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-435" name="__codelineno-0-435"></a><span class="k">class</span> <span class="nc">ConnectorFactory</span><span class="p">:</span>
1235 <a id="__codelineno-0-436" name="__codelineno-0-436"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1236 <a id="__codelineno-0-437" name="__codelineno-0-437"></a><span class="sd"> This class represents a factory for creating connector instances.</span>
1237 <a id="__codelineno-0-438" name="__codelineno-0-438"></a>
@@ -1134,97 +1270,73 @@
1270 <a id="__codelineno-0-471" name="__codelineno-0-471"></a> <span class="c1"># use dynamic_import to get the class and initialize it</span>
1271 <a id="__codelineno-0-472" name="__codelineno-0-472"></a> <span class="n">connector_class</span> <span class="o">=</span> <span class="n">dynamic_import</span><span class="p">(</span><span class="s2">&quot;app.models.connectors&quot;</span><span class="p">,</span> <span class="n">creator</span><span class="p">)</span>
1272 <a id="__codelineno-0-473" name="__codelineno-0-473"></a> <span class="k">return</span> <span class="n">connector_class</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
1137 -</code></pre>
1138 - </div>
1139 - </td>
1140 - </tr>
1141 - </table>
1142 - </div>
1143 - </details>
1144 -
1145 - <div class="doc doc-children">
1146 - <div class="doc doc-object doc-function">
1147 - <h3
1148 - id="app.models.connectors.ConnectorFactory.__init__"
1149 - class="doc doc-heading"
1150 - >
1151 - <code class="highlight language-python"
1152 - ><span class="fm">__init__</span
1153 - ><span class="p">()</span></code
1154 - >
1155 - </h3>
1156 -
1157 - <div class="doc doc-contents">
1158 - <p>Initialize a new instance of the ConnectorFactory.</p>
1159 -
1160 - <details class="quote">
1161 - <summary>
1162 - Source code in <code>app\models\connectors.py</code>
1163 - </summary>
1164 - <div class="highlight">
1165 - <table class="highlighttable">
1166 - <tr>
1167 - <td class="linenos">
1168 - <div class="linenodiv">
1169 - <pre><span></span><span class="normal"><a href="#__codelineno-0-442">442</a></span>
1273 +</code></pre></div></td></tr></table></div>
1274 + </details>
1275 +
1276 +
1277 +
1278 + <div class="doc doc-children">
1279 +
1280 +
1281 +
1282 +
1283 +
1284 +
1285 +
1286 +
1287 +
1288 +<div class="doc doc-object doc-function">
1289 +
1290 +
1291 +
1292 +<h3 id="app.models.connectors.ConnectorFactory.__init__" class="doc doc-heading">
1293 +<code class="highlight language-python"><span class="fm">__init__</span><span class="p">()</span></code>
1294 +
1295 +</h3>
1296 +
1297 +
1298 + <div class="doc doc-contents ">
1299 +
1300 + <p>Initialize a new instance of the ConnectorFactory.</p>
1301 +
1302 + <details class="quote">
1303 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1304 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-442">442</a></span>
1305 <span class="normal"><a href="#__codelineno-0-443">443</a></span>
1306 <span class="normal"><a href="#__codelineno-0-444">444</a></span>
1307 <span class="normal"><a href="#__codelineno-0-445">445</a></span>
1173 -<span class="normal"><a href="#__codelineno-0-446">446</a></span></pre>
1174 - </div>
1175 - </td>
1176 - <td class="code">
1177 - <div>
1178 - <pre><span></span><code><a id="__codelineno-0-442" name="__codelineno-0-442"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1308 +<span class="normal"><a href="#__codelineno-0-446">446</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-442" name="__codelineno-0-442"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1309 <a id="__codelineno-0-443" name="__codelineno-0-443"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1310 <a id="__codelineno-0-444" name="__codelineno-0-444"></a><span class="sd"> Initialize a new instance of the ConnectorFactory.</span>
1311 <a id="__codelineno-0-445" name="__codelineno-0-445"></a><span class="sd"> &quot;&quot;&quot;</span>
1312 <a id="__codelineno-0-446" name="__codelineno-0-446"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_creators</span> <span class="o">=</span> <span class="p">{}</span>
1183 -</code></pre>
1184 - </div>
1185 - </td>
1186 - </tr>
1187 - </table>
1188 - </div>
1189 - </details>
1190 - </div>
1191 - </div>
1192 -
1193 - <div class="doc doc-object doc-function">
1194 - <h3
1195 - id="app.models.connectors.ConnectorFactory.create"
1196 - class="doc doc-heading"
1197 - >
1198 - <code class="highlight language-python"
1199 - ><span class="n">create</span><span class="p">(</span
1200 - ><span class="n">key</span><span class="p">,</span>
1201 - <span class="n">connector_name</span
1202 - ><span class="p">)</span></code
1203 - >
1204 - </h3>
1205 -
1206 - <div class="doc doc-contents">
1207 - <p>Create a new connector instance.</p>
1208 - <p>
1209 - :param key: The key of the connector. :param
1210 - connector_name: The name of the connector.
1211 - </p>
1212 - <p>:return: A new instance of the connector.</p>
1213 - <p>
1214 - :raises ValueError: If the key is not found in the list
1215 - of creators.
1216 - </p>
1217 -
1218 - <details class="quote">
1219 - <summary>
1220 - Source code in <code>app\models\connectors.py</code>
1221 - </summary>
1222 - <div class="highlight">
1223 - <table class="highlighttable">
1224 - <tr>
1225 - <td class="linenos">
1226 - <div class="linenodiv">
1227 - <pre><span></span><span class="normal"><a href="#__codelineno-0-457">457</a></span>
1313 +</code></pre></div></td></tr></table></div>
1314 + </details>
1315 + </div>
1316 +
1317 +</div>
1318 +
1319 +<div class="doc doc-object doc-function">
1320 +
1321 +
1322 +
1323 +<h3 id="app.models.connectors.ConnectorFactory.create" class="doc doc-heading">
1324 +<code class="highlight language-python"><span class="n">create</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span></code>
1325 +
1326 +</h3>
1327 +
1328 +
1329 + <div class="doc doc-contents ">
1330 +
1331 + <p>Create a new connector instance.</p>
1332 +<p>:param key: The key of the connector.
1333 +:param connector_name: The name of the connector.</p>
1334 +<p>:return: A new instance of the connector.</p>
1335 +<p>:raises ValueError: If the key is not found in the list of creators.</p>
1336 +
1337 + <details class="quote">
1338 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1339 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-457">457</a></span>
1340 <span class="normal"><a href="#__codelineno-0-458">458</a></span>
1341 <span class="normal"><a href="#__codelineno-0-459">459</a></span>
1342 <span class="normal"><a href="#__codelineno-0-460">460</a></span>
@@ -1240,12 +1352,7 @@
1352 <span class="normal"><a href="#__codelineno-0-470">470</a></span>
1353 <span class="normal"><a href="#__codelineno-0-471">471</a></span>
1354 <span class="normal"><a href="#__codelineno-0-472">472</a></span>
1243 -<span class="normal"><a href="#__codelineno-0-473">473</a></span></pre>
1244 - </div>
1245 - </td>
1246 - <td class="code">
1247 - <div>
1248 - <pre><span></span><code><a id="__codelineno-0-457" name="__codelineno-0-457"></a><span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">):</span>
1355 +<span class="normal"><a href="#__codelineno-0-473">473</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-457" name="__codelineno-0-457"></a><span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">):</span>
1356 <a id="__codelineno-0-458" name="__codelineno-0-458"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1357 <a id="__codelineno-0-459" name="__codelineno-0-459"></a><span class="sd"> Create a new connector instance.</span>
1358 <a id="__codelineno-0-460" name="__codelineno-0-460"></a>
@@ -1262,58 +1369,38 @@
1369 <a id="__codelineno-0-471" name="__codelineno-0-471"></a> <span class="c1"># use dynamic_import to get the class and initialize it</span>
1370 <a id="__codelineno-0-472" name="__codelineno-0-472"></a> <span class="n">connector_class</span> <span class="o">=</span> <span class="n">dynamic_import</span><span class="p">(</span><span class="s2">&quot;app.models.connectors&quot;</span><span class="p">,</span> <span class="n">creator</span><span class="p">)</span>
1371 <a id="__codelineno-0-473" name="__codelineno-0-473"></a> <span class="k">return</span> <span class="n">connector_class</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
1265 -</code></pre>
1266 - </div>
1267 - </td>
1268 - </tr>
1269 - </table>
1270 - </div>
1271 - </details>
1272 - </div>
1273 - </div>
1274 -
1275 - <div class="doc doc-object doc-function">
1276 - <h3
1277 - id="app.models.connectors.ConnectorFactory.register_creator"
1278 - class="doc doc-heading"
1279 - >
1280 - <code class="highlight language-python"
1281 - ><span class="n">register_creator</span
1282 - ><span class="p">(</span><span class="n">key</span
1283 - ><span class="p">,</span> <span class="n">creator</span
1284 - ><span class="p">)</span></code
1285 - >
1286 - </h3>
1287 -
1288 - <div class="doc doc-contents">
1289 - <p>Register a new connector creator.</p>
1290 - <p>
1291 - :param key: The key of the connector. :param creator:
1292 - The creator of the connector.
1293 - </p>
1294 -
1295 - <details class="quote">
1296 - <summary>
1297 - Source code in <code>app\models\connectors.py</code>
1298 - </summary>
1299 - <div class="highlight">
1300 - <table class="highlighttable">
1301 - <tr>
1302 - <td class="linenos">
1303 - <div class="linenodiv">
1304 - <pre><span></span><span class="normal"><a href="#__codelineno-0-448">448</a></span>
1372 +</code></pre></div></td></tr></table></div>
1373 + </details>
1374 + </div>
1375 +
1376 +</div>
1377 +
1378 +<div class="doc doc-object doc-function">
1379 +
1380 +
1381 +
1382 +<h3 id="app.models.connectors.ConnectorFactory.register_creator" class="doc doc-heading">
1383 +<code class="highlight language-python"><span class="n">register_creator</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">creator</span><span class="p">)</span></code>
1384 +
1385 +</h3>
1386 +
1387 +
1388 + <div class="doc doc-contents ">
1389 +
1390 + <p>Register a new connector creator.</p>
1391 +<p>:param key: The key of the connector.
1392 +:param creator: The creator of the connector.</p>
1393 +
1394 + <details class="quote">
1395 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1396 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-448">448</a></span>
1397 <span class="normal"><a href="#__codelineno-0-449">449</a></span>
1398 <span class="normal"><a href="#__codelineno-0-450">450</a></span>
1399 <span class="normal"><a href="#__codelineno-0-451">451</a></span>
1400 <span class="normal"><a href="#__codelineno-0-452">452</a></span>
1401 <span class="normal"><a href="#__codelineno-0-453">453</a></span>
1402 <span class="normal"><a href="#__codelineno-0-454">454</a></span>
1311 -<span class="normal"><a href="#__codelineno-0-455">455</a></span></pre>
1312 - </div>
1313 - </td>
1314 - <td class="code">
1315 - <div>
1316 - <pre><span></span><code><a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="k">def</span> <span class="nf">register_creator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">creator</span><span class="p">):</span>
1403 +<span class="normal"><a href="#__codelineno-0-455">455</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="k">def</span> <span class="nf">register_creator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">creator</span><span class="p">):</span>
1404 <a id="__codelineno-0-449" name="__codelineno-0-449"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1405 <a id="__codelineno-0-450" name="__codelineno-0-450"></a><span class="sd"> Register a new connector creator.</span>
1406 <a id="__codelineno-0-451" name="__codelineno-0-451"></a>
@@ -1321,56 +1408,43 @@
1408 <a id="__codelineno-0-453" name="__codelineno-0-453"></a><span class="sd"> :param creator: The creator of the connector.</span>
1409 <a id="__codelineno-0-454" name="__codelineno-0-454"></a><span class="sd"> &quot;&quot;&quot;</span>
1410 <a id="__codelineno-0-455" name="__codelineno-0-455"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_creators</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">creator</span>
1324 -</code></pre>
1325 - </div>
1326 - </td>
1327 - </tr>
1328 - </table>
1329 - </div>
1330 - </details>
1331 - </div>
1332 - </div>
1333 - </div>
1334 - </div>
1335 - </div>
1336 -
1337 - <div class="doc doc-object doc-class">
1338 - <h2 id="app.models.connectors.DfirIrisConnector" class="doc doc-heading">
1339 - <code>DfirIrisConnector</code>
1340 - </h2>
1341 -
1342 - <div class="doc doc-contents">
1343 - <p class="doc doc-class-bases">
1344 - Bases:
1345 - <code
1346 - ><a
1347 - class="autorefs autorefs-internal"
1348 - title="app.models.connectors.Connector"
1349 - href="#app.models.connectors.Connector"
1350 - >Connector</a
1351 - ></code
1352 - >
1353 - </p>
1354 -
1355 - <p>
1356 - This class represents a connector for the DFIR IRIS service. It is a
1357 - subclass of Connector.
1358 - </p>
1359 - <p>
1360 - :param connector_name: A string that specifies the name of the
1361 - connector.
1362 - </p>
1363 -
1364 - <details class="quote">
1365 - <summary>
1366 - Source code in <code>app\models\connectors.py</code>
1367 - </summary>
1368 - <div class="highlight">
1369 - <table class="highlighttable">
1370 - <tr>
1371 - <td class="linenos">
1372 - <div class="linenodiv">
1373 - <pre><span></span><span class="normal"><a href="#__codelineno-0-274">274</a></span>
1411 +</code></pre></div></td></tr></table></div>
1412 + </details>
1413 + </div>
1414 +
1415 +</div>
1416 +
1417 +
1418 +
1419 + </div>
1420 +
1421 + </div>
1422 +
1423 +</div>
1424 +
1425 +<div class="doc doc-object doc-class">
1426 +
1427 +
1428 +
1429 +<h2 id="app.models.connectors.DfirIrisConnector" class="doc doc-heading">
1430 + <code>DfirIrisConnector</code>
1431 +
1432 +
1433 +</h2>
1434 +
1435 +
1436 + <div class="doc doc-contents ">
1437 + <p class="doc doc-class-bases">
1438 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
1439 +
1440 +
1441 + <p>This class represents a connector for the DFIR IRIS service. It is a subclass of Connector.</p>
1442 +<p>:param connector_name: A string that specifies the name of the connector.</p>
1443 +
1444 +
1445 + <details class="quote">
1446 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1447 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-274">274</a></span>
1448 <span class="normal"><a href="#__codelineno-0-275">275</a></span>
1449 <span class="normal"><a href="#__codelineno-0-276">276</a></span>
1450 <span class="normal"><a href="#__codelineno-0-277">277</a></span>
@@ -1414,12 +1488,7 @@
1488 <span class="normal"><a href="#__codelineno-0-315">315</a></span>
1489 <span class="normal"><a href="#__codelineno-0-316">316</a></span>
1490 <span class="normal"><a href="#__codelineno-0-317">317</a></span>
1417 -<span class="normal"><a href="#__codelineno-0-318">318</a></span></pre>
1418 - </div>
1419 - </td>
1420 - <td class="code">
1421 - <div>
1422 - <pre><span></span><code><a id="__codelineno-0-274" name="__codelineno-0-274"></a><span class="k">class</span> <span class="nc">DfirIrisConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
1491 +<span class="normal"><a href="#__codelineno-0-318">318</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-274" name="__codelineno-0-274"></a><span class="k">class</span> <span class="nc">DfirIrisConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
1492 <a id="__codelineno-0-275" name="__codelineno-0-275"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1493 <a id="__codelineno-0-276" name="__codelineno-0-276"></a><span class="sd"> This class represents a connector for the DFIR IRIS service. It is a subclass of Connector.</span>
1494 <a id="__codelineno-0-277" name="__codelineno-0-277"></a>
@@ -1464,73 +1533,60 @@
1533 <a id="__codelineno-0-316" name="__codelineno-0-316"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
1534 <a id="__codelineno-0-317" name="__codelineno-0-317"></a> <span class="p">)</span>
1535 <a id="__codelineno-0-318" name="__codelineno-0-318"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
1467 -</code></pre>
1468 - </div>
1469 - </td>
1470 - </tr>
1471 - </table>
1472 - </div>
1473 - </details>
1474 -
1475 - <div class="doc doc-children">
1476 - <div class="doc doc-object doc-function">
1477 - <h3
1478 - id="app.models.connectors.DfirIrisConnector.verify_connection"
1479 - class="doc doc-heading"
1480 - >
1481 - <code class="highlight language-python"
1482 - ><span class="n">verify_connection</span
1483 - ><span class="p">()</span></code
1484 - >
1485 - </h3>
1486 -
1487 - <div class="doc doc-contents">
1488 - <p>Verifies the connection to DFIR IRIS service.</p>
1489 -
1490 - <p><strong>Returns:</strong></p>
1491 - <table>
1492 - <thead>
1493 - <tr>
1494 - <th>Name</th>
1495 - <th>Type</th>
1496 - <th>Description</th>
1497 - </tr>
1498 - </thead>
1499 - <tbody>
1500 - <tr>
1501 - <td><code>dict</code></td>
1502 - <td>
1503 - <code
1504 - ><span title="typing.Dict">Dict</span
1505 - >[str,
1506 - <span title="typing.Any">Any</span
1507 - >]</code
1508 - >
1509 - </td>
1510 - <td>
1511 - <div class="doc-md-description">
1512 - <p>
1513 - A dictionary containing
1514 - 'connectionSuccessful' status and
1515 - 'response' if the connection is
1516 - successful.
1517 - </p>
1518 - </div>
1519 - </td>
1520 - </tr>
1521 - </tbody>
1522 - </table>
1523 -
1524 - <details class="quote">
1525 - <summary>
1526 - Source code in <code>app\models\connectors.py</code>
1527 - </summary>
1528 - <div class="highlight">
1529 - <table class="highlighttable">
1530 - <tr>
1531 - <td class="linenos">
1532 - <div class="linenodiv">
1533 - <pre><span></span><span class="normal"><a href="#__codelineno-0-284">284</a></span>
1536 +</code></pre></div></td></tr></table></div>
1537 + </details>
1538 +
1539 +
1540 +
1541 + <div class="doc doc-children">
1542 +
1543 +
1544 +
1545 +
1546 +
1547 +
1548 +
1549 +
1550 +
1551 +<div class="doc doc-object doc-function">
1552 +
1553 +
1554 +
1555 +<h3 id="app.models.connectors.DfirIrisConnector.verify_connection" class="doc doc-heading">
1556 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
1557 +
1558 +</h3>
1559 +
1560 +
1561 + <div class="doc doc-contents ">
1562 +
1563 + <p>Verifies the connection to DFIR IRIS service.</p>
1564 +
1565 + <p><strong>Returns:</strong></p>
1566 + <table>
1567 + <thead>
1568 + <tr>
1569 +<th>Name</th> <th>Type</th>
1570 + <th>Description</th>
1571 + </tr>
1572 + </thead>
1573 + <tbody>
1574 + <tr>
1575 +<td><code>dict</code></td> <td>
1576 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
1577 + </td>
1578 + <td>
1579 + <div class="doc-md-description">
1580 + <p>A dictionary containing 'connectionSuccessful' status and 'response' if the connection is successful.</p>
1581 + </div>
1582 + </td>
1583 + </tr>
1584 + </tbody>
1585 + </table>
1586 +
1587 + <details class="quote">
1588 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1589 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-284">284</a></span>
1590 <span class="normal"><a href="#__codelineno-0-285">285</a></span>
1591 <span class="normal"><a href="#__codelineno-0-286">286</a></span>
1592 <span class="normal"><a href="#__codelineno-0-287">287</a></span>
@@ -1564,12 +1620,7 @@
1620 <span class="normal"><a href="#__codelineno-0-315">315</a></span>
1621 <span class="normal"><a href="#__codelineno-0-316">316</a></span>
1622 <span class="normal"><a href="#__codelineno-0-317">317</a></span>
1567 -<span class="normal"><a href="#__codelineno-0-318">318</a></span></pre>
1568 - </div>
1569 - </td>
1570 - <td class="code">
1571 - <div>
1572 - <pre><span></span><code><a id="__codelineno-0-284" name="__codelineno-0-284"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
1623 +<span class="normal"><a href="#__codelineno-0-318">318</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-284" name="__codelineno-0-284"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
1624 <a id="__codelineno-0-285" name="__codelineno-0-285"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1625 <a id="__codelineno-0-286" name="__codelineno-0-286"></a><span class="sd"> Verifies the connection to DFIR IRIS service.</span>
1626 <a id="__codelineno-0-287" name="__codelineno-0-287"></a>
@@ -1604,56 +1655,43 @@
1655 <a id="__codelineno-0-316" name="__codelineno-0-316"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
1656 <a id="__codelineno-0-317" name="__codelineno-0-317"></a> <span class="p">)</span>
1657 <a id="__codelineno-0-318" name="__codelineno-0-318"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
1607 -</code></pre>
1608 - </div>
1609 - </td>
1610 - </tr>
1611 - </table>
1612 - </div>
1613 - </details>
1614 - </div>
1615 - </div>
1616 - </div>
1617 - </div>
1618 - </div>
1619 -
1620 - <div class="doc doc-object doc-class">
1621 - <h2 id="app.models.connectors.GraylogConnector" class="doc doc-heading">
1622 - <code>GraylogConnector</code>
1623 - </h2>
1624 -
1625 - <div class="doc doc-contents">
1626 - <p class="doc doc-class-bases">
1627 - Bases:
1628 - <code
1629 - ><a
1630 - class="autorefs autorefs-internal"
1631 - title="app.models.connectors.Connector"
1632 - href="#app.models.connectors.Connector"
1633 - >Connector</a
1634 - ></code
1635 - >
1636 - </p>
1637 -
1638 - <p>
1639 - This class represents a connector for the Graylog service. It is a
1640 - subclass of Connector.
1641 - </p>
1642 - <p>
1643 - :param connector_name: A string that specifies the name of the
1644 - connector.
1645 - </p>
1646 -
1647 - <details class="quote">
1648 - <summary>
1649 - Source code in <code>app\models\connectors.py</code>
1650 - </summary>
1651 - <div class="highlight">
1652 - <table class="highlighttable">
1653 - <tr>
1654 - <td class="linenos">
1655 - <div class="linenodiv">
1656 - <pre><span></span><span class="normal"><a href="#__codelineno-0-127">127</a></span>
1658 +</code></pre></div></td></tr></table></div>
1659 + </details>
1660 + </div>
1661 +
1662 +</div>
1663 +
1664 +
1665 +
1666 + </div>
1667 +
1668 + </div>
1669 +
1670 +</div>
1671 +
1672 +<div class="doc doc-object doc-class">
1673 +
1674 +
1675 +
1676 +<h2 id="app.models.connectors.GraylogConnector" class="doc doc-heading">
1677 + <code>GraylogConnector</code>
1678 +
1679 +
1680 +</h2>
1681 +
1682 +
1683 + <div class="doc doc-contents ">
1684 + <p class="doc doc-class-bases">
1685 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
1686 +
1687 +
1688 + <p>This class represents a connector for the Graylog service. It is a subclass of Connector.</p>
1689 +<p>:param connector_name: A string that specifies the name of the connector.</p>
1690 +
1691 +
1692 + <details class="quote">
1693 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1694 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-127">127</a></span>
1695 <span class="normal"><a href="#__codelineno-0-128">128</a></span>
1696 <span class="normal"><a href="#__codelineno-0-129">129</a></span>
1697 <span class="normal"><a href="#__codelineno-0-130">130</a></span>
@@ -1696,12 +1734,7 @@
1734 <span class="normal"><a href="#__codelineno-0-167">167</a></span>
1735 <span class="normal"><a href="#__codelineno-0-168">168</a></span>
1736 <span class="normal"><a href="#__codelineno-0-169">169</a></span>
1699 -<span class="normal"><a href="#__codelineno-0-170">170</a></span></pre>
1700 - </div>
1701 - </td>
1702 - <td class="code">
1703 - <div>
1704 - <pre><span></span><code><a id="__codelineno-0-127" name="__codelineno-0-127"></a><span class="k">class</span> <span class="nc">GraylogConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
1737 +<span class="normal"><a href="#__codelineno-0-170">170</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-127" name="__codelineno-0-127"></a><span class="k">class</span> <span class="nc">GraylogConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
1738 <a id="__codelineno-0-128" name="__codelineno-0-128"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1739 <a id="__codelineno-0-129" name="__codelineno-0-129"></a><span class="sd"> This class represents a connector for the Graylog service. It is a subclass of Connector.</span>
1740 <a id="__codelineno-0-130" name="__codelineno-0-130"></a>
@@ -1745,73 +1778,60 @@
1778 <a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
1779 <a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="p">)</span>
1780 <a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;roles&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
1748 -</code></pre>
1749 - </div>
1750 - </td>
1751 - </tr>
1752 - </table>
1753 - </div>
1754 - </details>
1755 -
1756 - <div class="doc doc-children">
1757 - <div class="doc doc-object doc-function">
1758 - <h3
1759 - id="app.models.connectors.GraylogConnector.verify_connection"
1760 - class="doc doc-heading"
1761 - >
1762 - <code class="highlight language-python"
1763 - ><span class="n">verify_connection</span
1764 - ><span class="p">()</span></code
1765 - >
1766 - </h3>
1767 -
1768 - <div class="doc doc-contents">
1769 - <p>Verifies the connection to Graylog service.</p>
1770 -
1771 - <p><strong>Returns:</strong></p>
1772 - <table>
1773 - <thead>
1774 - <tr>
1775 - <th>Name</th>
1776 - <th>Type</th>
1777 - <th>Description</th>
1778 - </tr>
1779 - </thead>
1780 - <tbody>
1781 - <tr>
1782 - <td><code>dict</code></td>
1783 - <td>
1784 - <code
1785 - ><span title="typing.Dict">Dict</span
1786 - >[str,
1787 - <span title="typing.Any">Any</span
1788 - >]</code
1789 - >
1790 - </td>
1791 - <td>
1792 - <div class="doc-md-description">
1793 - <p>
1794 - A dictionary containing
1795 - 'connectionSuccessful' status and
1796 - 'roles' if the connection is
1797 - successful.
1798 - </p>
1799 - </div>
1800 - </td>
1801 - </tr>
1802 - </tbody>
1803 - </table>
1804 -
1805 - <details class="quote">
1806 - <summary>
1807 - Source code in <code>app\models\connectors.py</code>
1808 - </summary>
1809 - <div class="highlight">
1810 - <table class="highlighttable">
1811 - <tr>
1812 - <td class="linenos">
1813 - <div class="linenodiv">
1814 - <pre><span></span><span class="normal"><a href="#__codelineno-0-137">137</a></span>
1781 +</code></pre></div></td></tr></table></div>
1782 + </details>
1783 +
1784 +
1785 +
1786 + <div class="doc doc-children">
1787 +
1788 +
1789 +
1790 +
1791 +
1792 +
1793 +
1794 +
1795 +
1796 +<div class="doc doc-object doc-function">
1797 +
1798 +
1799 +
1800 +<h3 id="app.models.connectors.GraylogConnector.verify_connection" class="doc doc-heading">
1801 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
1802 +
1803 +</h3>
1804 +
1805 +
1806 + <div class="doc doc-contents ">
1807 +
1808 + <p>Verifies the connection to Graylog service.</p>
1809 +
1810 + <p><strong>Returns:</strong></p>
1811 + <table>
1812 + <thead>
1813 + <tr>
1814 +<th>Name</th> <th>Type</th>
1815 + <th>Description</th>
1816 + </tr>
1817 + </thead>
1818 + <tbody>
1819 + <tr>
1820 +<td><code>dict</code></td> <td>
1821 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
1822 + </td>
1823 + <td>
1824 + <div class="doc-md-description">
1825 + <p>A dictionary containing 'connectionSuccessful' status and 'roles' if the connection is successful.</p>
1826 + </div>
1827 + </td>
1828 + </tr>
1829 + </tbody>
1830 + </table>
1831 +
1832 + <details class="quote">
1833 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1834 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-137">137</a></span>
1835 <span class="normal"><a href="#__codelineno-0-138">138</a></span>
1836 <span class="normal"><a href="#__codelineno-0-139">139</a></span>
1837 <span class="normal"><a href="#__codelineno-0-140">140</a></span>
@@ -1844,12 +1864,7 @@
1864 <span class="normal"><a href="#__codelineno-0-167">167</a></span>
1865 <span class="normal"><a href="#__codelineno-0-168">168</a></span>
1866 <span class="normal"><a href="#__codelineno-0-169">169</a></span>
1847 -<span class="normal"><a href="#__codelineno-0-170">170</a></span></pre>
1848 - </div>
1849 - </td>
1850 - <td class="code">
1851 - <div>
1852 - <pre><span></span><code><a id="__codelineno-0-137" name="__codelineno-0-137"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
1867 +<span class="normal"><a href="#__codelineno-0-170">170</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-137" name="__codelineno-0-137"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
1868 <a id="__codelineno-0-138" name="__codelineno-0-138"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1869 <a id="__codelineno-0-139" name="__codelineno-0-139"></a><span class="sd"> Verifies the connection to Graylog service.</span>
1870 <a id="__codelineno-0-140" name="__codelineno-0-140"></a>
@@ -1883,77 +1898,70 @@
1898 <a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
1899 <a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="p">)</span>
1900 <a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;roles&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
1886 -</code></pre>
1887 - </div>
1888 - </td>
1889 - </tr>
1890 - </table>
1891 - </div>
1892 - </details>
1893 - </div>
1894 - </div>
1895 - </div>
1896 - </div>
1897 - </div>
1898 -
1899 - <div class="doc doc-object doc-class">
1900 - <h2 id="app.models.connectors.RabbitMQConnector" class="doc doc-heading">
1901 - <code>RabbitMQConnector</code>
1902 - </h2>
1903 -
1904 - <div class="doc doc-contents">
1905 - <p class="doc doc-class-bases">
1906 - Bases:
1907 - <code
1908 - ><a
1909 - class="autorefs autorefs-internal"
1910 - title="app.models.connectors.Connector"
1911 - href="#app.models.connectors.Connector"
1912 - >Connector</a
1913 - ></code
1914 - >
1915 - </p>
1916 -
1917 - <p>A connector for the RabbitMQ service, a subclass of Connector.</p>
1918 -
1919 - <p><strong>Parameters:</strong></p>
1920 - <table>
1921 - <thead>
1922 - <tr>
1923 - <th>Name</th>
1924 - <th>Type</th>
1925 - <th>Description</th>
1926 - <th>Default</th>
1927 - </tr>
1928 - </thead>
1929 - <tbody>
1930 - <tr>
1931 - <td><code>connector_name</code></td>
1932 - <td>
1933 - <code>str</code>
1934 - </td>
1935 - <td>
1936 - <div class="doc-md-description">
1937 - <p>The name of the connector.</p>
1938 - </div>
1939 - </td>
1940 - <td>
1941 - <em>required</em>
1942 - </td>
1943 - </tr>
1944 - </tbody>
1945 - </table>
1946 -
1947 - <details class="quote">
1948 - <summary>
1949 - Source code in <code>app\models\connectors.py</code>
1950 - </summary>
1951 - <div class="highlight">
1952 - <table class="highlighttable">
1953 - <tr>
1954 - <td class="linenos">
1955 - <div class="linenodiv">
1956 - <pre><span></span><span class="normal"><a href="#__codelineno-0-386">386</a></span>
1901 +</code></pre></div></td></tr></table></div>
1902 + </details>
1903 + </div>
1904 +
1905 +</div>
1906 +
1907 +
1908 +
1909 + </div>
1910 +
1911 + </div>
1912 +
1913 +</div>
1914 +
1915 +<div class="doc doc-object doc-class">
1916 +
1917 +
1918 +
1919 +<h2 id="app.models.connectors.RabbitMQConnector" class="doc doc-heading">
1920 + <code>RabbitMQConnector</code>
1921 +
1922 +
1923 +</h2>
1924 +
1925 +
1926 + <div class="doc doc-contents ">
1927 + <p class="doc doc-class-bases">
1928 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
1929 +
1930 +
1931 + <p>A connector for the RabbitMQ service, a subclass of Connector.</p>
1932 +
1933 + <p><strong>Parameters:</strong></p>
1934 + <table>
1935 + <thead>
1936 + <tr>
1937 + <th>Name</th>
1938 + <th>Type</th>
1939 + <th>Description</th>
1940 + <th>Default</th>
1941 + </tr>
1942 + </thead>
1943 + <tbody>
1944 + <tr>
1945 + <td><code>connector_name</code></td>
1946 + <td>
1947 + <code>str</code>
1948 + </td>
1949 + <td>
1950 + <div class="doc-md-description">
1951 + <p>The name of the connector.</p>
1952 + </div>
1953 + </td>
1954 + <td>
1955 + <em>required</em>
1956 + </td>
1957 + </tr>
1958 + </tbody>
1959 + </table>
1960 +
1961 +
1962 + <details class="quote">
1963 + <summary>Source code in <code>app\models\connectors.py</code></summary>
1964 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-386">386</a></span>
1965 <span class="normal"><a href="#__codelineno-0-387">387</a></span>
1966 <span class="normal"><a href="#__codelineno-0-388">388</a></span>
1967 <span class="normal"><a href="#__codelineno-0-389">389</a></span>
@@ -1999,12 +2007,7 @@
2007 <span class="normal"><a href="#__codelineno-0-429">429</a></span>
2008 <span class="normal"><a href="#__codelineno-0-430">430</a></span>
2009 <span class="normal"><a href="#__codelineno-0-431">431</a></span>
2002 -<span class="normal"><a href="#__codelineno-0-432">432</a></span></pre>
2003 - </div>
2004 - </td>
2005 - <td class="code">
2006 - <div>
2007 - <pre><span></span><code><a id="__codelineno-0-386" name="__codelineno-0-386"></a><span class="k">class</span> <span class="nc">RabbitMQConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2010 +<span class="normal"><a href="#__codelineno-0-432">432</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-386" name="__codelineno-0-386"></a><span class="k">class</span> <span class="nc">RabbitMQConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2011 <a id="__codelineno-0-387" name="__codelineno-0-387"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2012 <a id="__codelineno-0-388" name="__codelineno-0-388"></a><span class="sd"> A connector for the RabbitMQ service, a subclass of Connector.</span>
2013 <a id="__codelineno-0-389" name="__codelineno-0-389"></a>
@@ -2051,39 +2054,38 @@
2054 <a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2055 <a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="p">)</span>
2056 <a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
2054 -</code></pre>
2055 - </div>
2056 - </td>
2057 - </tr>
2058 - </table>
2059 - </div>
2060 - </details>
2061 -
2062 - <div class="doc doc-children">
2063 - <div class="doc doc-object doc-function">
2064 - <h3
2065 - id="app.models.connectors.RabbitMQConnector.verify_connection"
2066 - class="doc doc-heading"
2067 - >
2068 - <code class="highlight language-python"
2069 - ><span class="n">verify_connection</span
2070 - ><span class="p">()</span></code
2071 - >
2072 - </h3>
2073 -
2074 - <div class="doc doc-contents">
2075 - <p>Verifies the connection to RabbitMQ service.</p>
2076 -
2077 - <details class="quote">
2078 - <summary>
2079 - Source code in <code>app\models\connectors.py</code>
2080 - </summary>
2081 - <div class="highlight">
2082 - <table class="highlighttable">
2083 - <tr>
2084 - <td class="linenos">
2085 - <div class="linenodiv">
2086 - <pre><span></span><span class="normal"><a href="#__codelineno-0-397">397</a></span>
2057 +</code></pre></div></td></tr></table></div>
2058 + </details>
2059 +
2060 +
2061 +
2062 + <div class="doc doc-children">
2063 +
2064 +
2065 +
2066 +
2067 +
2068 +
2069 +
2070 +
2071 +
2072 +<div class="doc doc-object doc-function">
2073 +
2074 +
2075 +
2076 +<h3 id="app.models.connectors.RabbitMQConnector.verify_connection" class="doc doc-heading">
2077 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
2078 +
2079 +</h3>
2080 +
2081 +
2082 + <div class="doc doc-contents ">
2083 +
2084 + <p>Verifies the connection to RabbitMQ service.</p>
2085 +
2086 + <details class="quote">
2087 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2088 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-397">397</a></span>
2089 <span class="normal"><a href="#__codelineno-0-398">398</a></span>
2090 <span class="normal"><a href="#__codelineno-0-399">399</a></span>
2091 <span class="normal"><a href="#__codelineno-0-400">400</a></span>
@@ -2118,12 +2120,7 @@
2120 <span class="normal"><a href="#__codelineno-0-429">429</a></span>
2121 <span class="normal"><a href="#__codelineno-0-430">430</a></span>
2122 <span class="normal"><a href="#__codelineno-0-431">431</a></span>
2121 -<span class="normal"><a href="#__codelineno-0-432">432</a></span></pre>
2122 - </div>
2123 - </td>
2124 - <td class="code">
2125 - <div>
2126 - <pre><span></span><code><a id="__codelineno-0-397" name="__codelineno-0-397"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2123 +<span class="normal"><a href="#__codelineno-0-432">432</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-397" name="__codelineno-0-397"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2124 <a id="__codelineno-0-398" name="__codelineno-0-398"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2125 <a id="__codelineno-0-399" name="__codelineno-0-399"></a><span class="sd"> Verifies the connection to RabbitMQ service.</span>
2126 <a id="__codelineno-0-400" name="__codelineno-0-400"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -2159,56 +2156,43 @@
2156 <a id="__codelineno-0-430" name="__codelineno-0-430"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2157 <a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="p">)</span>
2158 <a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
2162 -</code></pre>
2163 - </div>
2164 - </td>
2165 - </tr>
2166 - </table>
2167 - </div>
2168 - </details>
2169 - </div>
2170 - </div>
2171 - </div>
2172 - </div>
2173 - </div>
2174 -
2175 - <div class="doc doc-object doc-class">
2176 - <h2 id="app.models.connectors.ShuffleConnector" class="doc doc-heading">
2177 - <code>ShuffleConnector</code>
2178 - </h2>
2179 -
2180 - <div class="doc doc-contents">
2181 - <p class="doc doc-class-bases">
2182 - Bases:
2183 - <code
2184 - ><a
2185 - class="autorefs autorefs-internal"
2186 - title="app.models.connectors.Connector"
2187 - href="#app.models.connectors.Connector"
2188 - >Connector</a
2189 - ></code
2190 - >
2191 - </p>
2192 -
2193 - <p>
2194 - This class represents a connector for the Shuffle service. It is a
2195 - subclass of Connector.
2196 - </p>
2197 - <p>
2198 - :param connector_name: A string that specifies the name of the
2199 - connector.
2200 - </p>
2201 -
2202 - <details class="quote">
2203 - <summary>
2204 - Source code in <code>app\models\connectors.py</code>
2205 - </summary>
2206 - <div class="highlight">
2207 - <table class="highlighttable">
2208 - <tr>
2209 - <td class="linenos">
2210 - <div class="linenodiv">
2211 - <pre><span></span><span class="normal"><a href="#__codelineno-0-228">228</a></span>
2159 +</code></pre></div></td></tr></table></div>
2160 + </details>
2161 + </div>
2162 +
2163 +</div>
2164 +
2165 +
2166 +
2167 + </div>
2168 +
2169 + </div>
2170 +
2171 +</div>
2172 +
2173 +<div class="doc doc-object doc-class">
2174 +
2175 +
2176 +
2177 +<h2 id="app.models.connectors.ShuffleConnector" class="doc doc-heading">
2178 + <code>ShuffleConnector</code>
2179 +
2180 +
2181 +</h2>
2182 +
2183 +
2184 + <div class="doc doc-contents ">
2185 + <p class="doc doc-class-bases">
2186 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
2187 +
2188 +
2189 + <p>This class represents a connector for the Shuffle service. It is a subclass of Connector.</p>
2190 +<p>:param connector_name: A string that specifies the name of the connector.</p>
2191 +
2192 +
2193 + <details class="quote">
2194 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2195 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-228">228</a></span>
2196 <span class="normal"><a href="#__codelineno-0-229">229</a></span>
2197 <span class="normal"><a href="#__codelineno-0-230">230</a></span>
2198 <span class="normal"><a href="#__codelineno-0-231">231</a></span>
@@ -2251,12 +2235,7 @@
2235 <span class="normal"><a href="#__codelineno-0-268">268</a></span>
2236 <span class="normal"><a href="#__codelineno-0-269">269</a></span>
2237 <span class="normal"><a href="#__codelineno-0-270">270</a></span>
2254 -<span class="normal"><a href="#__codelineno-0-271">271</a></span></pre>
2255 - </div>
2256 - </td>
2257 - <td class="code">
2258 - <div>
2259 - <pre><span></span><code><a id="__codelineno-0-228" name="__codelineno-0-228"></a><span class="k">class</span> <span class="nc">ShuffleConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2238 +<span class="normal"><a href="#__codelineno-0-271">271</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-228" name="__codelineno-0-228"></a><span class="k">class</span> <span class="nc">ShuffleConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2239 <a id="__codelineno-0-229" name="__codelineno-0-229"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2240 <a id="__codelineno-0-230" name="__codelineno-0-230"></a><span class="sd"> This class represents a connector for the Shuffle service. It is a subclass of Connector.</span>
2241 <a id="__codelineno-0-231" name="__codelineno-0-231"></a>
@@ -2300,73 +2279,60 @@
2279 <a id="__codelineno-0-269" name="__codelineno-0-269"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2280 <a id="__codelineno-0-270" name="__codelineno-0-270"></a> <span class="p">)</span>
2281 <a id="__codelineno-0-271" name="__codelineno-0-271"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2303 -</code></pre>
2304 - </div>
2305 - </td>
2306 - </tr>
2307 - </table>
2308 - </div>
2309 - </details>
2310 -
2311 - <div class="doc doc-children">
2312 - <div class="doc doc-object doc-function">
2313 - <h3
2314 - id="app.models.connectors.ShuffleConnector.verify_connection"
2315 - class="doc doc-heading"
2316 - >
2317 - <code class="highlight language-python"
2318 - ><span class="n">verify_connection</span
2319 - ><span class="p">()</span></code
2320 - >
2321 - </h3>
2322 -
2323 - <div class="doc doc-contents">
2324 - <p>Verifies the connection to Shuffle service.</p>
2325 -
2326 - <p><strong>Returns:</strong></p>
2327 - <table>
2328 - <thead>
2329 - <tr>
2330 - <th>Name</th>
2331 - <th>Type</th>
2332 - <th>Description</th>
2333 - </tr>
2334 - </thead>
2335 - <tbody>
2336 - <tr>
2337 - <td><code>dict</code></td>
2338 - <td>
2339 - <code
2340 - ><span title="typing.Dict">Dict</span
2341 - >[str,
2342 - <span title="typing.Any">Any</span
2343 - >]</code
2344 - >
2345 - </td>
2346 - <td>
2347 - <div class="doc-md-description">
2348 - <p>
2349 - A dictionary containing
2350 - 'connectionSuccessful' status and
2351 - 'apps' if the connection is
2352 - successful.
2353 - </p>
2354 - </div>
2355 - </td>
2356 - </tr>
2357 - </tbody>
2358 - </table>
2359 -
2360 - <details class="quote">
2361 - <summary>
2362 - Source code in <code>app\models\connectors.py</code>
2363 - </summary>
2364 - <div class="highlight">
2365 - <table class="highlighttable">
2366 - <tr>
2367 - <td class="linenos">
2368 - <div class="linenodiv">
2369 - <pre><span></span><span class="normal"><a href="#__codelineno-0-238">238</a></span>
2282 +</code></pre></div></td></tr></table></div>
2283 + </details>
2284 +
2285 +
2286 +
2287 + <div class="doc doc-children">
2288 +
2289 +
2290 +
2291 +
2292 +
2293 +
2294 +
2295 +
2296 +
2297 +<div class="doc doc-object doc-function">
2298 +
2299 +
2300 +
2301 +<h3 id="app.models.connectors.ShuffleConnector.verify_connection" class="doc doc-heading">
2302 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
2303 +
2304 +</h3>
2305 +
2306 +
2307 + <div class="doc doc-contents ">
2308 +
2309 + <p>Verifies the connection to Shuffle service.</p>
2310 +
2311 + <p><strong>Returns:</strong></p>
2312 + <table>
2313 + <thead>
2314 + <tr>
2315 +<th>Name</th> <th>Type</th>
2316 + <th>Description</th>
2317 + </tr>
2318 + </thead>
2319 + <tbody>
2320 + <tr>
2321 +<td><code>dict</code></td> <td>
2322 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
2323 + </td>
2324 + <td>
2325 + <div class="doc-md-description">
2326 + <p>A dictionary containing 'connectionSuccessful' status and 'apps' if the connection is successful.</p>
2327 + </div>
2328 + </td>
2329 + </tr>
2330 + </tbody>
2331 + </table>
2332 +
2333 + <details class="quote">
2334 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2335 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-238">238</a></span>
2336 <span class="normal"><a href="#__codelineno-0-239">239</a></span>
2337 <span class="normal"><a href="#__codelineno-0-240">240</a></span>
2338 <span class="normal"><a href="#__codelineno-0-241">241</a></span>
@@ -2399,12 +2365,7 @@
2365 <span class="normal"><a href="#__codelineno-0-268">268</a></span>
2366 <span class="normal"><a href="#__codelineno-0-269">269</a></span>
2367 <span class="normal"><a href="#__codelineno-0-270">270</a></span>
2402 -<span class="normal"><a href="#__codelineno-0-271">271</a></span></pre>
2403 - </div>
2404 - </td>
2405 - <td class="code">
2406 - <div>
2407 - <pre><span></span><code><a id="__codelineno-0-238" name="__codelineno-0-238"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2368 +<span class="normal"><a href="#__codelineno-0-271">271</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-238" name="__codelineno-0-238"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2369 <a id="__codelineno-0-239" name="__codelineno-0-239"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2370 <a id="__codelineno-0-240" name="__codelineno-0-240"></a><span class="sd"> Verifies the connection to Shuffle service.</span>
2371 <a id="__codelineno-0-241" name="__codelineno-0-241"></a>
@@ -2438,82 +2399,70 @@
2399 <a id="__codelineno-0-269" name="__codelineno-0-269"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2400 <a id="__codelineno-0-270" name="__codelineno-0-270"></a> <span class="p">)</span>
2401 <a id="__codelineno-0-271" name="__codelineno-0-271"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2441 -</code></pre>
2442 - </div>
2443 - </td>
2444 - </tr>
2445 - </table>
2446 - </div>
2447 - </details>
2448 - </div>
2449 - </div>
2450 - </div>
2451 - </div>
2452 - </div>
2453 -
2454 - <div class="doc doc-object doc-class">
2455 - <h2
2456 - id="app.models.connectors.VelociraptorConnector"
2457 - class="doc doc-heading"
2458 - >
2459 - <code>VelociraptorConnector</code>
2460 - </h2>
2461 -
2462 - <div class="doc doc-contents">
2463 - <p class="doc doc-class-bases">
2464 - Bases:
2465 - <code
2466 - ><a
2467 - class="autorefs autorefs-internal"
2468 - title="app.models.connectors.Connector"
2469 - href="#app.models.connectors.Connector"
2470 - >Connector</a
2471 - ></code
2472 - >
2473 - </p>
2474 -
2475 - <p>
2476 - A connector for the Velociraptor service, a subclass of Connector.
2477 - </p>
2478 -
2479 - <p><strong>Parameters:</strong></p>
2480 - <table>
2481 - <thead>
2482 - <tr>
2483 - <th>Name</th>
2484 - <th>Type</th>
2485 - <th>Description</th>
2486 - <th>Default</th>
2487 - </tr>
2488 - </thead>
2489 - <tbody>
2490 - <tr>
2491 - <td><code>connector_name</code></td>
2492 - <td>
2493 - <code>str</code>
2494 - </td>
2495 - <td>
2496 - <div class="doc-md-description">
2497 - <p>The name of the connector.</p>
2498 - </div>
2499 - </td>
2500 - <td>
2501 - <em>required</em>
2502 - </td>
2503 - </tr>
2504 - </tbody>
2505 - </table>
2506 -
2507 - <details class="quote">
2508 - <summary>
2509 - Source code in <code>app\models\connectors.py</code>
2510 - </summary>
2511 - <div class="highlight">
2512 - <table class="highlighttable">
2513 - <tr>
2514 - <td class="linenos">
2515 - <div class="linenodiv">
2516 - <pre><span></span><span class="normal"><a href="#__codelineno-0-321">321</a></span>
2402 +</code></pre></div></td></tr></table></div>
2403 + </details>
2404 + </div>
2405 +
2406 +</div>
2407 +
2408 +
2409 +
2410 + </div>
2411 +
2412 + </div>
2413 +
2414 +</div>
2415 +
2416 +<div class="doc doc-object doc-class">
2417 +
2418 +
2419 +
2420 +<h2 id="app.models.connectors.VelociraptorConnector" class="doc doc-heading">
2421 + <code>VelociraptorConnector</code>
2422 +
2423 +
2424 +</h2>
2425 +
2426 +
2427 + <div class="doc doc-contents ">
2428 + <p class="doc doc-class-bases">
2429 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
2430 +
2431 +
2432 + <p>A connector for the Velociraptor service, a subclass of Connector.</p>
2433 +
2434 + <p><strong>Parameters:</strong></p>
2435 + <table>
2436 + <thead>
2437 + <tr>
2438 + <th>Name</th>
2439 + <th>Type</th>
2440 + <th>Description</th>
2441 + <th>Default</th>
2442 + </tr>
2443 + </thead>
2444 + <tbody>
2445 + <tr>
2446 + <td><code>connector_name</code></td>
2447 + <td>
2448 + <code>str</code>
2449 + </td>
2450 + <td>
2451 + <div class="doc-md-description">
2452 + <p>The name of the connector.</p>
2453 + </div>
2454 + </td>
2455 + <td>
2456 + <em>required</em>
2457 + </td>
2458 + </tr>
2459 + </tbody>
2460 + </table>
2461 +
2462 +
2463 + <details class="quote">
2464 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2465 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-321">321</a></span>
2466 <span class="normal"><a href="#__codelineno-0-322">322</a></span>
2467 <span class="normal"><a href="#__codelineno-0-323">323</a></span>
2468 <span class="normal"><a href="#__codelineno-0-324">324</a></span>
@@ -2575,12 +2524,7 @@
2524 <span class="normal"><a href="#__codelineno-0-380">380</a></span>
2525 <span class="normal"><a href="#__codelineno-0-381">381</a></span>
2526 <span class="normal"><a href="#__codelineno-0-382">382</a></span>
2578 -<span class="normal"><a href="#__codelineno-0-383">383</a></span></pre>
2579 - </div>
2580 - </td>
2581 - <td class="code">
2582 - <div>
2583 - <pre><span></span><code><a id="__codelineno-0-321" name="__codelineno-0-321"></a><span class="k">class</span> <span class="nc">VelociraptorConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2527 +<span class="normal"><a href="#__codelineno-0-383">383</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-321" name="__codelineno-0-321"></a><span class="k">class</span> <span class="nc">VelociraptorConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2528 <a id="__codelineno-0-322" name="__codelineno-0-322"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2529 <a id="__codelineno-0-323" name="__codelineno-0-323"></a><span class="sd"> A connector for the Velociraptor service, a subclass of Connector.</span>
2530 <a id="__codelineno-0-324" name="__codelineno-0-324"></a>
@@ -2643,73 +2587,60 @@
2587 <a id="__codelineno-0-381" name="__codelineno-0-381"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2588 <a id="__codelineno-0-382" name="__codelineno-0-382"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get connector_api_key from the database: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2589 <a id="__codelineno-0-383" name="__codelineno-0-383"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
2646 -</code></pre>
2647 - </div>
2648 - </td>
2649 - </tr>
2650 - </table>
2651 - </div>
2652 - </details>
2653 -
2654 - <div class="doc doc-children">
2655 - <div class="doc doc-object doc-function">
2656 - <h3
2657 - id="app.models.connectors.VelociraptorConnector.verify_connection"
2658 - class="doc doc-heading"
2659 - >
2660 - <code class="highlight language-python"
2661 - ><span class="n">verify_connection</span
2662 - ><span class="p">()</span></code
2663 - >
2664 - </h3>
2665 -
2666 - <div class="doc doc-contents">
2667 - <p>Verifies the connection to Velociraptor service.</p>
2668 -
2669 - <p><strong>Returns:</strong></p>
2670 - <table>
2671 - <thead>
2672 - <tr>
2673 - <th>Name</th>
2674 - <th>Type</th>
2675 - <th>Description</th>
2676 - </tr>
2677 - </thead>
2678 - <tbody>
2679 - <tr>
2680 - <td><code>dict</code></td>
2681 - <td>
2682 - <code
2683 - ><span title="typing.Dict">Dict</span
2684 - >[str,
2685 - <span title="typing.Any">Any</span
2686 - >]</code
2687 - >
2688 - </td>
2689 - <td>
2690 - <div class="doc-md-description">
2691 - <p>
2692 - A dictionary containing
2693 - 'connectionSuccessful' status and
2694 - 'response' if the connection is
2695 - successful.
2696 - </p>
2697 - </div>
2698 - </td>
2699 - </tr>
2700 - </tbody>
2701 - </table>
2702 -
2703 - <details class="quote">
2704 - <summary>
2705 - Source code in <code>app\models\connectors.py</code>
2706 - </summary>
2707 - <div class="highlight">
2708 - <table class="highlighttable">
2709 - <tr>
2710 - <td class="linenos">
2711 - <div class="linenodiv">
2712 - <pre><span></span><span class="normal"><a href="#__codelineno-0-332">332</a></span>
2590 +</code></pre></div></td></tr></table></div>
2591 + </details>
2592 +
2593 +
2594 +
2595 + <div class="doc doc-children">
2596 +
2597 +
2598 +
2599 +
2600 +
2601 +
2602 +
2603 +
2604 +
2605 +<div class="doc doc-object doc-function">
2606 +
2607 +
2608 +
2609 +<h3 id="app.models.connectors.VelociraptorConnector.verify_connection" class="doc doc-heading">
2610 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
2611 +
2612 +</h3>
2613 +
2614 +
2615 + <div class="doc doc-contents ">
2616 +
2617 + <p>Verifies the connection to Velociraptor service.</p>
2618 +
2619 + <p><strong>Returns:</strong></p>
2620 + <table>
2621 + <thead>
2622 + <tr>
2623 +<th>Name</th> <th>Type</th>
2624 + <th>Description</th>
2625 + </tr>
2626 + </thead>
2627 + <tbody>
2628 + <tr>
2629 +<td><code>dict</code></td> <td>
2630 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
2631 + </td>
2632 + <td>
2633 + <div class="doc-md-description">
2634 + <p>A dictionary containing 'connectionSuccessful' status and 'response' if the connection is successful.</p>
2635 + </div>
2636 + </td>
2637 + </tr>
2638 + </tbody>
2639 + </table>
2640 +
2641 + <details class="quote">
2642 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2643 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-332">332</a></span>
2644 <span class="normal"><a href="#__codelineno-0-333">333</a></span>
2645 <span class="normal"><a href="#__codelineno-0-334">334</a></span>
2646 <span class="normal"><a href="#__codelineno-0-335">335</a></span>
@@ -2760,12 +2691,7 @@
2691 <span class="normal"><a href="#__codelineno-0-380">380</a></span>
2692 <span class="normal"><a href="#__codelineno-0-381">381</a></span>
2693 <span class="normal"><a href="#__codelineno-0-382">382</a></span>
2763 -<span class="normal"><a href="#__codelineno-0-383">383</a></span></pre>
2764 - </div>
2765 - </td>
2766 - <td class="code">
2767 - <div>
2768 - <pre><span></span><code><a id="__codelineno-0-332" name="__codelineno-0-332"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2694 +<span class="normal"><a href="#__codelineno-0-383">383</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-332" name="__codelineno-0-332"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2695 <a id="__codelineno-0-333" name="__codelineno-0-333"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2696 <a id="__codelineno-0-334" name="__codelineno-0-334"></a><span class="sd"> Verifies the connection to Velociraptor service.</span>
2697 <a id="__codelineno-0-335" name="__codelineno-0-335"></a>
@@ -2817,59 +2743,43 @@
2743 <a id="__codelineno-0-381" name="__codelineno-0-381"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2744 <a id="__codelineno-0-382" name="__codelineno-0-382"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get connector_api_key from the database: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2745 <a id="__codelineno-0-383" name="__codelineno-0-383"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
2820 -</code></pre>
2821 - </div>
2822 - </td>
2823 - </tr>
2824 - </table>
2825 - </div>
2826 - </details>
2827 - </div>
2828 - </div>
2829 - </div>
2830 - </div>
2831 - </div>
2832 -
2833 - <div class="doc doc-object doc-class">
2834 - <h2
2835 - id="app.models.connectors.WazuhIndexerConnector"
2836 - class="doc doc-heading"
2837 - >
2838 - <code>WazuhIndexerConnector</code>
2839 - </h2>
2840 -
2841 - <div class="doc doc-contents">
2842 - <p class="doc doc-class-bases">
2843 - Bases:
2844 - <code
2845 - ><a
2846 - class="autorefs autorefs-internal"
2847 - title="app.models.connectors.Connector"
2848 - href="#app.models.connectors.Connector"
2849 - >Connector</a
2850 - ></code
2851 - >
2852 - </p>
2853 -
2854 - <p>
2855 - This class represents a connector for the Wazuh indexer service. It
2856 - is a subclass of Connector.
2857 - </p>
2858 - <p>
2859 - :param connector_name: A string that specifies the name of the
2860 - connector.
2861 - </p>
2862 -
2863 - <details class="quote">
2864 - <summary>
2865 - Source code in <code>app\models\connectors.py</code>
2866 - </summary>
2867 - <div class="highlight">
2868 - <table class="highlighttable">
2869 - <tr>
2870 - <td class="linenos">
2871 - <div class="linenodiv">
2872 - <pre><span></span><span class="normal"><a href="#__codelineno-0-85"> 85</a></span>
2746 +</code></pre></div></td></tr></table></div>
2747 + </details>
2748 + </div>
2749 +
2750 +</div>
2751 +
2752 +
2753 +
2754 + </div>
2755 +
2756 + </div>
2757 +
2758 +</div>
2759 +
2760 +<div class="doc doc-object doc-class">
2761 +
2762 +
2763 +
2764 +<h2 id="app.models.connectors.WazuhIndexerConnector" class="doc doc-heading">
2765 + <code>WazuhIndexerConnector</code>
2766 +
2767 +
2768 +</h2>
2769 +
2770 +
2771 + <div class="doc doc-contents ">
2772 + <p class="doc doc-class-bases">
2773 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
2774 +
2775 +
2776 + <p>This class represents a connector for the Wazuh indexer service. It is a subclass of Connector.</p>
2777 +<p>:param connector_name: A string that specifies the name of the connector.</p>
2778 +
2779 +
2780 + <details class="quote">
2781 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2782 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-85"> 85</a></span>
2783 <span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
2784 <span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
2785 <span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
@@ -2908,12 +2818,7 @@
2818 <span class="normal"><a href="#__codelineno-0-121">121</a></span>
2819 <span class="normal"><a href="#__codelineno-0-122">122</a></span>
2820 <span class="normal"><a href="#__codelineno-0-123">123</a></span>
2911 -<span class="normal"><a href="#__codelineno-0-124">124</a></span></pre>
2912 - </div>
2913 - </td>
2914 - <td class="code">
2915 - <div>
2916 - <pre><span></span><code><a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="k">class</span> <span class="nc">WazuhIndexerConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2821 +<span class="normal"><a href="#__codelineno-0-124">124</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="k">class</span> <span class="nc">WazuhIndexerConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
2822 <a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2823 <a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> This class represents a connector for the Wazuh indexer service. It is a subclass of Connector.</span>
2824 <a id="__codelineno-0-88" name="__codelineno-0-88"></a>
@@ -2953,47 +2858,40 @@
2858 <a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2859 <a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="p">)</span>
2860 <a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;clusterHealth&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
2956 -</code></pre>
2957 - </div>
2958 - </td>
2959 - </tr>
2960 - </table>
2961 - </div>
2962 - </details>
2963 -
2964 - <div class="doc doc-children">
2965 - <div class="doc doc-object doc-function">
2966 - <h3
2967 - id="app.models.connectors.WazuhIndexerConnector.verify_connection"
2968 - class="doc doc-heading"
2969 - >
2970 - <code class="highlight language-python"
2971 - ><span class="n">verify_connection</span
2972 - ><span class="p">()</span></code
2973 - >
2974 - </h3>
2975 -
2976 - <div class="doc doc-contents">
2977 - <p>
2978 - This method verifies the connection to the Wazuh indexer
2979 - service.
2980 - </p>
2981 - <p>
2982 - :return: A dictionary containing the status of the
2983 - connection attempt and information about the cluster's
2984 - health.
2985 - </p>
2986 -
2987 - <details class="quote">
2988 - <summary>
2989 - Source code in <code>app\models\connectors.py</code>
2990 - </summary>
2991 - <div class="highlight">
2992 - <table class="highlighttable">
2993 - <tr>
2994 - <td class="linenos">
2995 - <div class="linenodiv">
2996 - <pre><span></span><span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
2861 +</code></pre></div></td></tr></table></div>
2862 + </details>
2863 +
2864 +
2865 +
2866 + <div class="doc doc-children">
2867 +
2868 +
2869 +
2870 +
2871 +
2872 +
2873 +
2874 +
2875 +
2876 +<div class="doc doc-object doc-function">
2877 +
2878 +
2879 +
2880 +<h3 id="app.models.connectors.WazuhIndexerConnector.verify_connection" class="doc doc-heading">
2881 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
2882 +
2883 +</h3>
2884 +
2885 +
2886 + <div class="doc doc-contents ">
2887 +
2888 + <p>This method verifies the connection to the Wazuh indexer service.</p>
2889 +<p>:return: A dictionary containing the status of the connection attempt and information about
2890 +the cluster's health.</p>
2891 +
2892 + <details class="quote">
2893 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2894 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
2895 <span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
2896 <span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
2897 <span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
@@ -3022,12 +2920,7 @@
2920 <span class="normal"><a href="#__codelineno-0-121">121</a></span>
2921 <span class="normal"><a href="#__codelineno-0-122">122</a></span>
2922 <span class="normal"><a href="#__codelineno-0-123">123</a></span>
3025 -<span class="normal"><a href="#__codelineno-0-124">124</a></span></pre>
3026 - </div>
3027 - </td>
3028 - <td class="code">
3029 - <div>
3030 - <pre><span></span><code><a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2923 +<span class="normal"><a href="#__codelineno-0-124">124</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
2924 <a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2925 <a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> This method verifies the connection to the Wazuh indexer service.</span>
2926 <a id="__codelineno-0-98" name="__codelineno-0-98"></a>
@@ -3057,59 +2950,43 @@
2950 <a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2951 <a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="p">)</span>
2952 <a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;clusterHealth&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
3060 -</code></pre>
3061 - </div>
3062 - </td>
3063 - </tr>
3064 - </table>
3065 - </div>
3066 - </details>
3067 - </div>
3068 - </div>
3069 - </div>
3070 - </div>
3071 - </div>
3072 -
3073 - <div class="doc doc-object doc-class">
3074 - <h2
3075 - id="app.models.connectors.WazuhManagerConnector"
3076 - class="doc doc-heading"
3077 - >
3078 - <code>WazuhManagerConnector</code>
3079 - </h2>
3080 -
3081 - <div class="doc doc-contents">
3082 - <p class="doc doc-class-bases">
3083 - Bases:
3084 - <code
3085 - ><a
3086 - class="autorefs autorefs-internal"
3087 - title="app.models.connectors.Connector"
3088 - href="#app.models.connectors.Connector"
3089 - >Connector</a
3090 - ></code
3091 - >
3092 - </p>
3093 -
3094 - <p>
3095 - This class represents a connector for the Wazuh manager service. It
3096 - is a subclass of Connector.
3097 - </p>
3098 - <p>
3099 - :param connector_name: A string that specifies the name of the
3100 - connector.
3101 - </p>
3102 -
3103 - <details class="quote">
3104 - <summary>
3105 - Source code in <code>app\models\connectors.py</code>
3106 - </summary>
3107 - <div class="highlight">
3108 - <table class="highlighttable">
3109 - <tr>
3110 - <td class="linenos">
3111 - <div class="linenodiv">
3112 - <pre><span></span><span class="normal"><a href="#__codelineno-0-173">173</a></span>
2953 +</code></pre></div></td></tr></table></div>
2954 + </details>
2955 + </div>
2956 +
2957 +</div>
2958 +
2959 +
2960 +
2961 + </div>
2962 +
2963 + </div>
2964 +
2965 +</div>
2966 +
2967 +<div class="doc doc-object doc-class">
2968 +
2969 +
2970 +
2971 +<h2 id="app.models.connectors.WazuhManagerConnector" class="doc doc-heading">
2972 + <code>WazuhManagerConnector</code>
2973 +
2974 +
2975 +</h2>
2976 +
2977 +
2978 + <div class="doc doc-contents ">
2979 + <p class="doc doc-class-bases">
2980 + Bases: <code><a class="autorefs autorefs-internal" title="app.models.connectors.Connector" href="#app.models.connectors.Connector">Connector</a></code></p>
2981 +
2982 +
2983 + <p>This class represents a connector for the Wazuh manager service. It is a subclass of Connector.</p>
2984 +<p>:param connector_name: A string that specifies the name of the connector.</p>
2985 +
2986 +
2987 + <details class="quote">
2988 + <summary>Source code in <code>app\models\connectors.py</code></summary>
2989 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-173">173</a></span>
2990 <span class="normal"><a href="#__codelineno-0-174">174</a></span>
2991 <span class="normal"><a href="#__codelineno-0-175">175</a></span>
2992 <span class="normal"><a href="#__codelineno-0-176">176</a></span>
@@ -3161,12 +3038,7 @@
3038 <span class="normal"><a href="#__codelineno-0-222">222</a></span>
3039 <span class="normal"><a href="#__codelineno-0-223">223</a></span>
3040 <span class="normal"><a href="#__codelineno-0-224">224</a></span>
3164 -<span class="normal"><a href="#__codelineno-0-225">225</a></span></pre>
3165 - </div>
3166 - </td>
3167 - <td class="code">
3168 - <div>
3169 - <pre><span></span><code><a id="__codelineno-0-173" name="__codelineno-0-173"></a><span class="k">class</span> <span class="nc">WazuhManagerConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
3041 +<span class="normal"><a href="#__codelineno-0-225">225</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-173" name="__codelineno-0-173"></a><span class="k">class</span> <span class="nc">WazuhManagerConnector</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span>
3042 <a id="__codelineno-0-174" name="__codelineno-0-174"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3043 <a id="__codelineno-0-175" name="__codelineno-0-175"></a><span class="sd"> This class represents a connector for the Wazuh manager service. It is a subclass of Connector.</span>
3044 <a id="__codelineno-0-176" name="__codelineno-0-176"></a>
@@ -3219,81 +3091,67 @@
3091 <a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd"> str: Authentication token for the Wazuh manager service.</span>
3092 <a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd"> &quot;&quot;&quot;</span>
3093 <a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()[</span><span class="s2">&quot;authToken&quot;</span><span class="p">]</span>
3222 -</code></pre>
3223 - </div>
3224 - </td>
3225 - </tr>
3226 - </table>
3227 - </div>
3228 - </details>
3229 -
3230 - <div class="doc doc-children">
3231 - <div class="doc doc-object doc-function">
3232 - <h3
3233 - id="app.models.connectors.WazuhManagerConnector.get_auth_token"
3234 - class="doc doc-heading"
3235 - >
3236 - <code class="highlight language-python"
3237 - ><span class="n">get_auth_token</span
3238 - ><span class="p">()</span></code
3239 - >
3240 - </h3>
3241 -
3242 - <div class="doc doc-contents">
3243 - <p>
3244 - Returns the authentication token for the Wazuh manager
3245 - service.
3246 - </p>
3247 -
3248 - <p><strong>Returns:</strong></p>
3249 - <table>
3250 - <thead>
3251 - <tr>
3252 - <th>Name</th>
3253 - <th>Type</th>
3254 - <th>Description</th>
3255 - </tr>
3256 - </thead>
3257 - <tbody>
3258 - <tr>
3259 - <td><code>str</code></td>
3260 - <td>
3261 - <code>str</code>
3262 - </td>
3263 - <td>
3264 - <div class="doc-md-description">
3265 - <p>
3266 - Authentication token for the Wazuh
3267 - manager service.
3268 - </p>
3269 - </div>
3270 - </td>
3271 - </tr>
3272 - </tbody>
3273 - </table>
3274 -
3275 - <details class="quote">
3276 - <summary>
3277 - Source code in <code>app\models\connectors.py</code>
3278 - </summary>
3279 - <div class="highlight">
3280 - <table class="highlighttable">
3281 - <tr>
3282 - <td class="linenos">
3283 - <div class="linenodiv">
3284 - <pre><span></span><span class="normal"><a href="#__codelineno-0-218">218</a></span>
3094 +</code></pre></div></td></tr></table></div>
3095 + </details>
3096 +
3097 +
3098 +
3099 + <div class="doc doc-children">
3100 +
3101 +
3102 +
3103 +
3104 +
3105 +
3106 +
3107 +
3108 +
3109 +<div class="doc doc-object doc-function">
3110 +
3111 +
3112 +
3113 +<h3 id="app.models.connectors.WazuhManagerConnector.get_auth_token" class="doc doc-heading">
3114 +<code class="highlight language-python"><span class="n">get_auth_token</span><span class="p">()</span></code>
3115 +
3116 +</h3>
3117 +
3118 +
3119 + <div class="doc doc-contents ">
3120 +
3121 + <p>Returns the authentication token for the Wazuh manager service.</p>
3122 +
3123 + <p><strong>Returns:</strong></p>
3124 + <table>
3125 + <thead>
3126 + <tr>
3127 +<th>Name</th> <th>Type</th>
3128 + <th>Description</th>
3129 + </tr>
3130 + </thead>
3131 + <tbody>
3132 + <tr>
3133 +<td><code>str</code></td> <td>
3134 + <code>str</code>
3135 + </td>
3136 + <td>
3137 + <div class="doc-md-description">
3138 + <p>Authentication token for the Wazuh manager service.</p>
3139 + </div>
3140 + </td>
3141 + </tr>
3142 + </tbody>
3143 + </table>
3144 +
3145 + <details class="quote">
3146 + <summary>Source code in <code>app\models\connectors.py</code></summary>
3147 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-218">218</a></span>
3148 <span class="normal"><a href="#__codelineno-0-219">219</a></span>
3149 <span class="normal"><a href="#__codelineno-0-220">220</a></span>
3150 <span class="normal"><a href="#__codelineno-0-221">221</a></span>
3151 <span class="normal"><a href="#__codelineno-0-222">222</a></span>
3152 <span class="normal"><a href="#__codelineno-0-223">223</a></span>
3153 <span class="normal"><a href="#__codelineno-0-224">224</a></span>
3291 -<span class="normal"><a href="#__codelineno-0-225">225</a></span></pre>
3292 - </div>
3293 - </td>
3294 - <td class="code">
3295 - <div>
3296 - <pre><span></span><code><a id="__codelineno-0-218" name="__codelineno-0-218"></a><span class="k">def</span> <span class="nf">get_auth_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
3154 +<span class="normal"><a href="#__codelineno-0-225">225</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-218" name="__codelineno-0-218"></a><span class="k">def</span> <span class="nf">get_auth_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
3155 <a id="__codelineno-0-219" name="__codelineno-0-219"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3156 <a id="__codelineno-0-220" name="__codelineno-0-220"></a><span class="sd"> Returns the authentication token for the Wazuh manager service.</span>
3157 <a id="__codelineno-0-221" name="__codelineno-0-221"></a>
@@ -3301,74 +3159,51 @@
3159 <a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd"> str: Authentication token for the Wazuh manager service.</span>
3160 <a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd"> &quot;&quot;&quot;</span>
3161 <a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()[</span><span class="s2">&quot;authToken&quot;</span><span class="p">]</span>
3304 -</code></pre>
3305 - </div>
3306 - </td>
3307 - </tr>
3308 - </table>
3309 - </div>
3310 - </details>
3311 - </div>
3312 - </div>
3313 -
3314 - <div class="doc doc-object doc-function">
3315 - <h3
3316 - id="app.models.connectors.WazuhManagerConnector.verify_connection"
3317 - class="doc doc-heading"
3318 - >
3319 - <code class="highlight language-python"
3320 - ><span class="n">verify_connection</span
3321 - ><span class="p">()</span></code
3322 - >
3323 - </h3>
3324 -
3325 - <div class="doc doc-contents">
3326 - <p>Verifies the connection to Wazuh manager service.</p>
3327 -
3328 - <p><strong>Returns:</strong></p>
3329 - <table>
3330 - <thead>
3331 - <tr>
3332 - <th>Name</th>
3333 - <th>Type</th>
3334 - <th>Description</th>
3335 - </tr>
3336 - </thead>
3337 - <tbody>
3338 - <tr>
3339 - <td><code>dict</code></td>
3340 - <td>
3341 - <code
3342 - ><span title="typing.Dict">Dict</span
3343 - >[str,
3344 - <span title="typing.Any">Any</span
3345 - >]</code
3346 - >
3347 - </td>
3348 - <td>
3349 - <div class="doc-md-description">
3350 - <p>
3351 - A dictionary containing
3352 - 'connectionSuccessful' status and
3353 - 'authToken' if the connection is
3354 - successful.
3355 - </p>
3356 - </div>
3357 - </td>
3358 - </tr>
3359 - </tbody>
3360 - </table>
3361 -
3362 - <details class="quote">
3363 - <summary>
3364 - Source code in <code>app\models\connectors.py</code>
3365 - </summary>
3366 - <div class="highlight">
3367 - <table class="highlighttable">
3368 - <tr>
3369 - <td class="linenos">
3370 - <div class="linenodiv">
3371 - <pre><span></span><span class="normal"><a href="#__codelineno-0-183">183</a></span>
3162 +</code></pre></div></td></tr></table></div>
3163 + </details>
3164 + </div>
3165 +
3166 +</div>
3167 +
3168 +<div class="doc doc-object doc-function">
3169 +
3170 +
3171 +
3172 +<h3 id="app.models.connectors.WazuhManagerConnector.verify_connection" class="doc doc-heading">
3173 +<code class="highlight language-python"><span class="n">verify_connection</span><span class="p">()</span></code>
3174 +
3175 +</h3>
3176 +
3177 +
3178 + <div class="doc doc-contents ">
3179 +
3180 + <p>Verifies the connection to Wazuh manager service.</p>
3181 +
3182 + <p><strong>Returns:</strong></p>
3183 + <table>
3184 + <thead>
3185 + <tr>
3186 +<th>Name</th> <th>Type</th>
3187 + <th>Description</th>
3188 + </tr>
3189 + </thead>
3190 + <tbody>
3191 + <tr>
3192 +<td><code>dict</code></td> <td>
3193 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
3194 + </td>
3195 + <td>
3196 + <div class="doc-md-description">
3197 + <p>A dictionary containing 'connectionSuccessful' status and 'authToken' if the connection is successful.</p>
3198 + </div>
3199 + </td>
3200 + </tr>
3201 + </tbody>
3202 + </table>
3203 +
3204 + <details class="quote">
3205 + <summary>Source code in <code>app\models\connectors.py</code></summary>
3206 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-183">183</a></span>
3207 <span class="normal"><a href="#__codelineno-0-184">184</a></span>
3208 <span class="normal"><a href="#__codelineno-0-185">185</a></span>
3209 <span class="normal"><a href="#__codelineno-0-186">186</a></span>
@@ -3401,12 +3236,7 @@
3236 <span class="normal"><a href="#__codelineno-0-213">213</a></span>
3237 <span class="normal"><a href="#__codelineno-0-214">214</a></span>
3238 <span class="normal"><a href="#__codelineno-0-215">215</a></span>
3404 -<span class="normal"><a href="#__codelineno-0-216">216</a></span></pre>
3405 - </div>
3406 - </td>
3407 - <td class="code">
3408 - <div>
3409 - <pre><span></span><code><a id="__codelineno-0-183" name="__codelineno-0-183"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
3239 +<span class="normal"><a href="#__codelineno-0-216">216</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-183" name="__codelineno-0-183"></a><span class="k">def</span> <span class="nf">verify_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
3240 <a id="__codelineno-0-184" name="__codelineno-0-184"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3241 <a id="__codelineno-0-185" name="__codelineno-0-185"></a><span class="sd"> Verifies the connection to Wazuh manager service.</span>
3242 <a id="__codelineno-0-186" name="__codelineno-0-186"></a>
@@ -3440,50 +3270,41 @@
3270 <a id="__codelineno-0-214" name="__codelineno-0-214"></a> <span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="s1">&#39;connector_url&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
3271 <a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="p">)</span>
3272 <a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;connectionSuccessful&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;authToken&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
3443 -</code></pre>
3444 - </div>
3445 - </td>
3446 - </tr>
3447 - </table>
3448 - </div>
3449 - </details>
3450 - </div>
3451 - </div>
3452 - </div>
3453 - </div>
3454 - </div>
3455 -
3456 - <div class="doc doc-object doc-function">
3457 - <h2 id="app.models.connectors.dynamic_import" class="doc doc-heading">
3458 - <code class="highlight language-python"
3459 - ><span class="n">dynamic_import</span><span class="p">(</span
3460 - ><span class="n">module_name</span><span class="p">,</span>
3461 - <span class="n">class_name</span><span class="p">)</span></code
3462 - >
3463 - </h2>
3464 -
3465 - <div class="doc doc-contents">
3466 - <p>
3467 - This function dynamically imports a module and returns a specific
3468 - class from it.
3469 - </p>
3470 - <p>
3471 - :param module_name: A string that specifies the name of the module
3472 - to import. :param class_name: A string that specifies the name of
3473 - the class to get from the module. :return: The class specified by
3474 - class_name from the module specified by module_name.
3475 - </p>
3476 -
3477 - <details class="quote">
3478 - <summary>
3479 - Source code in <code>app\models\connectors.py</code>
3480 - </summary>
3481 - <div class="highlight">
3482 - <table class="highlighttable">
3483 - <tr>
3484 - <td class="linenos">
3485 - <div class="linenodiv">
3486 - <pre><span></span><span class="normal"><a href="#__codelineno-0-23">23</a></span>
3273 +</code></pre></div></td></tr></table></div>
3274 + </details>
3275 + </div>
3276 +
3277 +</div>
3278 +
3279 +
3280 +
3281 + </div>
3282 +
3283 + </div>
3284 +
3285 +</div>
3286 +
3287 +
3288 +<div class="doc doc-object doc-function">
3289 +
3290 +
3291 +
3292 +<h2 id="app.models.connectors.dynamic_import" class="doc doc-heading">
3293 +<code class="highlight language-python"><span class="n">dynamic_import</span><span class="p">(</span><span class="n">module_name</span><span class="p">,</span> <span class="n">class_name</span><span class="p">)</span></code>
3294 +
3295 +</h2>
3296 +
3297 +
3298 + <div class="doc doc-contents ">
3299 +
3300 + <p>This function dynamically imports a module and returns a specific class from it.</p>
3301 +<p>:param module_name: A string that specifies the name of the module to import.
3302 +:param class_name: A string that specifies the name of the class to get from the module.
3303 +:return: The class specified by class_name from the module specified by module_name.</p>
3304 +
3305 + <details class="quote">
3306 + <summary>Source code in <code>app\models\connectors.py</code></summary>
3307 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-23">23</a></span>
3308 <span class="normal"><a href="#__codelineno-0-24">24</a></span>
3309 <span class="normal"><a href="#__codelineno-0-25">25</a></span>
3310 <span class="normal"><a href="#__codelineno-0-26">26</a></span>
@@ -3493,12 +3314,7 @@
3314 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
3315 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
3316 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
3496 -<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre>
3497 - </div>
3498 - </td>
3499 - <td class="code">
3500 - <div>
3501 - <pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">def</span> <span class="nf">dynamic_import</span><span class="p">(</span><span class="n">module_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">class_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
3317 +<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">def</span> <span class="nf">dynamic_import</span><span class="p">(</span><span class="n">module_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">class_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
3318 <a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3319 <a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> This function dynamically imports a module and returns a specific class from it.</span>
3320 <a id="__codelineno-0-26" name="__codelineno-0-26"></a>
@@ -3509,102 +3325,111 @@
3325 <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="n">module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
3326 <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">class_</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">class_name</span><span class="p">)</span>
3327 <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="n">class_</span>
3512 -</code></pre>
3513 - </div>
3514 - </td>
3515 - </tr>
3516 - </table>
3517 - </div>
3518 - </details>
3519 - </div>
3520 - </div>
3521 - </div>
3522 - </div>
3523 - </div>
3524 - <p><br /></p>
3525 - <h3 id="connectors-routes"><span style="color: green">Connectors Routes</span></h3>
3526 -
3527 - <div class="doc doc-object doc-module">
3528 - <a id="app.routes.connectors"></a>
3529 - <div class="doc doc-contents first">
3530 - <div class="doc doc-children">
3531 - <div class="doc doc-object doc-function">
3532 - <h2
3533 - id="app.routes.connectors.get_connector_details"
3534 - class="doc doc-heading"
3535 - >
3536 - <code class="highlight language-python"
3537 - ><span class="n">get_connector_details</span><span class="p">(</span
3538 - ><span class="nb">id</span><span class="p">)</span></code
3539 - >
3540 - </h2>
3541 -
3542 - <div class="doc doc-contents">
3543 - <p>Endpoint to retrieve the details of a connector.</p>
3544 -
3545 - <p><strong>Parameters:</strong></p>
3546 - <table>
3547 - <thead>
3548 - <tr>
3549 - <th>Name</th>
3550 - <th>Type</th>
3551 - <th>Description</th>
3552 - <th>Default</th>
3553 - </tr>
3554 - </thead>
3555 - <tbody>
3556 - <tr>
3557 - <td><code>id</code></td>
3558 - <td>
3559 - <code>str</code>
3560 - </td>
3561 - <td>
3562 - <div class="doc-md-description">
3563 - <p>The ID of the connector to retrieve.</p>
3564 - </div>
3565 - </td>
3566 - <td>
3567 - <em>required</em>
3568 - </td>
3569 - </tr>
3570 - </tbody>
3571 - </table>
3572 -
3573 - <p><strong>Returns:</strong></p>
3574 - <table>
3575 - <thead>
3576 - <tr>
3577 - <th>Name</th>
3578 - <th>Type</th>
3579 - <th>Description</th>
3580 - </tr>
3581 - </thead>
3582 - <tbody>
3583 - <tr>
3584 - <td><code>json</code></td>
3585 - <td></td>
3586 - <td>
3587 - <div class="doc-md-description">
3588 - <p>
3589 - A JSON response containing the details of the
3590 - connector.
3591 - </p>
3592 - </div>
3593 - </td>
3594 - </tr>
3595 - </tbody>
3596 - </table>
3597 -
3598 - <details class="quote">
3599 - <summary>
3600 - Source code in <code>app\routes\connectors.py</code>
3601 - </summary>
3602 - <div class="highlight">
3603 - <table class="highlighttable">
3604 - <tr>
3605 - <td class="linenos">
3606 - <div class="linenodiv">
3607 - <pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
3328 +</code></pre></div></td></tr></table></div>
3329 + </details>
3330 + </div>
3331 +
3332 +</div>
3333 +
3334 +
3335 +
3336 + </div>
3337 +
3338 + </div>
3339 +
3340 +</div><h3 id="connectors-routes"><span style="color:green">Connectors Routes</span></h3>
3341 +<p>This file, connectors.py, is a Flask blueprint module designed to define routes for operations related to connectors. Connectors are likely software components used to interact with various external systems or services, such as APIs or databases.</p>
3342 +<p>Here is a detailed breakdown of its functions:</p>
3343 +<p>list_connectors_available: An endpoint (/connectors) that uses a GET request to retrieve all available connectors. It queries the database for all connectors, dumps them into a result, and then processes each connector to instantiate it. The function returns a JSON response containing the list of all instantiated connectors.</p>
3344 +<p>get_connector_details: An endpoint (/connectors/<id>) that uses a GET request to retrieve the details of a specific connector, identified by its ID. It uses the ConnectorService to validate if the connector exists. If the connector exists, the function queries the database for the connector details, processes the connector to instantiate it, and returns a JSON response containing the connector details. If the connector does not exist, it returns a 404 error.</p>
3345 +<p>update_connector_route: An endpoint (/connectors/<id>) that uses a PUT request to update the details of a specific connector, identified by its ID. It uses the ConnectorService to validate if the connector exists and if the request data is valid. If both conditions are satisfied, the function uses the ConnectorService to update the connector in the database and then verify the connector connection. It returns a JSON response containing the connector name and the status of the connection verification. If the connector does not exist or the request data is invalid, it returns an error.</p>
3346 +<p>This module contains the routes related to connectors.</p>
3347 +
3348 +
3349 +<div class="doc doc-object doc-module">
3350 +
3351 +
3352 +<a id="app.routes.connectors"></a>
3353 + <div class="doc doc-contents first">
3354 +
3355 +
3356 +
3357 + <div class="doc doc-children">
3358 +
3359 +
3360 +
3361 +
3362 +
3363 +
3364 +
3365 +
3366 +
3367 +<div class="doc doc-object doc-function">
3368 +
3369 +
3370 +
3371 +<h2 id="app.routes.connectors.get_connector_details" class="doc doc-heading">
3372 +<code class="highlight language-python"><span class="n">get_connector_details</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span></code>
3373 +
3374 +</h2>
3375 +
3376 +
3377 + <div class="doc doc-contents ">
3378 +
3379 + <p>Endpoint to retrieve the details of a connector.</p>
3380 +
3381 + <p><strong>Parameters:</strong></p>
3382 + <table>
3383 + <thead>
3384 + <tr>
3385 + <th>Name</th>
3386 + <th>Type</th>
3387 + <th>Description</th>
3388 + <th>Default</th>
3389 + </tr>
3390 + </thead>
3391 + <tbody>
3392 + <tr>
3393 + <td><code>id</code></td>
3394 + <td>
3395 + <code>str</code>
3396 + </td>
3397 + <td>
3398 + <div class="doc-md-description">
3399 + <p>The ID of the connector to retrieve.</p>
3400 + </div>
3401 + </td>
3402 + <td>
3403 + <em>required</em>
3404 + </td>
3405 + </tr>
3406 + </tbody>
3407 + </table>
3408 +
3409 + <p><strong>Returns:</strong></p>
3410 + <table>
3411 + <thead>
3412 + <tr>
3413 +<th>Name</th> <th>Type</th>
3414 + <th>Description</th>
3415 + </tr>
3416 + </thead>
3417 + <tbody>
3418 + <tr>
3419 +<td><code>json</code></td> <td>
3420 + </td>
3421 + <td>
3422 + <div class="doc-md-description">
3423 + <p>A JSON response containing the details of the connector.</p>
3424 + </div>
3425 + </td>
3426 + </tr>
3427 + </tbody>
3428 + </table>
3429 +
3430 + <details class="quote">
3431 + <summary>Source code in <code>app\routes\connectors.py</code></summary>
3432 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
3433 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
3434 <span class="normal"><a href="#__codelineno-0-38">38</a></span>
3435 <span class="normal"><a href="#__codelineno-0-39">39</a></span>
@@ -3623,12 +3448,7 @@
3448 <span class="normal"><a href="#__codelineno-0-52">52</a></span>
3449 <span class="normal"><a href="#__codelineno-0-53">53</a></span>
3450 <span class="normal"><a href="#__codelineno-0-54">54</a></span>
3626 -<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre>
3627 - </div>
3628 - </td>
3629 - <td class="code">
3630 - <div>
3631 - <pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/connectors/&lt;id&gt;&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
3451 +<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/connectors/&lt;id&gt;&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
3452 <a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="k">def</span> <span class="nf">get_connector_details</span><span class="p">(</span><span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
3453 <a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3454 <a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Endpoint to retrieve the details of a connector.</span>
@@ -3648,66 +3468,50 @@
3468 <a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">instantiated_connector</span><span class="p">)</span>
3469 <a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">else</span><span class="p">:</span>
3470 <a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">connector</span><span class="p">),</span> <span class="mi">404</span>
3651 -</code></pre>
3652 - </div>
3653 - </td>
3654 - </tr>
3655 - </table>
3656 - </div>
3657 - </details>
3658 - </div>
3659 - </div>
3660 -
3661 - <div class="doc doc-object doc-function">
3662 - <h2
3663 - id="app.routes.connectors.list_connectors_available"
3664 - class="doc doc-heading"
3665 - >
3666 - <code class="highlight language-python"
3667 - ><span class="n">list_connectors_available</span
3668 - ><span class="p">()</span></code
3669 - >
3670 - </h2>
3671 -
3672 - <div class="doc doc-contents">
3673 - <p>Endpoint to retrieve all available connectors.</p>
3674 -
3675 - <p><strong>Returns:</strong></p>
3676 - <table>
3677 - <thead>
3678 - <tr>
3679 - <th>Name</th>
3680 - <th>Type</th>
3681 - <th>Description</th>
3682 - </tr>
3683 - </thead>
3684 - <tbody>
3685 - <tr>
3686 - <td><code>json</code></td>
3687 - <td></td>
3688 - <td>
3689 - <div class="doc-md-description">
3690 - <p>
3691 - A JSON response containing the list of all
3692 - available connectors along with their connection
3693 - verification status.
3694 - </p>
3695 - </div>
3696 - </td>
3697 - </tr>
3698 - </tbody>
3699 - </table>
3700 -
3701 - <details class="quote">
3702 - <summary>
3703 - Source code in <code>app\routes\connectors.py</code>
3704 - </summary>
3705 - <div class="highlight">
3706 - <table class="highlighttable">
3707 - <tr>
3708 - <td class="linenos">
3709 - <div class="linenodiv">
3710 - <pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
3471 +</code></pre></div></td></tr></table></div>
3472 + </details>
3473 + </div>
3474 +
3475 +</div>
3476 +
3477 +<div class="doc doc-object doc-function">
3478 +
3479 +
3480 +
3481 +<h2 id="app.routes.connectors.list_connectors_available" class="doc doc-heading">
3482 +<code class="highlight language-python"><span class="n">list_connectors_available</span><span class="p">()</span></code>
3483 +
3484 +</h2>
3485 +
3486 +
3487 + <div class="doc doc-contents ">
3488 +
3489 + <p>Endpoint to retrieve all available connectors.</p>
3490 +
3491 + <p><strong>Returns:</strong></p>
3492 + <table>
3493 + <thead>
3494 + <tr>
3495 +<th>Name</th> <th>Type</th>
3496 + <th>Description</th>
3497 + </tr>
3498 + </thead>
3499 + <tbody>
3500 + <tr>
3501 +<td><code>json</code></td> <td>
3502 + </td>
3503 + <td>
3504 + <div class="doc-md-description">
3505 + <p>A JSON response containing the list of all available connectors along with their connection verification status.</p>
3506 + </div>
3507 + </td>
3508 + </tr>
3509 + </tbody>
3510 + </table>
3511 +
3512 + <details class="quote">
3513 + <summary>Source code in <code>app\routes\connectors.py</code></summary>
3514 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
3515 <span class="normal"><a href="#__codelineno-0-16">16</a></span>
3516 <span class="normal"><a href="#__codelineno-0-17">17</a></span>
3517 <span class="normal"><a href="#__codelineno-0-18">18</a></span>
@@ -3725,12 +3529,7 @@
3529 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
3530 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
3531 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
3728 -<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre>
3729 - </div>
3730 - </td>
3731 - <td class="code">
3732 - <div>
3733 - <pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/connectors&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
3532 +<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/connectors&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
3533 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">list_connectors_available</span><span class="p">():</span>
3534 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3535 <a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Endpoint to retrieve all available connectors.</span>
@@ -3749,108 +3548,87 @@
3548 <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">]</span>
3549 <a id="__codelineno-0-32" name="__codelineno-0-32"></a>
3550 <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">instantiated_connectors</span><span class="p">)</span>
3752 -</code></pre>
3753 - </div>
3754 - </td>
3755 - </tr>
3756 - </table>
3757 - </div>
3758 - </details>
3759 - </div>
3760 - </div>
3761 -
3762 - <div class="doc doc-object doc-function">
3763 - <h2
3764 - id="app.routes.connectors.update_connector_route"
3765 - class="doc doc-heading"
3766 - >
3767 - <code class="highlight language-python"
3768 - ><span class="n">update_connector_route</span
3769 - ><span class="p">(</span><span class="nb">id</span
3770 - ><span class="p">)</span></code
3771 - >
3772 - </h2>
3773 -
3774 - <div class="doc doc-contents">
3775 - <p>Endpoint to update the details of a connector.</p>
3776 -
3777 - <p><strong>Parameters:</strong></p>
3778 - <table>
3779 - <thead>
3780 - <tr>
3781 - <th>Name</th>
3782 - <th>Type</th>
3783 - <th>Description</th>
3784 - <th>Default</th>
3785 - </tr>
3786 - </thead>
3787 - <tbody>
3788 - <tr>
3789 - <td><code>id</code></td>
3790 - <td>
3791 - <code>str</code>
3792 - </td>
3793 - <td>
3794 - <div class="doc-md-description">
3795 - <p>The ID of the connector to update.</p>
3796 - </div>
3797 - </td>
3798 - <td>
3799 - <em>required</em>
3800 - </td>
3801 - </tr>
3802 - </tbody>
3803 - </table>
3804 -
3805 - <p><strong>Returns:</strong></p>
3806 - <table>
3807 - <thead>
3808 - <tr>
3809 - <th>Name</th>
3810 - <th>Type</th>
3811 - <th>Description</th>
3812 - </tr>
3813 - </thead>
3814 - <tbody>
3815 - <tr>
3816 - <td><code>json</code></td>
3817 - <td></td>
3818 - <td>
3819 - <div class="doc-md-description">
3820 - <p>
3821 - A JSON response containing the success status of
3822 - the update operation and a message indicating
3823 - the status.
3824 - </p>
3825 - </div>
3826 - </td>
3827 - </tr>
3828 - <tr>
3829 - <td></td>
3830 - <td></td>
3831 - <td>
3832 - <div class="doc-md-description">
3833 - <p>
3834 - If the update operation was successful, it
3835 - returns the connector name and the status of the
3836 - connection verification.
3837 - </p>
3838 - </div>
3839 - </td>
3840 - </tr>
3841 - </tbody>
3842 - </table>
3843 -
3844 - <details class="quote">
3845 - <summary>
3846 - Source code in <code>app\routes\connectors.py</code>
3847 - </summary>
3848 - <div class="highlight">
3849 - <table class="highlighttable">
3850 - <tr>
3851 - <td class="linenos">
3852 - <div class="linenodiv">
3853 - <pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
3551 +</code></pre></div></td></tr></table></div>
3552 + </details>
3553 + </div>
3554 +
3555 +</div>
3556 +
3557 +<div class="doc doc-object doc-function">
3558 +
3559 +
3560 +
3561 +<h2 id="app.routes.connectors.update_connector_route" class="doc doc-heading">
3562 +<code class="highlight language-python"><span class="n">update_connector_route</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span></code>
3563 +
3564 +</h2>
3565 +
3566 +
3567 + <div class="doc doc-contents ">
3568 +
3569 + <p>Endpoint to update the details of a connector.</p>
3570 +
3571 + <p><strong>Parameters:</strong></p>
3572 + <table>
3573 + <thead>
3574 + <tr>
3575 + <th>Name</th>
3576 + <th>Type</th>
3577 + <th>Description</th>
3578 + <th>Default</th>
3579 + </tr>
3580 + </thead>
3581 + <tbody>
3582 + <tr>
3583 + <td><code>id</code></td>
3584 + <td>
3585 + <code>str</code>
3586 + </td>
3587 + <td>
3588 + <div class="doc-md-description">
3589 + <p>The ID of the connector to update.</p>
3590 + </div>
3591 + </td>
3592 + <td>
3593 + <em>required</em>
3594 + </td>
3595 + </tr>
3596 + </tbody>
3597 + </table>
3598 +
3599 + <p><strong>Returns:</strong></p>
3600 + <table>
3601 + <thead>
3602 + <tr>
3603 +<th>Name</th> <th>Type</th>
3604 + <th>Description</th>
3605 + </tr>
3606 + </thead>
3607 + <tbody>
3608 + <tr>
3609 +<td><code>json</code></td> <td>
3610 + </td>
3611 + <td>
3612 + <div class="doc-md-description">
3613 + <p>A JSON response containing the success status of the update operation and a message indicating the status.</p>
3614 + </div>
3615 + </td>
3616 + </tr>
3617 + <tr>
3618 +<td></td> <td>
3619 + </td>
3620 + <td>
3621 + <div class="doc-md-description">
3622 + <p>If the update operation was successful, it returns the connector name and the status of the connection verification.</p>
3623 + </div>
3624 + </td>
3625 + </tr>
3626 + </tbody>
3627 + </table>
3628 +
3629 + <details class="quote">
3630 + <summary>Source code in <code>app\routes\connectors.py</code></summary>
3631 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
3632 <span class="normal"><a href="#__codelineno-0-59">59</a></span>
3633 <span class="normal"><a href="#__codelineno-0-60">60</a></span>
3634 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
@@ -3884,12 +3662,7 @@
3662 <span class="normal"><a href="#__codelineno-0-89">89</a></span>
3663 <span class="normal"><a href="#__codelineno-0-90">90</a></span>
3664 <span class="normal"><a href="#__codelineno-0-91">91</a></span>
3887 -<span class="normal"><a href="#__codelineno-0-92">92</a></span></pre>
3888 - </div>
3889 - </td>
3890 - <td class="code">
3891 - <div>
3892 - <pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/connectors/&lt;id&gt;&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;PUT&quot;</span><span class="p">])</span>
3665 +<span class="normal"><a href="#__codelineno-0-92">92</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/connectors/&lt;id&gt;&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;PUT&quot;</span><span class="p">])</span>
3666 <a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="nf">update_connector_route</span><span class="p">(</span><span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
3667 <a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3668 <a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Endpoint to update the details of a connector.</span>
@@ -3924,51 +3697,69 @@
3697 <a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">data_validated</span><span class="p">),</span> <span class="mi">400</span>
3698 <a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">else</span><span class="p">:</span>
3699 <a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">connector</span><span class="p">),</span> <span class="mi">404</span>
3927 -</code></pre>
3928 - </div>
3929 - </td>
3930 - </tr>
3931 - </table>
3932 - </div>
3933 - </details>
3934 - </div>
3935 - </div>
3936 - </div>
3937 - </div>
3938 - </div>
3939 - <p><br /></p>
3940 - <h3 id="connectors-services"><span style="color: red">Connectors Services</span></h3>
3941 -
3942 - <div class="doc doc-object doc-module">
3943 - <a id="app.services.connectors.connectors"></a>
3944 - <div class="doc doc-contents first">
3945 - <div class="doc doc-children">
3946 - <div class="doc doc-object doc-class">
3947 - <h2
3948 - id="app.services.connectors.connectors.ConnectorService"
3949 - class="doc doc-heading"
3950 - >
3951 - <code>ConnectorService</code>
3952 - </h2>
3953 -
3954 - <div class="doc doc-contents">
3955 - <p>
3956 - Service class for Connector operations. This class contains methods
3957 - for updating and processing connectors, validating connector
3958 - existence and data, and verifying connector connections.
3959 - </p>
3960 -
3961 - <details class="quote">
3962 - <summary>
3963 - Source code in
3964 - <code>app\services\connectors\connectors.py</code>
3965 - </summary>
3966 - <div class="highlight">
3967 - <table class="highlighttable">
3968 - <tr>
3969 - <td class="linenos">
3970 - <div class="linenodiv">
3971 - <pre><span></span><span class="normal"><a href="#__codelineno-0-14"> 14</a></span>
3700 +</code></pre></div></td></tr></table></div>
3701 + </details>
3702 + </div>
3703 +
3704 +</div>
3705 +
3706 +
3707 +
3708 + </div>
3709 +
3710 + </div>
3711 +
3712 +</div><h3 id="connectors-services"><span style="color:red">Connectors Services</span></h3>
3713 +<p>The connectors.py script is part of a service layer that handles the operations related to connector objects in the application. Connectors in this context refer to connections with external services or APIs.</p>
3714 +<p>Here is a detailed summary of its functionalities:</p>
3715 +<p>The ConnectorService class is defined to manage operations related to connectors. The service class is initialized with a database session which is used for connector operations.</p>
3716 +<p>The update_connector_in_db method updates a connector in the database with the provided data. It returns a dictionary containing the success status and a message indicating the status.</p>
3717 +<p>The process_connector method creates a connector instance, verifies the connection, and returns the connector details.</p>
3718 +<p>The validate_connector_exists method checks if a connector exists in the database. If the connector exists, it returns the connector name. If the connector was not found, it returns a message indicating so.</p>
3719 +<p>The update_connector method updates a connector in the database with the provided data. It also checks if the connector is None and returns a relevant message if true.</p>
3720 +<p>The verify_connector_connection method verifies the connection of a connector. If the connection was verified successfully, it returns the connector name and the connection status. If the connector was not found, it returns a message indicating so.</p>
3721 +<p>The validate_request_data method validates the request data to ensure connector_url, connector_username, and connector_password are present.</p>
3722 +<p>The validate_request_data_api_key method validates the request data to ensure connector_url and connector_api_key are present.</p>
3723 +
3724 +
3725 +<div class="doc doc-object doc-module">
3726 +
3727 +
3728 +<a id="app.services.connectors.connectors"></a>
3729 + <div class="doc doc-contents first">
3730 +
3731 +
3732 +
3733 + <div class="doc doc-children">
3734 +
3735 +
3736 +
3737 +
3738 +
3739 +
3740 +
3741 +
3742 +<div class="doc doc-object doc-class">
3743 +
3744 +
3745 +
3746 +<h2 id="app.services.connectors.connectors.ConnectorService" class="doc doc-heading">
3747 + <code>ConnectorService</code>
3748 +
3749 +
3750 +</h2>
3751 +
3752 +
3753 + <div class="doc doc-contents ">
3754 +
3755 +
3756 + <p>Service class for Connector operations. This class contains methods for updating and processing connectors,
3757 +validating connector existence and data, and verifying connector connections.</p>
3758 +
3759 +
3760 + <details class="quote">
3761 + <summary>Source code in <code>app\services\connectors\connectors.py</code></summary>
3762 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-14"> 14</a></span>
3763 <span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
3764 <span class="normal"><a href="#__codelineno-0-16"> 16</a></span>
3765 <span class="normal"><a href="#__codelineno-0-17"> 17</a></span>
@@ -4201,12 +3992,7 @@
3992 <span class="normal"><a href="#__codelineno-0-244">244</a></span>
3993 <span class="normal"><a href="#__codelineno-0-245">245</a></span>
3994 <span class="normal"><a href="#__codelineno-0-246">246</a></span>
4204 -<span class="normal"><a href="#__codelineno-0-247">247</a></span></pre>
4205 - </div>
4206 - </td>
4207 - <td class="code">
4208 - <div>
4209 - <pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">ConnectorService</span><span class="p">:</span>
3995 +<span class="normal"><a href="#__codelineno-0-247">247</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">ConnectorService</span><span class="p">:</span>
3996 <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3997 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Service class for Connector operations. This class contains methods for updating and processing connectors,</span>
3998 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> validating connector existence and data, and verifying connector connections.</span>
@@ -4440,84 +4226,72 @@
4226 <a id="__codelineno-0-245" name="__codelineno-0-245"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Request data is invalid. Ensure connector_url and connector_api_key are present&quot;</span><span class="p">,</span>
4227 <a id="__codelineno-0-246" name="__codelineno-0-246"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
4228 <a id="__codelineno-0-247" name="__codelineno-0-247"></a> <span class="p">}</span>
4443 -</code></pre>
4444 - </div>
4445 - </td>
4446 - </tr>
4447 - </table>
4448 - </div>
4449 - </details>
4450 -
4451 - <div class="doc doc-children">
4452 - <div class="doc doc-object doc-function">
4453 - <h3
4454 - id="app.services.connectors.connectors.ConnectorService.__init__"
4455 - class="doc doc-heading"
4456 - >
4457 - <code class="highlight language-python"
4458 - ><span class="fm">__init__</span><span class="p">(</span
4459 - ><span class="n">db</span><span class="p">)</span></code
4460 - >
4461 - </h3>
4462 -
4463 - <div class="doc doc-contents">
4464 - <p>
4465 - Initializes the ConnectorService with a database
4466 - session.
4467 - </p>
4468 -
4469 - <p><strong>Parameters:</strong></p>
4470 - <table>
4471 - <thead>
4472 - <tr>
4473 - <th>Name</th>
4474 - <th>Type</th>
4475 - <th>Description</th>
4476 - <th>Default</th>
4477 - </tr>
4478 - </thead>
4479 - <tbody>
4480 - <tr>
4481 - <td><code>db</code></td>
4482 - <td></td>
4483 - <td>
4484 - <div class="doc-md-description">
4485 - <p>
4486 - The database session to be used for
4487 - connector operations.
4488 - </p>
4489 - </div>
4490 - </td>
4491 - <td>
4492 - <em>required</em>
4493 - </td>
4494 - </tr>
4495 - </tbody>
4496 - </table>
4497 -
4498 - <details class="quote">
4499 - <summary>
4500 - Source code in
4501 - <code>app\services\connectors\connectors.py</code>
4502 - </summary>
4503 - <div class="highlight">
4504 - <table class="highlighttable">
4505 - <tr>
4506 - <td class="linenos">
4507 - <div class="linenodiv">
4508 - <pre><span></span><span class="normal"><a href="#__codelineno-0-20">20</a></span>
4229 +</code></pre></div></td></tr></table></div>
4230 + </details>
4231 +
4232 +
4233 +
4234 + <div class="doc doc-children">
4235 +
4236 +
4237 +
4238 +
4239 +
4240 +
4241 +
4242 +
4243 +
4244 +<div class="doc doc-object doc-function">
4245 +

This file is too large to show in full.

backend/site/dfiriris/index.html
+215 -195
@@ -4026,10 +4026,7 @@ fetching and parsing data, and retrieving connector details.</p>
4026
4027 <details class="quote">
4028 <summary>Source code in <code>app\services\DFIR_IRIS\universal.py</code></summary>
4029 - <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-20"> 20</a></span>
4030 -<span class="normal"><a href="#__codelineno-0-21"> 21</a></span>
4031 -<span class="normal"><a href="#__codelineno-0-22"> 22</a></span>
4032 -<span class="normal"><a href="#__codelineno-0-23"> 23</a></span>
4029 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-23"> 23</a></span>
4030 <span class="normal"><a href="#__codelineno-0-24"> 24</a></span>
4031 <span class="normal"><a href="#__codelineno-0-25"> 25</a></span>
4032 <span class="normal"><a href="#__codelineno-0-26"> 26</a></span>
@@ -4114,95 +4111,108 @@ fetching and parsing data, and retrieving connector details.</p>
4111 <span class="normal"><a href="#__codelineno-0-105">105</a></span>
4112 <span class="normal"><a href="#__codelineno-0-106">106</a></span>
4113 <span class="normal"><a href="#__codelineno-0-107">107</a></span>
4117 -<span class="normal"><a href="#__codelineno-0-108">108</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
4118 -<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4119 -<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> A service class that encapsulates the logic for interfacing with DFIR-IRIS. This class handles tasks like creating a session,</span>
4120 -<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> fetching and parsing data, and retrieving connector details.</span>
4121 -<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> &quot;&quot;&quot;</span>
4122 -<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
4123 -<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
4124 -<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4125 -<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Initializes the UniversalService by collecting DFIR-IRIS details associated with the specified connector name.</span>
4126 -<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
4127 -<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Args:</span>
4128 -<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4129 -<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> &quot;&quot;&quot;</span>
4130 -<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_iris_details</span><span class="p">(</span>
4131 -<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="n">connector_name</span><span class="p">,</span>
4132 -<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="p">)</span>
4133 -<a id="__codelineno-0-36" name="__codelineno-0-36"></a>
4134 -<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">def</span> <span class="nf">collect_iris_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
4135 -<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4136 -<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Collects the details of the DFIR-IRIS connector.</span>
4137 -<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
4138 -<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Args:</span>
4139 -<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4140 -<a id="__codelineno-0-43" name="__codelineno-0-43"></a>
4141 -<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Returns:</span>
4142 -<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> tuple: A tuple containing the connection URL and API key. If the connection is not successful, both elements of the tuple are None.</span>
4143 -<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> &quot;&quot;&quot;</span>
4144 -<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
4145 -<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
4146 -<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
4147 -<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
4148 -<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">return</span> <span class="p">(</span>
4149 -<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
4150 -<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_api_key&quot;</span><span class="p">),</span>
4151 -<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="p">)</span>
4152 -<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">else</span><span class="p">:</span>
4153 -<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4154 -<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
4155 -<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">def</span> <span class="nf">create_session</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">ClientSession</span><span class="p">],</span> <span class="nb">str</span><span class="p">]]:</span>
4156 -<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4157 -<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Creates a session with DFIR-IRIS.</span>
4158 -<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
4159 -<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> This method creates a session with DFIR-IRIS and returns a dictionary with a success status and the session object.</span>
4160 -<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> If a session cannot be established, an error is logged and a dictionary with &quot;success&quot; set to False and an error message is returned.</span>
4161 -<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
4162 -<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Returns:</span>
4163 -<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> dict: A dictionary containing the success status and either the session object or an error message.</span>
4164 -<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="sd"> &quot;&quot;&quot;</span>
4165 -<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">try</span><span class="p">:</span>
4166 -<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Creating session with DFIR-IRIS.&quot;</span><span class="p">)</span>
4167 -<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">session</span> <span class="o">=</span> <span class="n">ClientSession</span><span class="p">(</span>
4168 -<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">host</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
4169 -<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">apikey</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span><span class="p">,</span>
4170 -<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">agent</span><span class="o">=</span><span class="s2">&quot;iris-client&quot;</span><span class="p">,</span>
4171 -<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">ssl_verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
4172 -<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span>
4173 -<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">proxy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4174 -<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="p">)</span>
4175 -<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Session created.&quot;</span><span class="p">)</span>
4176 -<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;session&quot;</span><span class="p">:</span> <span class="n">session</span><span class="p">}</span>
4177 -<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
4178 -<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error creating session with DFIR-IRIS: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4179 -<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">return</span> <span class="p">{</span>
4180 -<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
4181 -<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Connection to DFIR-IRIS unsuccessful.&quot;</span><span class="p">,</span>
4182 -<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="p">}</span>
4183 -<a id="__codelineno-0-86" name="__codelineno-0-86"></a>
4184 -<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">def</span> <span class="nf">fetch_and_parse_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">ClientSession</span><span class="p">,</span> <span class="n">action</span><span class="p">:</span> <span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]]]:</span>
4185 -<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4186 -<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> Fetches and parses data from DFIR-IRIS using a specified action.</span>
4187 -<a id="__codelineno-0-90" name="__codelineno-0-90"></a>
4188 -<a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="sd"> Args:</span>
4189 -<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> session (ClientSession): The DFIR-IRIS session object.</span>
4190 -<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> action (Callable): The function to execute to fetch data from DFIR-IRIS. This function should accept *args.</span>
4191 -<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> args: The arguments to pass to the action function.</span>
4192 -<a id="__codelineno-0-95" name="__codelineno-0-95"></a>
4193 -<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> Returns:</span>
4194 -<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> dict: A dictionary containing the success status and either the fetched data or None if the operation was unsuccessful.</span>
4195 -<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> &quot;&quot;&quot;</span>
4196 -<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">try</span><span class="p">:</span>
4197 -<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Executing </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">... on args: </span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4198 -<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">action</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
4199 -<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">assert_api_resp</span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">soft_fail</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
4200 -<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">get_data_from_resp</span><span class="p">(</span><span class="n">status</span><span class="p">)</span>
4201 -<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Successfully executed </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4202 -<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">:</span> <span class="n">data</span><span class="p">}</span>
4203 -<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
4204 -<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to execute </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4205 -<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
4114 +<span class="normal"><a href="#__codelineno-0-108">108</a></span>
4115 +<span class="normal"><a href="#__codelineno-0-109">109</a></span>
4116 +<span class="normal"><a href="#__codelineno-0-110">110</a></span>
4117 +<span class="normal"><a href="#__codelineno-0-111">111</a></span>
4118 +<span class="normal"><a href="#__codelineno-0-112">112</a></span>
4119 +<span class="normal"><a href="#__codelineno-0-113">113</a></span>
4120 +<span class="normal"><a href="#__codelineno-0-114">114</a></span>
4121 +<span class="normal"><a href="#__codelineno-0-115">115</a></span>
4122 +<span class="normal"><a href="#__codelineno-0-116">116</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
4123 +<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4124 +<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> A service class that encapsulates the logic for interfacing with DFIR-IRIS. This class handles tasks like creating a session,</span>
4125 +<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> fetching and parsing data, and retrieving connector details.</span>
4126 +<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> &quot;&quot;&quot;</span>
4127 +<a id="__codelineno-0-28" name="__codelineno-0-28"></a>
4128 +<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
4129 +<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4130 +<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> Initializes the UniversalService by collecting DFIR-IRIS details associated with the specified connector name.</span>
4131 +<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
4132 +<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Args:</span>
4133 +<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4134 +<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> &quot;&quot;&quot;</span>
4135 +<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_iris_details</span><span class="p">(</span>
4136 +<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">connector_name</span><span class="p">,</span>
4137 +<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="p">)</span>
4138 +<a id="__codelineno-0-39" name="__codelineno-0-39"></a>
4139 +<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">def</span> <span class="nf">collect_iris_details</span><span class="p">(</span>
4140 +<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="bp">self</span><span class="p">,</span>
4141 +<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
4142 +<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
4143 +<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4144 +<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Collects the details of the DFIR-IRIS connector.</span>
4145 +<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
4146 +<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Args:</span>
4147 +<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4148 +<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
4149 +<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> Returns:</span>
4150 +<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> tuple: A tuple containing the connection URL and API key. If the connection is not successful, both elements of the tuple are None.</span>
4151 +<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> &quot;&quot;&quot;</span>
4152 +<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
4153 +<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
4154 +<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
4155 +<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
4156 +<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">return</span> <span class="p">(</span>
4157 +<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
4158 +<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_api_key&quot;</span><span class="p">),</span>
4159 +<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="p">)</span>
4160 +<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">else</span><span class="p">:</span>
4161 +<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4162 +<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
4163 +<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">def</span> <span class="nf">create_session</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">ClientSession</span><span class="p">],</span> <span class="nb">str</span><span class="p">]]:</span>
4164 +<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4165 +<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> Creates a session with DFIR-IRIS.</span>
4166 +<a id="__codelineno-0-67" name="__codelineno-0-67"></a>
4167 +<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> This method creates a session with DFIR-IRIS and returns a dictionary with a success status and the session object.</span>
4168 +<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> If a session cannot be established, an error is logged and a dictionary with &quot;success&quot; set to False and an error message is returned.</span>
4169 +<a id="__codelineno-0-70" name="__codelineno-0-70"></a>
4170 +<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> Returns:</span>
4171 +<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> dict: A dictionary containing the success status and either the session object or an error message.</span>
4172 +<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> &quot;&quot;&quot;</span>
4173 +<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">try</span><span class="p">:</span>
4174 +<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Creating session with DFIR-IRIS.&quot;</span><span class="p">)</span>
4175 +<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">session</span> <span class="o">=</span> <span class="n">ClientSession</span><span class="p">(</span>
4176 +<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">host</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
4177 +<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">apikey</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span><span class="p">,</span>
4178 +<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">agent</span><span class="o">=</span><span class="s2">&quot;iris-client&quot;</span><span class="p">,</span>
4179 +<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">ssl_verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
4180 +<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span>
4181 +<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">proxy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4182 +<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="p">)</span>
4183 +<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Session created.&quot;</span><span class="p">)</span>
4184 +<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;session&quot;</span><span class="p">:</span> <span class="n">session</span><span class="p">}</span>
4185 +<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
4186 +<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error creating session with DFIR-IRIS: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4187 +<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="k">return</span> <span class="p">{</span>
4188 +<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
4189 +<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Connection to DFIR-IRIS unsuccessful.&quot;</span><span class="p">,</span>
4190 +<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">}</span>
4191 +<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
4192 +<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">def</span> <span class="nf">fetch_and_parse_data</span><span class="p">(</span>
4193 +<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">ClientSession</span><span class="p">,</span> <span class="n">action</span><span class="p">:</span> <span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span>
4194 +<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]]]:</span>
4195 +<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4196 +<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> Fetches and parses data from DFIR-IRIS using a specified action.</span>
4197 +<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
4198 +<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> Args:</span>
4199 +<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> session (ClientSession): The DFIR-IRIS session object.</span>
4200 +<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="sd"> action (Callable): The function to execute to fetch data from DFIR-IRIS. This function should accept *args.</span>
4201 +<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> args: The arguments to pass to the action function.</span>
4202 +<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
4203 +<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Returns:</span>
4204 +<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> dict: A dictionary containing the success status and either the fetched data or None if the operation was unsuccessful.</span>
4205 +<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> &quot;&quot;&quot;</span>
4206 +<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">try</span><span class="p">:</span>
4207 +<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Executing </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">... on args: </span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4208 +<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">action</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
4209 +<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">assert_api_resp</span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">soft_fail</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
4210 +<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">get_data_from_resp</span><span class="p">(</span><span class="n">status</span><span class="p">)</span>
4211 +<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Successfully executed </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4212 +<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">:</span> <span class="n">data</span><span class="p">}</span>
4213 +<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
4214 +<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to execute </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4215 +<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
4216 </code></pre></div></td></tr></table></div>
4217 </details>
4218
@@ -4262,25 +4272,25 @@ fetching and parsing data, and retrieving connector details.</p>
4272
4273 <details class="quote">
4274 <summary>Source code in <code>app\services\DFIR_IRIS\universal.py</code></summary>
4265 - <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-26">26</a></span>
4266 -<span class="normal"><a href="#__codelineno-0-27">27</a></span>
4267 -<span class="normal"><a href="#__codelineno-0-28">28</a></span>
4268 -<span class="normal"><a href="#__codelineno-0-29">29</a></span>
4275 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-29">29</a></span>
4276 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
4277 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
4278 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
4279 <span class="normal"><a href="#__codelineno-0-33">33</a></span>
4280 <span class="normal"><a href="#__codelineno-0-34">34</a></span>
4274 -<span class="normal"><a href="#__codelineno-0-35">35</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
4275 -<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4276 -<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Initializes the UniversalService by collecting DFIR-IRIS details associated with the specified connector name.</span>
4277 -<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
4278 -<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Args:</span>
4279 -<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4280 -<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> &quot;&quot;&quot;</span>
4281 -<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_iris_details</span><span class="p">(</span>
4282 -<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="n">connector_name</span><span class="p">,</span>
4283 -<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="p">)</span>
4281 +<span class="normal"><a href="#__codelineno-0-35">35</a></span>
4282 +<span class="normal"><a href="#__codelineno-0-36">36</a></span>
4283 +<span class="normal"><a href="#__codelineno-0-37">37</a></span>
4284 +<span class="normal"><a href="#__codelineno-0-38">38</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
4285 +<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4286 +<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> Initializes the UniversalService by collecting DFIR-IRIS details associated with the specified connector name.</span>
4287 +<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
4288 +<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Args:</span>
4289 +<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4290 +<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> &quot;&quot;&quot;</span>
4291 +<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_iris_details</span><span class="p">(</span>
4292 +<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">connector_name</span><span class="p">,</span>
4293 +<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="p">)</span>
4294 </code></pre></div></td></tr></table></div>
4295 </details>
4296 </div>
@@ -4353,10 +4363,7 @@ fetching and parsing data, and retrieving connector details.</p>
4363
4364 <details class="quote">
4365 <summary>Source code in <code>app\services\DFIR_IRIS\universal.py</code></summary>
4356 - <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-37">37</a></span>
4357 -<span class="normal"><a href="#__codelineno-0-38">38</a></span>
4358 -<span class="normal"><a href="#__codelineno-0-39">39</a></span>
4359 -<span class="normal"><a href="#__codelineno-0-40">40</a></span>
4366 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-40">40</a></span>
4367 <span class="normal"><a href="#__codelineno-0-41">41</a></span>
4368 <span class="normal"><a href="#__codelineno-0-42">42</a></span>
4369 <span class="normal"><a href="#__codelineno-0-43">43</a></span>
@@ -4372,26 +4379,35 @@ fetching and parsing data, and retrieving connector details.</p>
4379 <span class="normal"><a href="#__codelineno-0-53">53</a></span>
4380 <span class="normal"><a href="#__codelineno-0-54">54</a></span>
4381 <span class="normal"><a href="#__codelineno-0-55">55</a></span>
4375 -<span class="normal"><a href="#__codelineno-0-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="k">def</span> <span class="nf">collect_iris_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
4376 -<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4377 -<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Collects the details of the DFIR-IRIS connector.</span>
4378 -<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
4379 -<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Args:</span>
4380 -<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4381 -<a id="__codelineno-0-43" name="__codelineno-0-43"></a>
4382 -<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Returns:</span>
4383 -<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> tuple: A tuple containing the connection URL and API key. If the connection is not successful, both elements of the tuple are None.</span>
4384 -<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> &quot;&quot;&quot;</span>
4385 -<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
4386 -<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
4387 -<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
4388 -<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
4389 -<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">return</span> <span class="p">(</span>
4390 -<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
4391 -<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_api_key&quot;</span><span class="p">),</span>
4392 -<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="p">)</span>
4393 -<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">else</span><span class="p">:</span>
4394 -<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4382 +<span class="normal"><a href="#__codelineno-0-56">56</a></span>
4383 +<span class="normal"><a href="#__codelineno-0-57">57</a></span>
4384 +<span class="normal"><a href="#__codelineno-0-58">58</a></span>
4385 +<span class="normal"><a href="#__codelineno-0-59">59</a></span>
4386 +<span class="normal"><a href="#__codelineno-0-60">60</a></span>
4387 +<span class="normal"><a href="#__codelineno-0-61">61</a></span>
4388 +<span class="normal"><a href="#__codelineno-0-62">62</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="k">def</span> <span class="nf">collect_iris_details</span><span class="p">(</span>
4389 +<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="bp">self</span><span class="p">,</span>
4390 +<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
4391 +<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
4392 +<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4393 +<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Collects the details of the DFIR-IRIS connector.</span>
4394 +<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
4395 +<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Args:</span>
4396 +<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> connector_name (str): The name of the DFIR-IRIS connector.</span>
4397 +<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
4398 +<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> Returns:</span>
4399 +<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> tuple: A tuple containing the connection URL and API key. If the connection is not successful, both elements of the tuple are None.</span>
4400 +<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> &quot;&quot;&quot;</span>
4401 +<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
4402 +<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
4403 +<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
4404 +<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
4405 +<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">return</span> <span class="p">(</span>
4406 +<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
4407 +<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_api_key&quot;</span><span class="p">),</span>
4408 +<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="p">)</span>
4409 +<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">else</span><span class="p">:</span>
4410 +<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4411 </code></pre></div></td></tr></table></div>
4412 </details>
4413 </div>
@@ -4438,13 +4454,7 @@ If a session cannot be established, an error is logged and a dictionary with "su
4454
4455 <details class="quote">
4456 <summary>Source code in <code>app\services\DFIR_IRIS\universal.py</code></summary>
4441 - <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
4442 -<span class="normal"><a href="#__codelineno-0-59">59</a></span>
4443 -<span class="normal"><a href="#__codelineno-0-60">60</a></span>
4444 -<span class="normal"><a href="#__codelineno-0-61">61</a></span>
4445 -<span class="normal"><a href="#__codelineno-0-62">62</a></span>
4446 -<span class="normal"><a href="#__codelineno-0-63">63</a></span>
4447 -<span class="normal"><a href="#__codelineno-0-64">64</a></span>
4457 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-64">64</a></span>
4458 <span class="normal"><a href="#__codelineno-0-65">65</a></span>
4459 <span class="normal"><a href="#__codelineno-0-66">66</a></span>
4460 <span class="normal"><a href="#__codelineno-0-67">67</a></span>
@@ -4465,34 +4475,40 @@ If a session cannot be established, an error is logged and a dictionary with "su
4475 <span class="normal"><a href="#__codelineno-0-82">82</a></span>
4476 <span class="normal"><a href="#__codelineno-0-83">83</a></span>
4477 <span class="normal"><a href="#__codelineno-0-84">84</a></span>
4468 -<span class="normal"><a href="#__codelineno-0-85">85</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="k">def</span> <span class="nf">create_session</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">ClientSession</span><span class="p">],</span> <span class="nb">str</span><span class="p">]]:</span>
4469 -<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4470 -<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Creates a session with DFIR-IRIS.</span>
4471 -<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
4472 -<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> This method creates a session with DFIR-IRIS and returns a dictionary with a success status and the session object.</span>
4473 -<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> If a session cannot be established, an error is logged and a dictionary with &quot;success&quot; set to False and an error message is returned.</span>
4474 -<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
4475 -<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Returns:</span>
4476 -<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> dict: A dictionary containing the success status and either the session object or an error message.</span>
4477 -<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="sd"> &quot;&quot;&quot;</span>
4478 -<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">try</span><span class="p">:</span>
4479 -<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Creating session with DFIR-IRIS.&quot;</span><span class="p">)</span>
4480 -<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">session</span> <span class="o">=</span> <span class="n">ClientSession</span><span class="p">(</span>
4481 -<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">host</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
4482 -<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">apikey</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span><span class="p">,</span>
4483 -<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">agent</span><span class="o">=</span><span class="s2">&quot;iris-client&quot;</span><span class="p">,</span>
4484 -<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">ssl_verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
4485 -<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span>
4486 -<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">proxy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4487 -<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="p">)</span>
4488 -<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Session created.&quot;</span><span class="p">)</span>
4489 -<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;session&quot;</span><span class="p">:</span> <span class="n">session</span><span class="p">}</span>
4490 -<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
4491 -<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error creating session with DFIR-IRIS: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4492 -<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">return</span> <span class="p">{</span>
4493 -<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
4494 -<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Connection to DFIR-IRIS unsuccessful.&quot;</span><span class="p">,</span>
4495 -<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="p">}</span>
4478 +<span class="normal"><a href="#__codelineno-0-85">85</a></span>
4479 +<span class="normal"><a href="#__codelineno-0-86">86</a></span>
4480 +<span class="normal"><a href="#__codelineno-0-87">87</a></span>
4481 +<span class="normal"><a href="#__codelineno-0-88">88</a></span>
4482 +<span class="normal"><a href="#__codelineno-0-89">89</a></span>
4483 +<span class="normal"><a href="#__codelineno-0-90">90</a></span>
4484 +<span class="normal"><a href="#__codelineno-0-91">91</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="k">def</span> <span class="nf">create_session</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">ClientSession</span><span class="p">],</span> <span class="nb">str</span><span class="p">]]:</span>
4485 +<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4486 +<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> Creates a session with DFIR-IRIS.</span>
4487 +<a id="__codelineno-0-67" name="__codelineno-0-67"></a>
4488 +<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> This method creates a session with DFIR-IRIS and returns a dictionary with a success status and the session object.</span>
4489 +<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> If a session cannot be established, an error is logged and a dictionary with &quot;success&quot; set to False and an error message is returned.</span>
4490 +<a id="__codelineno-0-70" name="__codelineno-0-70"></a>
4491 +<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> Returns:</span>
4492 +<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> dict: A dictionary containing the success status and either the session object or an error message.</span>
4493 +<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> &quot;&quot;&quot;</span>
4494 +<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">try</span><span class="p">:</span>
4495 +<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Creating session with DFIR-IRIS.&quot;</span><span class="p">)</span>
4496 +<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">session</span> <span class="o">=</span> <span class="n">ClientSession</span><span class="p">(</span>
4497 +<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">host</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
4498 +<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">apikey</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_api_key</span><span class="p">,</span>
4499 +<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">agent</span><span class="o">=</span><span class="s2">&quot;iris-client&quot;</span><span class="p">,</span>
4500 +<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">ssl_verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
4501 +<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span>
4502 +<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">proxy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4503 +<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="p">)</span>
4504 +<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Session created.&quot;</span><span class="p">)</span>
4505 +<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;session&quot;</span><span class="p">:</span> <span class="n">session</span><span class="p">}</span>
4506 +<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
4507 +<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error creating session with DFIR-IRIS: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4508 +<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="k">return</span> <span class="p">{</span>
4509 +<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
4510 +<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Connection to DFIR-IRIS unsuccessful.&quot;</span><span class="p">,</span>
4511 +<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">}</span>
4512 </code></pre></div></td></tr></table></div>
4513 </details>
4514 </div>
@@ -4592,13 +4608,7 @@ If a session cannot be established, an error is logged and a dictionary with "su
4608
4609 <details class="quote">
4610 <summary>Source code in <code>app\services\DFIR_IRIS\universal.py</code></summary>
4595 - <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
4596 -<span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
4597 -<span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
4598 -<span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
4599 -<span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
4600 -<span class="normal"><a href="#__codelineno-0-92"> 92</a></span>
4601 -<span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
4611 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
4612 <span class="normal"><a href="#__codelineno-0-94"> 94</a></span>
4613 <span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
4614 <span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
@@ -4613,28 +4623,38 @@ If a session cannot be established, an error is logged and a dictionary with "su
4623 <span class="normal"><a href="#__codelineno-0-105">105</a></span>
4624 <span class="normal"><a href="#__codelineno-0-106">106</a></span>
4625 <span class="normal"><a href="#__codelineno-0-107">107</a></span>
4616 -<span class="normal"><a href="#__codelineno-0-108">108</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="k">def</span> <span class="nf">fetch_and_parse_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">ClientSession</span><span class="p">,</span> <span class="n">action</span><span class="p">:</span> <span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]]]:</span>
4617 -<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4618 -<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> Fetches and parses data from DFIR-IRIS using a specified action.</span>
4619 -<a id="__codelineno-0-90" name="__codelineno-0-90"></a>
4620 -<a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="sd"> Args:</span>
4621 -<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> session (ClientSession): The DFIR-IRIS session object.</span>
4622 -<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> action (Callable): The function to execute to fetch data from DFIR-IRIS. This function should accept *args.</span>
4623 -<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> args: The arguments to pass to the action function.</span>
4624 -<a id="__codelineno-0-95" name="__codelineno-0-95"></a>
4625 -<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> Returns:</span>
4626 -<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> dict: A dictionary containing the success status and either the fetched data or None if the operation was unsuccessful.</span>
4627 -<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> &quot;&quot;&quot;</span>
4628 -<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">try</span><span class="p">:</span>
4629 -<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Executing </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">... on args: </span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4630 -<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">action</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
4631 -<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">assert_api_resp</span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">soft_fail</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
4632 -<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">get_data_from_resp</span><span class="p">(</span><span class="n">status</span><span class="p">)</span>
4633 -<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Successfully executed </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4634 -<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">:</span> <span class="n">data</span><span class="p">}</span>
4635 -<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
4636 -<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to execute </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4637 -<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
4626 +<span class="normal"><a href="#__codelineno-0-108">108</a></span>
4627 +<span class="normal"><a href="#__codelineno-0-109">109</a></span>
4628 +<span class="normal"><a href="#__codelineno-0-110">110</a></span>
4629 +<span class="normal"><a href="#__codelineno-0-111">111</a></span>
4630 +<span class="normal"><a href="#__codelineno-0-112">112</a></span>
4631 +<span class="normal"><a href="#__codelineno-0-113">113</a></span>
4632 +<span class="normal"><a href="#__codelineno-0-114">114</a></span>
4633 +<span class="normal"><a href="#__codelineno-0-115">115</a></span>
4634 +<span class="normal"><a href="#__codelineno-0-116">116</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="k">def</span> <span class="nf">fetch_and_parse_data</span><span class="p">(</span>
4635 +<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">ClientSession</span><span class="p">,</span> <span class="n">action</span><span class="p">:</span> <span class="n">Callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span>
4636 +<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]]]:</span>
4637 +<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4638 +<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> Fetches and parses data from DFIR-IRIS using a specified action.</span>
4639 +<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
4640 +<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> Args:</span>
4641 +<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> session (ClientSession): The DFIR-IRIS session object.</span>
4642 +<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="sd"> action (Callable): The function to execute to fetch data from DFIR-IRIS. This function should accept *args.</span>
4643 +<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> args: The arguments to pass to the action function.</span>
4644 +<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
4645 +<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Returns:</span>
4646 +<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> dict: A dictionary containing the success status and either the fetched data or None if the operation was unsuccessful.</span>
4647 +<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> &quot;&quot;&quot;</span>
4648 +<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">try</span><span class="p">:</span>
4649 +<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Executing </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">... on args: </span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4650 +<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">action</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
4651 +<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">assert_api_resp</span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">soft_fail</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
4652 +<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">get_data_from_resp</span><span class="p">(</span><span class="n">status</span><span class="p">)</span>
4653 +<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Successfully executed </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4654 +<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">:</span> <span class="n">data</span><span class="p">}</span>
4655 +<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
4656 +<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to execute </span><span class="si">{</span><span class="n">action</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
4657 +<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
4658 </code></pre></div></td></tr></table></div>
4659 </details>
4660 </div>
backend/site/sitemap.xml.gz
Binary files a/backend/site/sitemap.xml.gz and b/backend/site/sitemap.xml.gz differ
backend/site/wazuhmanager/index.html
+415 -405
@@ -6623,8 +6623,7 @@
6623 <tr>
6624 <td class="linenos">
6625 <div class="linenodiv">
6626 - <pre><span></span><span class="normal"><a href="#__codelineno-0-12"> 12</a></span>
6627 -<span class="normal"><a href="#__codelineno-0-13"> 13</a></span>
6626 + <pre><span></span><span class="normal"><a href="#__codelineno-0-13"> 13</a></span>
6627 <span class="normal"><a href="#__codelineno-0-14"> 14</a></span>
6628 <span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
6629 <span class="normal"><a href="#__codelineno-0-16"> 16</a></span>
@@ -6715,104 +6714,111 @@
6714 <span class="normal"><a href="#__codelineno-0-101">101</a></span>
6715 <span class="normal"><a href="#__codelineno-0-102">102</a></span>
6716 <span class="normal"><a href="#__codelineno-0-103">103</a></span>
6718 -<span class="normal"><a href="#__codelineno-0-104">104</a></span></pre>
6717 +<span class="normal"><a href="#__codelineno-0-104">104</a></span>
6718 +<span class="normal"><a href="#__codelineno-0-105">105</a></span>
6719 +<span class="normal"><a href="#__codelineno-0-106">106</a></span>
6720 +<span class="normal"><a href="#__codelineno-0-107">107</a></span>
6721 +<span class="normal"><a href="#__codelineno-0-108">108</a></span></pre>
6722 </div>
6723 </td>
6724 <td class="code">
6725 <div>
6723 - <pre><span></span><code><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
6724 -<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6725 -<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> A service class to manage operations with the Wazuh-Manager API.</span>
6726 -<a id="__codelineno-0-15" name="__codelineno-0-15"></a>
6727 -<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Attributes:</span>
6728 -<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> connector_url (str): The URL of the Wazuh Manager.</span>
6729 -<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> connector_username (str): The username for the Wazuh Manager.</span>
6730 -<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> connector_password (str): The password for the Wazuh Manager.</span>
6731 -<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> &quot;&quot;&quot;</span>
6732 -<a id="__codelineno-0-21" name="__codelineno-0-21"></a>
6733 -<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
6734 -<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6735 -<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> Initialize an UniversalService instance.</span>
6736 -<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
6737 -<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> The Wazuh-Manager details are collected upon initialization.</span>
6738 -<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> &quot;&quot;&quot;</span>
6739 -<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="p">(</span>
6740 -<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
6741 -<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
6742 -<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
6743 -<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuhmanager_details</span><span class="p">(</span><span class="s2">&quot;Wazuh-Manager&quot;</span><span class="p">)</span>
6744 -<a id="__codelineno-0-33" name="__codelineno-0-33"></a>
6745 -<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">def</span> <span class="nf">collect_wazuhmanager_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
6746 -<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6747 -<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> Collect the details of the Wazuh Manager.</span>
6748 -<a id="__codelineno-0-37" name="__codelineno-0-37"></a>
6749 -<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> Args:</span>
6750 -<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> connector_name (str): The name of the connector, in this case &quot;Wazuh-Manager&quot;.</span>
6751 -<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
6752 -<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Returns:</span>
6753 -<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Tuple[Optional[str], Optional[str], Optional[str]]: The URL, username, and password of the Wazuh Manager.</span>
6754 -<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> &quot;&quot;&quot;</span>
6755 -<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
6756 -<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">if</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">():</span>
6757 -<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
6758 -<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">return</span> <span class="p">(</span>
6759 -<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
6760 -<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_username&quot;</span><span class="p">),</span>
6761 -<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_password&quot;</span><span class="p">),</span>
6762 -<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="p">)</span>
6763 -<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">else</span><span class="p">:</span>
6764 -<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="n">connector_name</span><span class="si">}</span><span class="s2"> failed.&quot;</span><span class="p">)</span>
6765 -<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
6766 -<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
6767 -<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">def</span> <span class="nf">get_auth_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
6768 -<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6769 -<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Get the authentication token from the Wazuh-Manager API.</span>
6726 + <pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
6727 +<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6728 +<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> A service class to manage operations with the Wazuh-Manager API.</span>
6729 +<a id="__codelineno-0-16" name="__codelineno-0-16"></a>
6730 +<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Attributes:</span>
6731 +<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> connector_url (str): The URL of the Wazuh Manager.</span>
6732 +<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> connector_username (str): The username for the Wazuh Manager.</span>
6733 +<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> connector_password (str): The password for the Wazuh Manager.</span>
6734 +<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> &quot;&quot;&quot;</span>
6735 +<a id="__codelineno-0-22" name="__codelineno-0-22"></a>
6736 +<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
6737 +<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6738 +<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Initialize an UniversalService instance.</span>
6739 +<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
6740 +<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> The Wazuh-Manager details are collected upon initialization.</span>
6741 +<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> &quot;&quot;&quot;</span>
6742 +<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="p">(</span>
6743 +<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
6744 +<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
6745 +<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
6746 +<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuhmanager_details</span><span class="p">(</span><span class="s2">&quot;Wazuh-Manager&quot;</span><span class="p">)</span>
6747 +<a id="__codelineno-0-34" name="__codelineno-0-34"></a>
6748 +<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">def</span> <span class="nf">collect_wazuhmanager_details</span><span class="p">(</span>
6749 +<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="p">,</span>
6750 +<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
6751 +<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
6752 +<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6753 +<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Collect the details of the Wazuh Manager.</span>
6754 +<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
6755 +<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Args:</span>
6756 +<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> connector_name (str): The name of the connector, in this case &quot;Wazuh-Manager&quot;.</span>
6757 +<a id="__codelineno-0-44" name="__codelineno-0-44"></a>
6758 +<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Returns:</span>
6759 +<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Tuple[Optional[str], Optional[str], Optional[str]]: The URL, username, and password of the Wazuh Manager.</span>
6760 +<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> &quot;&quot;&quot;</span>
6761 +<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
6762 +<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">():</span>
6763 +<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
6764 +<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">return</span> <span class="p">(</span>
6765 +<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
6766 +<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_username&quot;</span><span class="p">),</span>
6767 +<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_password&quot;</span><span class="p">),</span>
6768 +<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="p">)</span>
6769 +<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">else</span><span class="p">:</span>
6770 +<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="n">connector_name</span><span class="si">}</span><span class="s2"> failed.&quot;</span><span class="p">)</span>
6771 +<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
6772 <a id="__codelineno-0-59" name="__codelineno-0-59"></a>
6771 -<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Returns:</span>
6772 -<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Optional[str]: The authentication token. If the request fails, returns None.</span>
6773 -<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> &quot;&quot;&quot;</span>
6774 -<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">try</span><span class="p">:</span>
6775 -<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
6776 -<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/security/user/authenticate&quot;</span><span class="p">,</span>
6777 -<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
6778 -<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
6779 -<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">)</span>
6780 -<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
6781 -<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="k">except</span> <span class="n">requests</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">RequestException</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
6782 -<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get auth token: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
6783 -<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="k">return</span> <span class="kc">None</span>
6784 -<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">auth_token</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">&quot;data&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
6785 -<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Authentication token: </span><span class="si">{</span><span class="n">auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
6786 -<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="n">auth_token</span>
6787 -<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
6788 -<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">def</span> <span class="nf">restart_service</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
6789 -<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6790 -<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Restart the Wazuh Manager service.</span>
6773 +<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">def</span> <span class="nf">get_auth_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
6774 +<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6775 +<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> Get the authentication token from the Wazuh-Manager API.</span>
6776 +<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
6777 +<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Returns:</span>
6778 +<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Optional[str]: The authentication token. If the request fails, returns None.</span>
6779 +<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> &quot;&quot;&quot;</span>
6780 +<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">try</span><span class="p">:</span>
6781 +<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
6782 +<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/security/user/authenticate&quot;</span><span class="p">,</span>
6783 +<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
6784 +<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
6785 +<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">)</span>
6786 +<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
6787 +<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">except</span> <span class="n">requests</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">RequestException</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
6788 +<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get auth token: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
6789 +<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">return</span> <span class="kc">None</span>
6790 +<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">auth_token</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">&quot;data&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
6791 +<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Authentication token: </span><span class="si">{</span><span class="n">auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
6792 +<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">return</span> <span class="n">auth_token</span>
6793 <a id="__codelineno-0-80" name="__codelineno-0-80"></a>
6792 -<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Returns:</span>
6793 -<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> Dict[str, Union[str, bool]]: A dictionary containing the status of the operation.</span>
6794 -<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> &quot;&quot;&quot;</span>
6795 -<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
6796 -<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">try</span><span class="p">:</span>
6797 -<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">put</span><span class="p">(</span>
6798 -<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/manager/restart&quot;</span><span class="p">,</span>
6799 -<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
6800 -<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
6801 -<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="p">)</span>
6802 -<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
6803 -<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">)</span>
6804 -<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
6805 -<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">else</span><span class="p">:</span>
6806 -<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
6807 -<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
6808 -<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="p">)</span>
6809 -<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">return</span> <span class="p">{</span>
6810 -<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span>
6811 -<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
6812 -<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="p">}</span>
6813 -<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
6814 -<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
6815 -<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
6794 +<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">def</span> <span class="nf">restart_service</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
6795 +<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6796 +<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> Restart the Wazuh Manager service.</span>
6797 +<a id="__codelineno-0-84" name="__codelineno-0-84"></a>
6798 +<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> Returns:</span>
6799 +<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Dict[str, Union[str, bool]]: A dictionary containing the status of the operation.</span>
6800 +<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> &quot;&quot;&quot;</span>
6801 +<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
6802 +<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">try</span><span class="p">:</span>
6803 +<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">put</span><span class="p">(</span>
6804 +<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/manager/restart&quot;</span><span class="p">,</span>
6805 +<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
6806 +<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
6807 +<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="p">)</span>
6808 +<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
6809 +<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">)</span>
6810 +<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
6811 +<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">else</span><span class="p">:</span>
6812 +<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
6813 +<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
6814 +<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="p">)</span>
6815 +<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">return</span> <span class="p">{</span>
6816 +<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span>
6817 +<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
6818 +<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="p">}</span>
6819 +<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
6820 +<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
6821 +<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
6822 </code></pre>
6823 </div>
6824 </td>
@@ -6850,8 +6856,7 @@
6856 <tr>
6857 <td class="linenos">
6858 <div class="linenodiv">
6853 - <pre><span></span><span class="normal"><a href="#__codelineno-0-22">22</a></span>
6854 -<span class="normal"><a href="#__codelineno-0-23">23</a></span>
6859 + <pre><span></span><span class="normal"><a href="#__codelineno-0-23">23</a></span>
6860 <span class="normal"><a href="#__codelineno-0-24">24</a></span>
6861 <span class="normal"><a href="#__codelineno-0-25">25</a></span>
6862 <span class="normal"><a href="#__codelineno-0-26">26</a></span>
@@ -6860,22 +6865,23 @@
6865 <span class="normal"><a href="#__codelineno-0-29">29</a></span>
6866 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
6867 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
6863 -<span class="normal"><a href="#__codelineno-0-32">32</a></span></pre>
6868 +<span class="normal"><a href="#__codelineno-0-32">32</a></span>
6869 +<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre>
6870 </div>
6871 </td>
6872 <td class="code">
6873 <div>
6868 - <pre><span></span><code><a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
6869 -<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6870 -<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> Initialize an UniversalService instance.</span>
6871 -<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
6872 -<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> The Wazuh-Manager details are collected upon initialization.</span>
6873 -<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> &quot;&quot;&quot;</span>
6874 -<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="p">(</span>
6875 -<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
6876 -<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
6877 -<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
6878 -<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuhmanager_details</span><span class="p">(</span><span class="s2">&quot;Wazuh-Manager&quot;</span><span class="p">)</span>
6874 + <pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
6875 +<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6876 +<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Initialize an UniversalService instance.</span>
6877 +<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
6878 +<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> The Wazuh-Manager details are collected upon initialization.</span>
6879 +<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> &quot;&quot;&quot;</span>
6880 +<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="p">(</span>
6881 +<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
6882 +<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
6883 +<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
6884 +<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuhmanager_details</span><span class="p">(</span><span class="s2">&quot;Wazuh-Manager&quot;</span><span class="p">)</span>
6885 </code></pre>
6886 </div>
6887 </td>
@@ -6980,8 +6986,7 @@
6986 <tr>
6987 <td class="linenos">
6988 <div class="linenodiv">
6983 - <pre><span></span><span class="normal"><a href="#__codelineno-0-34">34</a></span>
6984 -<span class="normal"><a href="#__codelineno-0-35">35</a></span>
6989 + <pre><span></span><span class="normal"><a href="#__codelineno-0-35">35</a></span>
6990 <span class="normal"><a href="#__codelineno-0-36">36</a></span>
6991 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
6992 <span class="normal"><a href="#__codelineno-0-38">38</a></span>
@@ -7000,32 +7005,39 @@
7005 <span class="normal"><a href="#__codelineno-0-51">51</a></span>
7006 <span class="normal"><a href="#__codelineno-0-52">52</a></span>
7007 <span class="normal"><a href="#__codelineno-0-53">53</a></span>
7003 -<span class="normal"><a href="#__codelineno-0-54">54</a></span></pre>
7008 +<span class="normal"><a href="#__codelineno-0-54">54</a></span>
7009 +<span class="normal"><a href="#__codelineno-0-55">55</a></span>
7010 +<span class="normal"><a href="#__codelineno-0-56">56</a></span>
7011 +<span class="normal"><a href="#__codelineno-0-57">57</a></span>
7012 +<span class="normal"><a href="#__codelineno-0-58">58</a></span></pre>
7013 </div>
7014 </td>
7015 <td class="code">
7016 <div>
7008 - <pre><span></span><code><a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="k">def</span> <span class="nf">collect_wazuhmanager_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
7009 -<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7010 -<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> Collect the details of the Wazuh Manager.</span>
7011 -<a id="__codelineno-0-37" name="__codelineno-0-37"></a>
7012 -<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> Args:</span>
7013 -<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> connector_name (str): The name of the connector, in this case &quot;Wazuh-Manager&quot;.</span>
7014 -<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
7015 -<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Returns:</span>
7016 -<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Tuple[Optional[str], Optional[str], Optional[str]]: The URL, username, and password of the Wazuh Manager.</span>
7017 -<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> &quot;&quot;&quot;</span>
7018 -<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
7019 -<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">if</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">():</span>
7020 -<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
7021 -<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">return</span> <span class="p">(</span>
7022 -<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
7023 -<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_username&quot;</span><span class="p">),</span>
7024 -<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_password&quot;</span><span class="p">),</span>
7025 -<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="p">)</span>
7026 -<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">else</span><span class="p">:</span>
7027 -<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="n">connector_name</span><span class="si">}</span><span class="s2"> failed.&quot;</span><span class="p">)</span>
7028 -<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
7017 + <pre><span></span><code><a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="k">def</span> <span class="nf">collect_wazuhmanager_details</span><span class="p">(</span>
7018 +<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="p">,</span>
7019 +<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
7020 +<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
7021 +<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7022 +<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Collect the details of the Wazuh Manager.</span>
7023 +<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
7024 +<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Args:</span>
7025 +<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> connector_name (str): The name of the connector, in this case &quot;Wazuh-Manager&quot;.</span>
7026 +<a id="__codelineno-0-44" name="__codelineno-0-44"></a>
7027 +<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Returns:</span>
7028 +<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Tuple[Optional[str], Optional[str], Optional[str]]: The URL, username, and password of the Wazuh Manager.</span>
7029 +<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> &quot;&quot;&quot;</span>
7030 +<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
7031 +<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">():</span>
7032 +<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
7033 +<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">return</span> <span class="p">(</span>
7034 +<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_url&quot;</span><span class="p">),</span>
7035 +<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_username&quot;</span><span class="p">),</span>
7036 +<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;connector_password&quot;</span><span class="p">),</span>
7037 +<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="p">)</span>
7038 +<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">else</span><span class="p">:</span>
7039 +<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Connection to </span><span class="si">{</span><span class="n">connector_name</span><span class="si">}</span><span class="s2"> failed.&quot;</span><span class="p">)</span>
7040 +<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
7041 </code></pre>
7042 </div>
7043 </td>
@@ -7092,11 +7104,7 @@
7104 <tr>
7105 <td class="linenos">
7106 <div class="linenodiv">
7095 - <pre><span></span><span class="normal"><a href="#__codelineno-0-56">56</a></span>
7096 -<span class="normal"><a href="#__codelineno-0-57">57</a></span>
7097 -<span class="normal"><a href="#__codelineno-0-58">58</a></span>
7098 -<span class="normal"><a href="#__codelineno-0-59">59</a></span>
7099 -<span class="normal"><a href="#__codelineno-0-60">60</a></span>
7107 + <pre><span></span><span class="normal"><a href="#__codelineno-0-60">60</a></span>
7108 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
7109 <span class="normal"><a href="#__codelineno-0-62">62</a></span>
7110 <span class="normal"><a href="#__codelineno-0-63">63</a></span>
@@ -7111,31 +7119,35 @@
7119 <span class="normal"><a href="#__codelineno-0-72">72</a></span>
7120 <span class="normal"><a href="#__codelineno-0-73">73</a></span>
7121 <span class="normal"><a href="#__codelineno-0-74">74</a></span>
7114 -<span class="normal"><a href="#__codelineno-0-75">75</a></span></pre>
7122 +<span class="normal"><a href="#__codelineno-0-75">75</a></span>
7123 +<span class="normal"><a href="#__codelineno-0-76">76</a></span>
7124 +<span class="normal"><a href="#__codelineno-0-77">77</a></span>
7125 +<span class="normal"><a href="#__codelineno-0-78">78</a></span>
7126 +<span class="normal"><a href="#__codelineno-0-79">79</a></span></pre>
7127 </div>
7128 </td>
7129 <td class="code">
7130 <div>
7119 - <pre><span></span><code><a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="k">def</span> <span class="nf">get_auth_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
7120 -<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7121 -<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Get the authentication token from the Wazuh-Manager API.</span>
7122 -<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
7123 -<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Returns:</span>
7124 -<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Optional[str]: The authentication token. If the request fails, returns None.</span>
7125 -<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> &quot;&quot;&quot;</span>
7126 -<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">try</span><span class="p">:</span>
7127 -<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
7128 -<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/security/user/authenticate&quot;</span><span class="p">,</span>
7129 -<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
7130 -<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
7131 -<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">)</span>
7132 -<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
7133 -<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="k">except</span> <span class="n">requests</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">RequestException</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
7134 -<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get auth token: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
7135 -<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="k">return</span> <span class="kc">None</span>
7136 -<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">auth_token</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">&quot;data&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
7137 -<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Authentication token: </span><span class="si">{</span><span class="n">auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
7138 -<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="n">auth_token</span>
7131 + <pre><span></span><code><a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="k">def</span> <span class="nf">get_auth_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
7132 +<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7133 +<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> Get the authentication token from the Wazuh-Manager API.</span>
7134 +<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
7135 +<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Returns:</span>
7136 +<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Optional[str]: The authentication token. If the request fails, returns None.</span>
7137 +<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> &quot;&quot;&quot;</span>
7138 +<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">try</span><span class="p">:</span>
7139 +<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
7140 +<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/security/user/authenticate&quot;</span><span class="p">,</span>
7141 +<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
7142 +<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
7143 +<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">)</span>
7144 +<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
7145 +<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">except</span> <span class="n">requests</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">RequestException</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
7146 +<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to get auth token: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
7147 +<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">return</span> <span class="kc">None</span>
7148 +<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">auth_token</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">&quot;data&quot;</span><span class="p">][</span><span class="s2">&quot;token&quot;</span><span class="p">]</span>
7149 +<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Authentication token: </span><span class="si">{</span><span class="n">auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
7150 +<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">return</span> <span class="n">auth_token</span>
7151 </code></pre>
7152 </div>
7153 </td>
@@ -7201,11 +7213,7 @@
7213 <tr>
7214 <td class="linenos">
7215 <div class="linenodiv">
7204 - <pre><span></span><span class="normal"><a href="#__codelineno-0-77"> 77</a></span>
7205 -<span class="normal"><a href="#__codelineno-0-78"> 78</a></span>
7206 -<span class="normal"><a href="#__codelineno-0-79"> 79</a></span>
7207 -<span class="normal"><a href="#__codelineno-0-80"> 80</a></span>
7208 -<span class="normal"><a href="#__codelineno-0-81"> 81</a></span>
7216 + <pre><span></span><span class="normal"><a href="#__codelineno-0-81"> 81</a></span>
7217 <span class="normal"><a href="#__codelineno-0-82"> 82</a></span>
7218 <span class="normal"><a href="#__codelineno-0-83"> 83</a></span>
7219 <span class="normal"><a href="#__codelineno-0-84"> 84</a></span>
@@ -7228,39 +7236,43 @@
7236 <span class="normal"><a href="#__codelineno-0-101">101</a></span>
7237 <span class="normal"><a href="#__codelineno-0-102">102</a></span>
7238 <span class="normal"><a href="#__codelineno-0-103">103</a></span>
7231 -<span class="normal"><a href="#__codelineno-0-104">104</a></span></pre>
7239 +<span class="normal"><a href="#__codelineno-0-104">104</a></span>
7240 +<span class="normal"><a href="#__codelineno-0-105">105</a></span>
7241 +<span class="normal"><a href="#__codelineno-0-106">106</a></span>
7242 +<span class="normal"><a href="#__codelineno-0-107">107</a></span>
7243 +<span class="normal"><a href="#__codelineno-0-108">108</a></span></pre>
7244 </div>
7245 </td>
7246 <td class="code">
7247 <div>
7236 - <pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="k">def</span> <span class="nf">restart_service</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
7237 -<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7238 -<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Restart the Wazuh Manager service.</span>
7239 -<a id="__codelineno-0-80" name="__codelineno-0-80"></a>
7240 -<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Returns:</span>
7241 -<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> Dict[str, Union[str, bool]]: A dictionary containing the status of the operation.</span>
7242 -<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> &quot;&quot;&quot;</span>
7243 -<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
7244 -<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">try</span><span class="p">:</span>
7245 -<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">put</span><span class="p">(</span>
7246 -<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/manager/restart&quot;</span><span class="p">,</span>
7247 -<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
7248 -<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
7249 -<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="p">)</span>
7250 -<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
7251 -<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">)</span>
7252 -<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
7253 -<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">else</span><span class="p">:</span>
7254 -<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
7255 -<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7256 -<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="p">)</span>
7257 -<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">return</span> <span class="p">{</span>
7258 -<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span>
7259 -<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
7260 -<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="p">}</span>
7261 -<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
7262 -<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
7263 -<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
7248 + <pre><span></span><code><a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="k">def</span> <span class="nf">restart_service</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
7249 +<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7250 +<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> Restart the Wazuh Manager service.</span>
7251 +<a id="__codelineno-0-84" name="__codelineno-0-84"></a>
7252 +<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> Returns:</span>
7253 +<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Dict[str, Union[str, bool]]: A dictionary containing the status of the operation.</span>
7254 +<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> &quot;&quot;&quot;</span>
7255 +<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
7256 +<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">try</span><span class="p">:</span>
7257 +<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">put</span><span class="p">(</span>
7258 +<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/manager/restart&quot;</span><span class="p">,</span>
7259 +<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
7260 +<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
7261 +<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="p">)</span>
7262 +<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
7263 +<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">)</span>
7264 +<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restarted&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
7265 +<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">else</span><span class="p">:</span>
7266 +<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
7267 +<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7268 +<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="p">)</span>
7269 +<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">return</span> <span class="p">{</span>
7270 +<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span>
7271 +<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
7272 +<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="p">}</span>
7273 +<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
7274 +<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Wazuh Manager service restart failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
7275 +<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Wazuh Manager service restart failed&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
7276 </code></pre>
7277 </div>
7278 </td>
@@ -7368,7 +7380,8 @@
7380 <tr>
7381 <td class="linenos">
7382 <div class="linenodiv">
7371 - <pre><span></span><span class="normal"><a href="#__codelineno-0-67"> 67</a></span>
7383 + <pre><span></span><span class="normal"><a href="#__codelineno-0-66"> 66</a></span>
7384 +<span class="normal"><a href="#__codelineno-0-67"> 67</a></span>
7385 <span class="normal"><a href="#__codelineno-0-68"> 68</a></span>
7386 <span class="normal"><a href="#__codelineno-0-69"> 69</a></span>
7387 <span class="normal"><a href="#__codelineno-0-70"> 70</a></span>
@@ -7446,92 +7459,91 @@
7459 <span class="normal"><a href="#__codelineno-0-142">142</a></span>
7460 <span class="normal"><a href="#__codelineno-0-143">143</a></span>
7461 <span class="normal"><a href="#__codelineno-0-144">144</a></span>
7449 -<span class="normal"><a href="#__codelineno-0-145">145</a></span>
7450 -<span class="normal"><a href="#__codelineno-0-146">146</a></span></pre>
7462 +<span class="normal"><a href="#__codelineno-0-145">145</a></span></pre>
7463 </div>
7464 </td>
7465 <td class="code">
7466 <div>
7455 - <pre><span></span><code><a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="k">class</span> <span class="nc">VulnerabilityService</span><span class="p">:</span>
7456 -<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7457 -<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> Class to manage operations with the Wazuh Manager API related to vulnerabilities.</span>
7458 -<a id="__codelineno-0-70" name="__codelineno-0-70"></a>
7459 -<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> Attributes:</span>
7460 -<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> universal_service (UniversalService): The UniversalService instance to use.</span>
7461 -<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> auth_token (str): The Wazuh API authentication token.</span>
7462 -<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> wazuh_http_requests (WazuhHttpRequests): A WazuhHttpRequests instance to handle HTTP requests.</span>
7463 -<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> &quot;&quot;&quot;</span>
7464 -<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
7465 -<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">universal_service</span><span class="p">:</span> <span class="n">UniversalService</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
7466 -<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7467 -<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Initialize a VulnerabilityService instance.</span>
7468 -<a id="__codelineno-0-80" name="__codelineno-0-80"></a>
7469 -<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Args:</span>
7470 -<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> universal_service (UniversalService): The UniversalService instance to use.</span>
7471 -<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> &quot;&quot;&quot;</span>
7472 -<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span> <span class="o">=</span> <span class="n">universal_service</span>
7473 -<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span> <span class="o">=</span> <span class="n">universal_service</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span>
7474 -<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span> <span class="o">=</span> <span class="n">WazuhHttpRequests</span><span class="p">(</span>
7475 -<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
7476 -<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span><span class="p">,</span>
7477 -<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="p">)</span>
7478 -<a id="__codelineno-0-90" name="__codelineno-0-90"></a>
7479 -<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">def</span> <span class="nf">agent_vulnerabilities</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7480 -<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7481 -<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> Retrieve and process vulnerabilities for a specified agent.</span>
7482 -<a id="__codelineno-0-94" name="__codelineno-0-94"></a>
7483 -<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Args:</span>
7484 -<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> agent_id (str): The id of the agent to get vulnerabilities for.</span>
7485 -<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
7486 -<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> Returns:</span>
7487 -<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> List[Dict[str, Any]]: A list of processed vulnerabilities.</span>
7488 -<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> &quot;&quot;&quot;</span>
7489 -<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span><span class="o">.</span><span class="n">get_request</span><span class="p">(</span>
7490 -<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="sa">f</span><span class="s2">&quot;vulnerability/</span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7491 -<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;wait_for_complete&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">},</span>
7492 -<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="p">)</span>
7493 -<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
7494 -<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
7495 -<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">processed_vulnerabilities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_process_agent_vulnerabilities</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
7496 -<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="n">processed_vulnerabilities</span>
7497 -<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="k">return</span> <span class="p">[]</span>
7498 -<a id="__codelineno-0-110" name="__codelineno-0-110"></a>
7499 -<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="k">def</span> <span class="nf">_process_agent_vulnerabilities</span><span class="p">(</span>
7500 -<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="bp">self</span><span class="p">,</span>
7501 -<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">response</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
7502 -<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7503 -<a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7504 -<a id="__codelineno-0-116" name="__codelineno-0-116"></a><span class="sd"> Process the raw vulnerabilities data for an agent.</span>
7505 -<a id="__codelineno-0-117" name="__codelineno-0-117"></a>
7506 -<a id="__codelineno-0-118" name="__codelineno-0-118"></a><span class="sd"> Args:</span>
7507 -<a id="__codelineno-0-119" name="__codelineno-0-119"></a><span class="sd"> response (Dict[str, Any]): The raw vulnerabilities data from Wazuh Manager.</span>
7508 -<a id="__codelineno-0-120" name="__codelineno-0-120"></a>
7509 -<a id="__codelineno-0-121" name="__codelineno-0-121"></a><span class="sd"> Returns:</span>
7510 -<a id="__codelineno-0-122" name="__codelineno-0-122"></a><span class="sd"> List[Dict[str, Any]]: A list of processed vulnerabilities.</span>
7511 -<a id="__codelineno-0-123" name="__codelineno-0-123"></a><span class="sd"> &quot;&quot;&quot;</span>
7512 -<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">vulnerabilities</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;data&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;affected_items&quot;</span><span class="p">,</span> <span class="p">[])</span>
7513 -<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="c1"># Use list comprehension to create the processed_vulnerabilities list</span>
7514 -<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">processed_vulnerabilities</span> <span class="o">=</span> <span class="p">[</span>
7515 -<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="p">{</span>
7516 -<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="s2">&quot;severity&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;severity&quot;</span><span class="p">),</span>
7517 -<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="s2">&quot;updated&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;updated&quot;</span><span class="p">),</span>
7518 -<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="s2">&quot;version&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;version&quot;</span><span class="p">),</span>
7519 -<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;type&quot;</span><span class="p">),</span>
7520 -<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">),</span>
7521 -<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="s2">&quot;external_references&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;external_references&quot;</span><span class="p">),</span>
7522 -<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">&quot;condition&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;condition&quot;</span><span class="p">),</span>
7523 -<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">&quot;detection_time&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;detection_time&quot;</span><span class="p">),</span>
7524 -<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="s2">&quot;cvss3_score&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cvss3_score&quot;</span><span class="p">),</span>
7525 -<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="s2">&quot;published&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;published&quot;</span><span class="p">),</span>
7526 -<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="s2">&quot;architecture&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;architecture&quot;</span><span class="p">),</span>
7527 -<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="s2">&quot;cve&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cve&quot;</span><span class="p">),</span>
7528 -<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="s2">&quot;status&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;status&quot;</span><span class="p">),</span>
7529 -<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="s2">&quot;title&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;title&quot;</span><span class="p">),</span>
7530 -<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="s2">&quot;cvss2_score&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cvss2_score&quot;</span><span class="p">),</span>
7531 -<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="p">}</span>
7532 -<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="k">for</span> <span class="n">vuln</span> <span class="ow">in</span> <span class="n">vulnerabilities</span>
7533 -<a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="p">]</span>
7534 -<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="k">return</span> <span class="n">processed_vulnerabilities</span>
7467 + <pre><span></span><code><a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="k">class</span> <span class="nc">VulnerabilityService</span><span class="p">:</span>
7468 +<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7469 +<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> Class to manage operations with the Wazuh Manager API related to vulnerabilities.</span>
7470 +<a id="__codelineno-0-69" name="__codelineno-0-69"></a>
7471 +<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> Attributes:</span>
7472 +<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> universal_service (UniversalService): The UniversalService instance to use.</span>
7473 +<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> auth_token (str): The Wazuh API authentication token.</span>
7474 +<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> wazuh_http_requests (WazuhHttpRequests): A WazuhHttpRequests instance to handle HTTP requests.</span>
7475 +<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> &quot;&quot;&quot;</span>
7476 +<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
7477 +<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">universal_service</span><span class="p">:</span> <span class="n">UniversalService</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
7478 +<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7479 +<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> Initialize a VulnerabilityService instance.</span>
7480 +<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
7481 +<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Args:</span>
7482 +<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> universal_service (UniversalService): The UniversalService instance to use.</span>
7483 +<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> &quot;&quot;&quot;</span>
7484 +<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span> <span class="o">=</span> <span class="n">universal_service</span>
7485 +<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span> <span class="o">=</span> <span class="n">universal_service</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span>
7486 +<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span> <span class="o">=</span> <span class="n">WazuhHttpRequests</span><span class="p">(</span>
7487 +<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
7488 +<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span><span class="p">,</span>
7489 +<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="p">)</span>
7490 +<a id="__codelineno-0-89" name="__codelineno-0-89"></a>
7491 +<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">def</span> <span class="nf">agent_vulnerabilities</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7492 +<a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7493 +<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> Retrieve and process vulnerabilities for a specified agent.</span>
7494 +<a id="__codelineno-0-93" name="__codelineno-0-93"></a>
7495 +<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> Args:</span>
7496 +<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> agent_id (str): The id of the agent to get vulnerabilities for.</span>
7497 +<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
7498 +<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> Returns:</span>
7499 +<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> List[Dict[str, Any]]: A list of processed vulnerabilities.</span>
7500 +<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> &quot;&quot;&quot;</span>
7501 +<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span><span class="o">.</span><span class="n">get_request</span><span class="p">(</span>
7502 +<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="sa">f</span><span class="s2">&quot;vulnerability/</span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7503 +<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;wait_for_complete&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">},</span>
7504 +<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="p">)</span>
7505 +<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
7506 +<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
7507 +<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="n">processed_vulnerabilities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_process_agent_vulnerabilities</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
7508 +<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">return</span> <span class="n">processed_vulnerabilities</span>
7509 +<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="p">[]</span>
7510 +<a id="__codelineno-0-109" name="__codelineno-0-109"></a>
7511 +<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="k">def</span> <span class="nf">_process_agent_vulnerabilities</span><span class="p">(</span>
7512 +<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="bp">self</span><span class="p">,</span>
7513 +<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">response</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
7514 +<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7515 +<a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7516 +<a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="sd"> Process the raw vulnerabilities data for an agent.</span>
7517 +<a id="__codelineno-0-116" name="__codelineno-0-116"></a>
7518 +<a id="__codelineno-0-117" name="__codelineno-0-117"></a><span class="sd"> Args:</span>
7519 +<a id="__codelineno-0-118" name="__codelineno-0-118"></a><span class="sd"> response (Dict[str, Any]): The raw vulnerabilities data from Wazuh Manager.</span>
7520 +<a id="__codelineno-0-119" name="__codelineno-0-119"></a>
7521 +<a id="__codelineno-0-120" name="__codelineno-0-120"></a><span class="sd"> Returns:</span>
7522 +<a id="__codelineno-0-121" name="__codelineno-0-121"></a><span class="sd"> List[Dict[str, Any]]: A list of processed vulnerabilities.</span>
7523 +<a id="__codelineno-0-122" name="__codelineno-0-122"></a><span class="sd"> &quot;&quot;&quot;</span>
7524 +<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">vulnerabilities</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;data&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;affected_items&quot;</span><span class="p">,</span> <span class="p">[])</span>
7525 +<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="c1"># Use list comprehension to create the processed_vulnerabilities list</span>
7526 +<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">processed_vulnerabilities</span> <span class="o">=</span> <span class="p">[</span>
7527 +<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="p">{</span>
7528 +<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="s2">&quot;severity&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;severity&quot;</span><span class="p">),</span>
7529 +<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="s2">&quot;updated&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;updated&quot;</span><span class="p">),</span>
7530 +<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="s2">&quot;version&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;version&quot;</span><span class="p">),</span>
7531 +<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;type&quot;</span><span class="p">),</span>
7532 +<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">),</span>
7533 +<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="s2">&quot;external_references&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;external_references&quot;</span><span class="p">),</span>
7534 +<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="s2">&quot;condition&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;condition&quot;</span><span class="p">),</span>
7535 +<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">&quot;detection_time&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;detection_time&quot;</span><span class="p">),</span>
7536 +<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">&quot;cvss3_score&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cvss3_score&quot;</span><span class="p">),</span>
7537 +<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="s2">&quot;published&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;published&quot;</span><span class="p">),</span>
7538 +<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="s2">&quot;architecture&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;architecture&quot;</span><span class="p">),</span>
7539 +<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="s2">&quot;cve&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cve&quot;</span><span class="p">),</span>
7540 +<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="s2">&quot;status&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;status&quot;</span><span class="p">),</span>
7541 +<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="s2">&quot;title&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;title&quot;</span><span class="p">),</span>
7542 +<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="s2">&quot;cvss2_score&quot;</span><span class="p">:</span> <span class="n">vuln</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cvss2_score&quot;</span><span class="p">),</span>
7543 +<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="p">}</span>
7544 +<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="k">for</span> <span class="n">vuln</span> <span class="ow">in</span> <span class="n">vulnerabilities</span>
7545 +<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="p">]</span>
7546 +<a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="k">return</span> <span class="n">processed_vulnerabilities</span>
7547 </code></pre>
7548 </div>
7549 </td>
@@ -7606,7 +7618,8 @@
7618 <tr>
7619 <td class="linenos">
7620 <div class="linenodiv">
7609 - <pre><span></span><span class="normal"><a href="#__codelineno-0-77">77</a></span>
7621 + <pre><span></span><span class="normal"><a href="#__codelineno-0-76">76</a></span>
7622 +<span class="normal"><a href="#__codelineno-0-77">77</a></span>
7623 <span class="normal"><a href="#__codelineno-0-78">78</a></span>
7624 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
7625 <span class="normal"><a href="#__codelineno-0-80">80</a></span>
@@ -7617,25 +7630,24 @@
7630 <span class="normal"><a href="#__codelineno-0-85">85</a></span>
7631 <span class="normal"><a href="#__codelineno-0-86">86</a></span>
7632 <span class="normal"><a href="#__codelineno-0-87">87</a></span>
7620 -<span class="normal"><a href="#__codelineno-0-88">88</a></span>
7621 -<span class="normal"><a href="#__codelineno-0-89">89</a></span></pre>
7633 +<span class="normal"><a href="#__codelineno-0-88">88</a></span></pre>
7634 </div>
7635 </td>
7636 <td class="code">
7637 <div>
7626 - <pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">universal_service</span><span class="p">:</span> <span class="n">UniversalService</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
7627 -<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7628 -<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Initialize a VulnerabilityService instance.</span>
7629 -<a id="__codelineno-0-80" name="__codelineno-0-80"></a>
7630 -<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Args:</span>
7631 -<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> universal_service (UniversalService): The UniversalService instance to use.</span>
7632 -<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> &quot;&quot;&quot;</span>
7633 -<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span> <span class="o">=</span> <span class="n">universal_service</span>
7634 -<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span> <span class="o">=</span> <span class="n">universal_service</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span>
7635 -<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span> <span class="o">=</span> <span class="n">WazuhHttpRequests</span><span class="p">(</span>
7636 -<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
7637 -<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span><span class="p">,</span>
7638 -<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="p">)</span>
7638 + <pre><span></span><code><a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">universal_service</span><span class="p">:</span> <span class="n">UniversalService</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
7639 +<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7640 +<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> Initialize a VulnerabilityService instance.</span>
7641 +<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
7642 +<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Args:</span>
7643 +<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> universal_service (UniversalService): The UniversalService instance to use.</span>
7644 +<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> &quot;&quot;&quot;</span>
7645 +<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span> <span class="o">=</span> <span class="n">universal_service</span>
7646 +<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span> <span class="o">=</span> <span class="n">universal_service</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span>
7647 +<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span> <span class="o">=</span> <span class="n">WazuhHttpRequests</span><span class="p">(</span>
7648 +<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
7649 +<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="o">.</span><span class="n">auth_token</span><span class="p">,</span>
7650 +<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="p">)</span>
7651 </code></pre>
7652 </div>
7653 </td>
@@ -7738,7 +7750,8 @@
7750 <tr>
7751 <td class="linenos">
7752 <div class="linenodiv">
7741 - <pre><span></span><span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
7753 + <pre><span></span><span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
7754 +<span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
7755 <span class="normal"><a href="#__codelineno-0-92"> 92</a></span>
7756 <span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
7757 <span class="normal"><a href="#__codelineno-0-94"> 94</a></span>
@@ -7755,31 +7768,30 @@
7768 <span class="normal"><a href="#__codelineno-0-105">105</a></span>
7769 <span class="normal"><a href="#__codelineno-0-106">106</a></span>
7770 <span class="normal"><a href="#__codelineno-0-107">107</a></span>
7758 -<span class="normal"><a href="#__codelineno-0-108">108</a></span>
7759 -<span class="normal"><a href="#__codelineno-0-109">109</a></span></pre>
7771 +<span class="normal"><a href="#__codelineno-0-108">108</a></span></pre>
7772 </div>
7773 </td>
7774 <td class="code">
7775 <div>
7764 - <pre><span></span><code><a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="k">def</span> <span class="nf">agent_vulnerabilities</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7765 -<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7766 -<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> Retrieve and process vulnerabilities for a specified agent.</span>
7767 -<a id="__codelineno-0-94" name="__codelineno-0-94"></a>
7768 -<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Args:</span>
7769 -<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> agent_id (str): The id of the agent to get vulnerabilities for.</span>
7770 -<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
7771 -<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> Returns:</span>
7772 -<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> List[Dict[str, Any]]: A list of processed vulnerabilities.</span>
7773 -<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> &quot;&quot;&quot;</span>
7774 -<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span><span class="o">.</span><span class="n">get_request</span><span class="p">(</span>
7775 -<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="sa">f</span><span class="s2">&quot;vulnerability/</span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7776 -<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;wait_for_complete&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">},</span>
7777 -<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="p">)</span>
7778 -<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
7779 -<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
7780 -<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">processed_vulnerabilities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_process_agent_vulnerabilities</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
7781 -<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="n">processed_vulnerabilities</span>
7782 -<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="k">return</span> <span class="p">[]</span>
7776 + <pre><span></span><code><a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="k">def</span> <span class="nf">agent_vulnerabilities</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7777 +<a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7778 +<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> Retrieve and process vulnerabilities for a specified agent.</span>
7779 +<a id="__codelineno-0-93" name="__codelineno-0-93"></a>
7780 +<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> Args:</span>
7781 +<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> agent_id (str): The id of the agent to get vulnerabilities for.</span>
7782 +<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
7783 +<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> Returns:</span>
7784 +<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> List[Dict[str, Any]]: A list of processed vulnerabilities.</span>
7785 +<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> &quot;&quot;&quot;</span>
7786 +<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_http_requests</span><span class="o">.</span><span class="n">get_request</span><span class="p">(</span>
7787 +<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="sa">f</span><span class="s2">&quot;vulnerability/</span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7788 +<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;wait_for_complete&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">},</span>
7789 +<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="p">)</span>
7790 +<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
7791 +<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
7792 +<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="n">processed_vulnerabilities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_process_agent_vulnerabilities</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
7793 +<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">return</span> <span class="n">processed_vulnerabilities</span>
7794 +<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">return</span> <span class="p">[]</span>
7795 </code></pre>
7796 </div>
7797 </td>
@@ -7914,8 +7926,7 @@
7926 <span class="normal"><a href="#__codelineno-0-60">60</a></span>
7927 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
7928 <span class="normal"><a href="#__codelineno-0-62">62</a></span>
7917 -<span class="normal"><a href="#__codelineno-0-63">63</a></span>
7918 -<span class="normal"><a href="#__codelineno-0-64">64</a></span></pre>
7929 +<span class="normal"><a href="#__codelineno-0-63">63</a></span></pre>
7930 </div>
7931 </td>
7932 <td class="code">
@@ -7930,49 +7941,48 @@
7941 <a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> headers (Dict[str, str]): Headers to use for the HTTP requests.</span>
7942 <a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> &quot;&quot;&quot;</span>
7943 <a id="__codelineno-0-21" name="__codelineno-0-21"></a>
7933 -<a id="__codelineno-0-22" name="__codelineno-0-22"></a>
7934 -<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
7935 -<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7936 -<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Initialize a WazuhHttpRequests instance.</span>
7937 -<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
7938 -<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Args:</span>
7939 -<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> connector_url (str): The URL of the Wazuh Manager.</span>
7940 -<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> wazuh_auth_token (str): The Wazuh API authentication token.</span>
7941 -<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> &quot;&quot;&quot;</span>
7942 -<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="o">=</span> <span class="n">connector_url</span>
7943 -<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_auth_token</span> <span class="o">=</span> <span class="n">wazuh_auth_token</span>
7944 -<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
7945 -<a id="__codelineno-0-34" name="__codelineno-0-34"></a>
7946 -<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">def</span> <span class="nf">get_request</span><span class="p">(</span>
7947 -<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="p">,</span>
7948 -<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">endpoint</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
7949 -<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
7950 -<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7951 -<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7952 -<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Send a GET request to the specified endpoint.</span>
7953 -<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
7954 -<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Args:</span>
7955 -<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> endpoint (str): The endpoint to make a GET request to.</span>
7956 -<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> params (Optional[Dict[str, Any]]): Any parameters to pass in the GET request.</span>
7957 -<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
7958 -<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Returns:</span>
7959 -<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> Optional[Dict[str, Any]]: The response from the GET request as a dictionary.</span>
7960 -<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> &quot;&quot;&quot;</span>
7961 -<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">try</span><span class="p">:</span>
7962 -<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
7963 -<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7964 -<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span>
7965 -<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span>
7966 -<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
7967 -<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="p">)</span>
7968 -<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
7969 -<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
7970 -<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
7971 -<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
7972 -<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
7973 -<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="sa">f</span><span class="s2">&quot;GET request to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7974 -<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="p">)</span>
7975 -<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">return</span> <span class="kc">None</span>
7944 +<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
7945 +<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7946 +<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> Initialize a WazuhHttpRequests instance.</span>
7947 +<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
7948 +<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Args:</span>
7949 +<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> connector_url (str): The URL of the Wazuh Manager.</span>
7950 +<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> wazuh_auth_token (str): The Wazuh API authentication token.</span>
7951 +<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> &quot;&quot;&quot;</span>
7952 +<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="o">=</span> <span class="n">connector_url</span>
7953 +<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_auth_token</span> <span class="o">=</span> <span class="n">wazuh_auth_token</span>
7954 +<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
7955 +<a id="__codelineno-0-33" name="__codelineno-0-33"></a>
7956 +<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">def</span> <span class="nf">get_request</span><span class="p">(</span>
7957 +<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="bp">self</span><span class="p">,</span>
7958 +<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">endpoint</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
7959 +<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
7960 +<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
7961 +<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
7962 +<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Send a GET request to the specified endpoint.</span>
7963 +<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
7964 +<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Args:</span>
7965 +<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> endpoint (str): The endpoint to make a GET request to.</span>
7966 +<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> params (Optional[Dict[str, Any]]): Any parameters to pass in the GET request.</span>
7967 +<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
7968 +<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Returns:</span>
7969 +<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Optional[Dict[str, Any]]: The response from the GET request as a dictionary.</span>
7970 +<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> &quot;&quot;&quot;</span>
7971 +<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">try</span><span class="p">:</span>
7972 +<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
7973 +<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7974 +<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span>
7975 +<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span>
7976 +<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
7977 +<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="p">)</span>
7978 +<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
7979 +<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
7980 +<a id="__codelineno-0-58" name="__codelineno-0-58"></a>
7981 +<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
7982 +<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
7983 +<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="sa">f</span><span class="s2">&quot;GET request to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
7984 +<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="p">)</span>
7985 +<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">return</span> <span class="kc">None</span>
7986 </code></pre>
7987 </div>
7988 </td>
@@ -8055,7 +8065,8 @@
8065 <tr>
8066 <td class="linenos">
8067 <div class="linenodiv">
8058 - <pre><span></span><span class="normal"><a href="#__codelineno-0-23">23</a></span>
8068 + <pre><span></span><span class="normal"><a href="#__codelineno-0-22">22</a></span>
8069 +<span class="normal"><a href="#__codelineno-0-23">23</a></span>
8070 <span class="normal"><a href="#__codelineno-0-24">24</a></span>
8071 <span class="normal"><a href="#__codelineno-0-25">25</a></span>
8072 <span class="normal"><a href="#__codelineno-0-26">26</a></span>
@@ -8064,23 +8075,22 @@
8075 <span class="normal"><a href="#__codelineno-0-29">29</a></span>
8076 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
8077 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
8067 -<span class="normal"><a href="#__codelineno-0-32">32</a></span>
8068 -<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre>
8078 +<span class="normal"><a href="#__codelineno-0-32">32</a></span></pre>
8079 </div>
8080 </td>
8081 <td class="code">
8082 <div>
8073 - <pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
8074 -<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
8075 -<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Initialize a WazuhHttpRequests instance.</span>
8076 -<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
8077 -<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Args:</span>
8078 -<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> connector_url (str): The URL of the Wazuh Manager.</span>
8079 -<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> wazuh_auth_token (str): The Wazuh API authentication token.</span>
8080 -<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> &quot;&quot;&quot;</span>
8081 -<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="o">=</span> <span class="n">connector_url</span>
8082 -<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_auth_token</span> <span class="o">=</span> <span class="n">wazuh_auth_token</span>
8083 -<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
8083 + <pre><span></span><code><a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
8084 +<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
8085 +<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> Initialize a WazuhHttpRequests instance.</span>
8086 +<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
8087 +<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Args:</span>
8088 +<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> connector_url (str): The URL of the Wazuh Manager.</span>
8089 +<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> wazuh_auth_token (str): The Wazuh API authentication token.</span>
8090 +<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> &quot;&quot;&quot;</span>
8091 +<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="o">=</span> <span class="n">connector_url</span>
8092 +<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">wazuh_auth_token</span> <span class="o">=</span> <span class="n">wazuh_auth_token</span>
8093 +<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;Authorization&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
8094 </code></pre>
8095 </div>
8096 </td>
@@ -8208,7 +8218,8 @@
8218 <tr>
8219 <td class="linenos">
8220 <div class="linenodiv">
8211 - <pre><span></span><span class="normal"><a href="#__codelineno-0-35">35</a></span>
8221 + <pre><span></span><span class="normal"><a href="#__codelineno-0-34">34</a></span>
8222 +<span class="normal"><a href="#__codelineno-0-35">35</a></span>
8223 <span class="normal"><a href="#__codelineno-0-36">36</a></span>
8224 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
8225 <span class="normal"><a href="#__codelineno-0-38">38</a></span>
@@ -8236,42 +8247,41 @@
8247 <span class="normal"><a href="#__codelineno-0-60">60</a></span>
8248 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
8249 <span class="normal"><a href="#__codelineno-0-62">62</a></span>
8239 -<span class="normal"><a href="#__codelineno-0-63">63</a></span>
8240 -<span class="normal"><a href="#__codelineno-0-64">64</a></span></pre>
8250 +<span class="normal"><a href="#__codelineno-0-63">63</a></span></pre>
8251 </div>
8252 </td>
8253 <td class="code">
8254 <div>
8245 - <pre><span></span><code><a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="k">def</span> <span class="nf">get_request</span><span class="p">(</span>
8246 -<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="bp">self</span><span class="p">,</span>
8247 -<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">endpoint</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
8248 -<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
8249 -<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
8250 -<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
8251 -<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Send a GET request to the specified endpoint.</span>
8252 -<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
8253 -<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Args:</span>
8254 -<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> endpoint (str): The endpoint to make a GET request to.</span>
8255 -<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> params (Optional[Dict[str, Any]]): Any parameters to pass in the GET request.</span>
8256 -<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
8257 -<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Returns:</span>
8258 -<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> Optional[Dict[str, Any]]: The response from the GET request as a dictionary.</span>
8259 -<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> &quot;&quot;&quot;</span>
8260 -<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">try</span><span class="p">:</span>
8261 -<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
8262 -<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
8263 -<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span>
8264 -<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span>
8265 -<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
8266 -<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="p">)</span>
8267 -<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
8268 -<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
8269 -<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
8270 -<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
8271 -<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
8272 -<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="sa">f</span><span class="s2">&quot;GET request to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
8273 -<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="p">)</span>
8274 -<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">return</span> <span class="kc">None</span>
8255 + <pre><span></span><code><a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="k">def</span> <span class="nf">get_request</span><span class="p">(</span>
8256 +<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="bp">self</span><span class="p">,</span>
8257 +<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">endpoint</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
8258 +<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
8259 +<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
8260 +<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
8261 +<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Send a GET request to the specified endpoint.</span>
8262 +<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
8263 +<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Args:</span>
8264 +<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> endpoint (str): The endpoint to make a GET request to.</span>
8265 +<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> params (Optional[Dict[str, Any]]): Any parameters to pass in the GET request.</span>
8266 +<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
8267 +<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Returns:</span>
8268 +<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Optional[Dict[str, Any]]: The response from the GET request as a dictionary.</span>
8269 +<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> &quot;&quot;&quot;</span>
8270 +<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">try</span><span class="p">:</span>
8271 +<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
8272 +<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
8273 +<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span>
8274 +<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span>
8275 +<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
8276 +<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="p">)</span>
8277 +<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
8278 +<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
8279 +<a id="__codelineno-0-58" name="__codelineno-0-58"></a>
8280 +<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
8281 +<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
8282 +<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="sa">f</span><span class="s2">&quot;GET request to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">endpoint</span><span class="si">}</span><span class="s2"> failed with error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
8283 +<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="p">)</span>
8284 +<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">return</span> <span class="kc">None</span>
8285 </code></pre>
8286 </div>
8287 </td>