File: _vulnerabilities.py

package info (click to toggle)
python-gvm 26.9.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 5,316 kB
  • sloc: python: 46,784; makefile: 18
file content (46 lines) | stat: -rw-r--r-- 1,289 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# SPDX-FileCopyrightText: 2024 Greenbone AG
#
# SPDX-License-Identifier: GPL-3.0-or-later

from typing import Optional

from gvm.errors import RequiredArgument
from gvm.protocols.core import Request
from gvm.xml import XmlCommand

from .._entity_id import EntityID


class Vulnerabilities:
    @staticmethod
    def get_vulnerabilities(
        *,
        filter_string: Optional[str] = None,
        filter_id: Optional[EntityID] = None,
    ) -> Request:
        """Request a list of vulnerabilities

        Args:
            filter_string: Filter term to use for the query
            filter_id: UUID of an existing filter to use for the query
        """
        cmd = XmlCommand("get_vulns")
        cmd.add_filter(filter_string, filter_id)
        return cmd

    @classmethod
    def get_vulnerability(cls, vulnerability_id: EntityID) -> Request:
        """Request a single vulnerability

        Args:
            vulnerability_id: ID of an existing vulnerability
        """
        if not vulnerability_id:
            raise RequiredArgument(
                function=cls.get_vulnerability.__name__,
                argument="vulnerability_id",
            )

        cmd = XmlCommand("get_vulns")
        cmd.set_attribute("vuln_id", str(vulnerability_id))
        return cmd