@@ 333-445 (lines=113) @@ | ||
330 | cmd.add_element("copy", agent_id) |
|
331 | return self._send_xml_command(cmd) |
|
332 | ||
333 | def create_alert( |
|
334 | self, |
|
335 | name: str, |
|
336 | condition: AlertCondition, |
|
337 | event: AlertEvent, |
|
338 | method: AlertMethod, |
|
339 | *, |
|
340 | method_data: Optional[dict] = None, |
|
341 | event_data: Optional[dict] = None, |
|
342 | condition_data: Optional[dict] = None, |
|
343 | filter_id: Optional[int] = None, |
|
344 | comment: Optional[str] = None, |
|
345 | ) -> Any: |
|
346 | """Create a new alert |
|
347 | ||
348 | Arguments: |
|
349 | name: Name of the new Alert |
|
350 | condition: The condition that must be satisfied for the alert |
|
351 | to occur; if the event is either 'Updated SecInfo arrived' or |
|
352 | 'New SecInfo arrived', condition must be 'Always'. Otherwise, |
|
353 | condition can also be on of 'Severity at least', 'Filter count |
|
354 | changed' or 'Filter count at least'. |
|
355 | event: The event that must happen for the alert to occur, one |
|
356 | of 'Task run status changed', 'Updated SecInfo arrived' or 'New |
|
357 | SecInfo arrived' |
|
358 | method: The method by which the user is alerted, one of 'SCP', |
|
359 | 'Send', 'SMB', 'SNMP', 'Syslog' or 'Email'; if the event is |
|
360 | neither 'Updated SecInfo arrived' nor 'New SecInfo arrived', |
|
361 | method can also be one of 'Start Task', 'HTTP Get', 'Sourcefire |
|
362 | Connector' or 'verinice Connector'. |
|
363 | condition_data: Data that defines the condition |
|
364 | event_data: Data that defines the event |
|
365 | method_data: Data that defines the method |
|
366 | filter_id: Filter to apply when executing alert |
|
367 | comment: Comment for the alert |
|
368 | ||
369 | Returns: |
|
370 | The response. See :py:meth:`send_command` for details. |
|
371 | """ |
|
372 | if not name: |
|
373 | raise RequiredArgument( |
|
374 | function=self.create_alert.__name__, argument='name' |
|
375 | ) |
|
376 | ||
377 | if not condition: |
|
378 | raise RequiredArgument( |
|
379 | function=self.create_alert.__name__, argument='condition' |
|
380 | ) |
|
381 | ||
382 | if not event: |
|
383 | raise RequiredArgument( |
|
384 | function=self.create_alert.__name__, argument='event' |
|
385 | ) |
|
386 | ||
387 | if not method: |
|
388 | raise RequiredArgument( |
|
389 | function=self.create_alert.__name__, argument='method' |
|
390 | ) |
|
391 | ||
392 | if not isinstance(condition, AlertCondition): |
|
393 | raise InvalidArgumentType( |
|
394 | function=self.create_alert.__name__, |
|
395 | argument='condition', |
|
396 | arg_type=AlertCondition.__name__, |
|
397 | ) |
|
398 | ||
399 | if not isinstance(event, AlertEvent): |
|
400 | raise InvalidArgumentType( |
|
401 | function=self.create_alert.__name__, |
|
402 | argument='even', |
|
403 | arg_type=AlertEvent.__name__, |
|
404 | ) |
|
405 | ||
406 | if not isinstance(method, AlertMethod): |
|
407 | raise InvalidArgumentType( |
|
408 | function=self.create_alert.__name__, |
|
409 | argument='method', |
|
410 | arg_type=AlertMethod.__name__, |
|
411 | ) |
|
412 | ||
413 | _check_event(event, condition, method) |
|
414 | ||
415 | cmd = XmlCommand("create_alert") |
|
416 | cmd.add_element("name", name) |
|
417 | ||
418 | conditions = cmd.add_element("condition", condition.value) |
|
419 | ||
420 | if condition_data is not None: |
|
421 | for key, value in condition_data.items(): |
|
422 | _data = conditions.add_element("data", value) |
|
423 | _data.add_element("name", key) |
|
424 | ||
425 | events = cmd.add_element("event", event.value) |
|
426 | ||
427 | if event_data is not None: |
|
428 | for key, value in event_data.items(): |
|
429 | _data = events.add_element("data", value) |
|
430 | _data.add_element("name", key) |
|
431 | ||
432 | methods = cmd.add_element("method", method.value) |
|
433 | ||
434 | if method_data is not None: |
|
435 | for key, value in method_data.items(): |
|
436 | _data = methods.add_element("data", value) |
|
437 | _data.add_element("name", key) |
|
438 | ||
439 | if filter_id: |
|
440 | cmd.add_element("filter", attrs={"id": filter_id}) |
|
441 | ||
442 | if comment: |
|
443 | cmd.add_element("comment", comment) |
|
444 | ||
445 | return self._send_xml_command(cmd) |
|
446 | ||
447 | def clone_alert(self, alert_id: str) -> Any: |
|
448 | """Clone an existing alert |
@@ 285-397 (lines=113) @@ | ||
282 | ||
283 | return self._transform(response) |
|
284 | ||
285 | def create_alert( |
|
286 | self, |
|
287 | name: str, |
|
288 | condition: AlertCondition, |
|
289 | event: AlertEvent, |
|
290 | method: AlertMethod, |
|
291 | *, |
|
292 | method_data: Optional[dict] = None, |
|
293 | event_data: Optional[dict] = None, |
|
294 | condition_data: Optional[dict] = None, |
|
295 | filter_id: Optional[int] = None, |
|
296 | comment: Optional[str] = None, |
|
297 | ) -> Any: |
|
298 | """Create a new alert |
|
299 | ||
300 | Arguments: |
|
301 | name: Name of the new Alert |
|
302 | condition: The condition that must be satisfied for the alert |
|
303 | to occur; if the event is either 'Updated SecInfo arrived' or |
|
304 | 'New SecInfo arrived', condition must be 'Always'. Otherwise, |
|
305 | condition can also be on of 'Severity at least', 'Filter count |
|
306 | changed' or 'Filter count at least'. |
|
307 | event: The event that must happen for the alert to occur, one |
|
308 | of 'Task run status changed', 'Updated SecInfo arrived' or 'New |
|
309 | SecInfo arrived' |
|
310 | method: The method by which the user is alerted, one of 'SCP', |
|
311 | 'Send', 'SMB', 'SNMP', 'Syslog' or 'Email'; if the event is |
|
312 | neither 'Updated SecInfo arrived' nor 'New SecInfo arrived', |
|
313 | method can also be one of 'Start Task', 'HTTP Get', 'Sourcefire |
|
314 | Connector' or 'verinice Connector'. |
|
315 | condition_data: Data that defines the condition |
|
316 | event_data: Data that defines the event |
|
317 | method_data: Data that defines the method |
|
318 | filter_id: Filter to apply when executing alert |
|
319 | comment: Comment for the alert |
|
320 | ||
321 | Returns: |
|
322 | The response. See :py:meth:`send_command` for details. |
|
323 | """ |
|
324 | if not name: |
|
325 | raise RequiredArgument( |
|
326 | function=self.create_alert.__name__, argument='name' |
|
327 | ) |
|
328 | ||
329 | if not condition: |
|
330 | raise RequiredArgument( |
|
331 | function=self.create_alert.__name__, argument='condition' |
|
332 | ) |
|
333 | ||
334 | if not event: |
|
335 | raise RequiredArgument( |
|
336 | function=self.create_alert.__name__, argument='event' |
|
337 | ) |
|
338 | ||
339 | if not method: |
|
340 | raise RequiredArgument( |
|
341 | function=self.create_alert.__name__, argument='method' |
|
342 | ) |
|
343 | ||
344 | if not isinstance(condition, AlertCondition): |
|
345 | raise InvalidArgumentType( |
|
346 | function=self.create_alert.__name__, |
|
347 | argument='condition', |
|
348 | arg_type=AlertCondition.__name__, |
|
349 | ) |
|
350 | ||
351 | if not isinstance(event, AlertEvent): |
|
352 | raise InvalidArgumentType( |
|
353 | function=self.create_alert.__name__, |
|
354 | argument='even', |
|
355 | arg_type=AlertEvent.__name__, |
|
356 | ) |
|
357 | ||
358 | if not isinstance(method, AlertMethod): |
|
359 | raise InvalidArgumentType( |
|
360 | function=self.create_alert.__name__, |
|
361 | argument='method', |
|
362 | arg_type=AlertMethod.__name__, |
|
363 | ) |
|
364 | ||
365 | _check_event(event, condition, method) |
|
366 | ||
367 | cmd = XmlCommand("create_alert") |
|
368 | cmd.add_element("name", name) |
|
369 | ||
370 | conditions = cmd.add_element("condition", condition.value) |
|
371 | ||
372 | if condition_data is not None: |
|
373 | for key, value in condition_data.items(): |
|
374 | _data = conditions.add_element("data", value) |
|
375 | _data.add_element("name", key) |
|
376 | ||
377 | events = cmd.add_element("event", event.value) |
|
378 | ||
379 | if event_data is not None: |
|
380 | for key, value in event_data.items(): |
|
381 | _data = events.add_element("data", value) |
|
382 | _data.add_element("name", key) |
|
383 | ||
384 | methods = cmd.add_element("method", method.value) |
|
385 | ||
386 | if method_data is not None: |
|
387 | for key, value in method_data.items(): |
|
388 | _data = methods.add_element("data", value) |
|
389 | _data.add_element("name", key) |
|
390 | ||
391 | if filter_id: |
|
392 | cmd.add_element("filter", attrs={"id": filter_id}) |
|
393 | ||
394 | if comment: |
|
395 | cmd.add_element("comment", comment) |
|
396 | ||
397 | return self._send_xml_command(cmd) |
|
398 | ||
399 | def create_audit( |
|
400 | self, |
@@ 158-270 (lines=113) @@ | ||
155 | # Is authenticated on gvmd |
|
156 | self._authenticated = False |
|
157 | ||
158 | def create_alert( |
|
159 | self, |
|
160 | name: str, |
|
161 | condition: AlertCondition, |
|
162 | event: AlertEvent, |
|
163 | method: AlertMethod, |
|
164 | *, |
|
165 | method_data: Optional[dict] = None, |
|
166 | event_data: Optional[dict] = None, |
|
167 | condition_data: Optional[dict] = None, |
|
168 | filter_id: Optional[int] = None, |
|
169 | comment: Optional[str] = None, |
|
170 | ) -> Any: |
|
171 | """Create a new alert |
|
172 | ||
173 | Arguments: |
|
174 | name: Name of the new Alert |
|
175 | condition: The condition that must be satisfied for the alert |
|
176 | to occur; if the event is either 'Updated SecInfo arrived' or |
|
177 | 'New SecInfo arrived', condition must be 'Always'. Otherwise, |
|
178 | condition can also be on of 'Severity at least', 'Filter count |
|
179 | changed' or 'Filter count at least'. |
|
180 | event: The event that must happen for the alert to occur, one |
|
181 | of 'Task run status changed', 'Updated SecInfo arrived' or 'New |
|
182 | SecInfo arrived' |
|
183 | method: The method by which the user is alerted, one of 'SCP', |
|
184 | 'Send', 'SMB', 'SNMP', 'Syslog' or 'Email'; if the event is |
|
185 | neither 'Updated SecInfo arrived' nor 'New SecInfo arrived', |
|
186 | method can also be one of 'Start Task', 'HTTP Get', 'Sourcefire |
|
187 | Connector' or 'verinice Connector'. |
|
188 | condition_data: Data that defines the condition |
|
189 | event_data: Data that defines the event |
|
190 | method_data: Data that defines the method |
|
191 | filter_id: Filter to apply when executing alert |
|
192 | comment: Comment for the alert |
|
193 | ||
194 | Returns: |
|
195 | The response. See :py:meth:`send_command` for details. |
|
196 | """ |
|
197 | if not name: |
|
198 | raise RequiredArgument( |
|
199 | function=self.create_alert.__name__, argument='name' |
|
200 | ) |
|
201 | ||
202 | if not condition: |
|
203 | raise RequiredArgument( |
|
204 | function=self.create_alert.__name__, argument='condition' |
|
205 | ) |
|
206 | ||
207 | if not event: |
|
208 | raise RequiredArgument( |
|
209 | function=self.create_alert.__name__, argument='event' |
|
210 | ) |
|
211 | ||
212 | if not method: |
|
213 | raise RequiredArgument( |
|
214 | function=self.create_alert.__name__, argument='method' |
|
215 | ) |
|
216 | ||
217 | if not isinstance(condition, AlertCondition): |
|
218 | raise InvalidArgumentType( |
|
219 | function=self.create_alert.__name__, |
|
220 | argument='condition', |
|
221 | arg_type=AlertCondition.__name__, |
|
222 | ) |
|
223 | ||
224 | if not isinstance(event, AlertEvent): |
|
225 | raise InvalidArgumentType( |
|
226 | function=self.create_alert.__name__, |
|
227 | argument='even', |
|
228 | arg_type=AlertEvent.__name__, |
|
229 | ) |
|
230 | ||
231 | if not isinstance(method, AlertMethod): |
|
232 | raise InvalidArgumentType( |
|
233 | function=self.create_alert.__name__, |
|
234 | argument='method', |
|
235 | arg_type=AlertMethod.__name__, |
|
236 | ) |
|
237 | ||
238 | _check_event(event, condition, method) |
|
239 | ||
240 | cmd = XmlCommand("create_alert") |
|
241 | cmd.add_element("name", name) |
|
242 | ||
243 | conditions = cmd.add_element("condition", condition.value) |
|
244 | ||
245 | if condition_data is not None: |
|
246 | for key, value in condition_data.items(): |
|
247 | _data = conditions.add_element("data", value) |
|
248 | _data.add_element("name", key) |
|
249 | ||
250 | events = cmd.add_element("event", event.value) |
|
251 | ||
252 | if event_data is not None: |
|
253 | for key, value in event_data.items(): |
|
254 | _data = events.add_element("data", value) |
|
255 | _data.add_element("name", key) |
|
256 | ||
257 | methods = cmd.add_element("method", method.value) |
|
258 | ||
259 | if method_data is not None: |
|
260 | for key, value in method_data.items(): |
|
261 | _data = methods.add_element("data", value) |
|
262 | _data.add_element("name", key) |
|
263 | ||
264 | if filter_id: |
|
265 | cmd.add_element("filter", attrs={"id": filter_id}) |
|
266 | ||
267 | if comment: |
|
268 | cmd.add_element("comment", comment) |
|
269 | ||
270 | return self._send_xml_command(cmd) |
|
271 | ||
272 | def create_audit( |
|
273 | self, |