python-gvm 27.7.0__py3-none-any.whl → 27.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gvm/__version__.py +1 -1
- gvm/protocols/gmp/_gmpnext.py +210 -0
- gvm/protocols/gmp/requests/next/__init__.py +4 -0
- gvm/protocols/gmp/requests/next/_agents.py +3 -0
- gvm/protocols/gmp/requests/next/_audit_report.py +156 -0
- gvm/protocols/gmp/requests/next/_integration_configs.py +4 -0
- gvm/protocols/gmp/requests/next/_report_applications.py +4 -0
- gvm/protocols/gmp/requests/next/_report_closed_cves.py +4 -0
- gvm/protocols/gmp/requests/next/_report_cves.py +4 -0
- gvm/protocols/gmp/requests/next/_report_errors.py +4 -0
- gvm/protocols/gmp/requests/next/_report_exports.py +85 -0
- gvm/protocols/gmp/requests/next/_report_hosts.py +4 -0
- gvm/protocols/gmp/requests/next/_report_operating_systems.py +4 -0
- gvm/protocols/gmp/requests/next/_report_ports.py +4 -0
- gvm/protocols/gmp/requests/next/_report_tls_certificates.py +4 -0
- gvm/protocols/gmp/requests/next/_report_vulnerabilities.py +4 -0
- gvm/protocols/gmp/requests/next/_scan_report.py +86 -0
- {python_gvm-27.7.0.dist-info → python_gvm-27.9.0.dist-info}/METADATA +1 -1
- {python_gvm-27.7.0.dist-info → python_gvm-27.9.0.dist-info}/RECORD +21 -20
- {python_gvm-27.7.0.dist-info → python_gvm-27.9.0.dist-info}/WHEEL +1 -1
- {python_gvm-27.7.0.dist-info → python_gvm-27.9.0.dist-info}/licenses/LICENSE +0 -0
gvm/__version__.py
CHANGED
gvm/protocols/gmp/_gmpnext.py
CHANGED
|
@@ -26,6 +26,7 @@ from .requests.next import (
|
|
|
26
26
|
ReportClosedCVEs,
|
|
27
27
|
ReportCVEs,
|
|
28
28
|
ReportErrors,
|
|
29
|
+
ReportExports,
|
|
29
30
|
ReportHosts,
|
|
30
31
|
ReportOperatingSystems,
|
|
31
32
|
ReportPorts,
|
|
@@ -313,6 +314,7 @@ class GMPNext(GMPv227[T]):
|
|
|
313
314
|
self,
|
|
314
315
|
agent_id: EntityID,
|
|
315
316
|
days: int = 0,
|
|
317
|
+
encryption: bool = True,
|
|
316
318
|
) -> T:
|
|
317
319
|
"""Request a support bundle for an agent.
|
|
318
320
|
|
|
@@ -320,6 +322,7 @@ class GMPNext(GMPv227[T]):
|
|
|
320
322
|
agent_id: ID of the agent to get the support bundle for.
|
|
321
323
|
days: Number of days of logs to include. If None, zero is sent so the
|
|
322
324
|
Agent Controller uses its configured default.
|
|
325
|
+
encryption: Whether an encrypted or plain support bundle is requested.
|
|
323
326
|
|
|
324
327
|
Raises:
|
|
325
328
|
RequiredArgument: If agent_id is missing.
|
|
@@ -329,6 +332,7 @@ class GMPNext(GMPv227[T]):
|
|
|
329
332
|
Agents.get_agent_support_bundle(
|
|
330
333
|
agent_id,
|
|
331
334
|
days=days,
|
|
335
|
+
encryption=encryption,
|
|
332
336
|
)
|
|
333
337
|
)
|
|
334
338
|
|
|
@@ -1808,3 +1812,209 @@ class GMPNext(GMPv227[T]):
|
|
|
1808
1812
|
result_tags=result_tags,
|
|
1809
1813
|
)
|
|
1810
1814
|
)
|
|
1815
|
+
|
|
1816
|
+
def export_delta_scan_report(
|
|
1817
|
+
self,
|
|
1818
|
+
report_id: EntityID,
|
|
1819
|
+
delta_report_id: EntityID,
|
|
1820
|
+
format_id: EntityID,
|
|
1821
|
+
*,
|
|
1822
|
+
config_id: EntityID | None = None,
|
|
1823
|
+
filter_string: str | None = None,
|
|
1824
|
+
ignore_pagination: bool = False,
|
|
1825
|
+
lean: bool = False,
|
|
1826
|
+
notes_details: bool = False,
|
|
1827
|
+
overrides_details: bool = False,
|
|
1828
|
+
result_tags: bool = False,
|
|
1829
|
+
) -> T:
|
|
1830
|
+
"""Request an asynchronous export of a delta scan report.
|
|
1831
|
+
|
|
1832
|
+
If an identical export is already pending or running, the existing
|
|
1833
|
+
report export is returned instead of creating a duplicate.
|
|
1834
|
+
|
|
1835
|
+
Args:
|
|
1836
|
+
report_id: UUID of the scan report to export.
|
|
1837
|
+
delta_report_id: UUID of the report used for delta comparison.
|
|
1838
|
+
format_id: UUID of the report format to apply.
|
|
1839
|
+
config_id: UUID of an optional report configuration.
|
|
1840
|
+
filter_string: Filter term to apply while generating the report.
|
|
1841
|
+
ignore_pagination: Whether pagination settings in the filter
|
|
1842
|
+
should be ignored.
|
|
1843
|
+
lean: Whether lean report data should be generated.
|
|
1844
|
+
notes_details: Whether note details should be included.
|
|
1845
|
+
overrides_details: Whether override details should be included.
|
|
1846
|
+
result_tags: Whether result tags should be included.
|
|
1847
|
+
|
|
1848
|
+
Returns:
|
|
1849
|
+
A request for the export_delta_scan_report GMP command.
|
|
1850
|
+
|
|
1851
|
+
Raises:
|
|
1852
|
+
RequiredArgument: If report_id or delta_report_id is not provided.
|
|
1853
|
+
"""
|
|
1854
|
+
return self._send_request_and_transform_response(
|
|
1855
|
+
ScanReports.export_delta_scan_report(
|
|
1856
|
+
report_id=report_id,
|
|
1857
|
+
delta_report_id=delta_report_id,
|
|
1858
|
+
format_id=format_id,
|
|
1859
|
+
config_id=config_id,
|
|
1860
|
+
filter_string=filter_string,
|
|
1861
|
+
ignore_pagination=ignore_pagination,
|
|
1862
|
+
lean=lean,
|
|
1863
|
+
notes_details=notes_details,
|
|
1864
|
+
overrides_details=overrides_details,
|
|
1865
|
+
result_tags=result_tags,
|
|
1866
|
+
)
|
|
1867
|
+
)
|
|
1868
|
+
|
|
1869
|
+
def export_audit_report(
|
|
1870
|
+
self,
|
|
1871
|
+
report_id: EntityID,
|
|
1872
|
+
format_id: EntityID,
|
|
1873
|
+
*,
|
|
1874
|
+
config_id: EntityID | None = None,
|
|
1875
|
+
filter_string: str | None = None,
|
|
1876
|
+
ignore_pagination: bool = False,
|
|
1877
|
+
lean: bool = False,
|
|
1878
|
+
notes_details: bool = False,
|
|
1879
|
+
overrides_details: bool = False,
|
|
1880
|
+
result_tags: bool = False,
|
|
1881
|
+
) -> T:
|
|
1882
|
+
"""Request an asynchronous export of an audit report.
|
|
1883
|
+
|
|
1884
|
+
If an identical export is already pending or running, the existing
|
|
1885
|
+
report export is returned instead of creating a duplicate.
|
|
1886
|
+
|
|
1887
|
+
Args:
|
|
1888
|
+
report_id: UUID of the audit report to export.
|
|
1889
|
+
format_id: UUID of the report format to apply.
|
|
1890
|
+
config_id: UUID of an optional report configuration.
|
|
1891
|
+
filter_string: Filter term to apply while generating the report.
|
|
1892
|
+
ignore_pagination: Whether pagination settings in the filter
|
|
1893
|
+
should be ignored.
|
|
1894
|
+
lean: Whether lean report data should be generated.
|
|
1895
|
+
notes_details: Whether note details should be included.
|
|
1896
|
+
overrides_details: Whether override details should be included.
|
|
1897
|
+
result_tags: Whether result tags should be included.
|
|
1898
|
+
|
|
1899
|
+
Returns:
|
|
1900
|
+
A request for the export_audit_report GMP command.
|
|
1901
|
+
|
|
1902
|
+
Raises:
|
|
1903
|
+
RequiredArgument: If report_id or format_id is not provided.
|
|
1904
|
+
"""
|
|
1905
|
+
return self._send_request_and_transform_response(
|
|
1906
|
+
AuditReport.export_audit_report(
|
|
1907
|
+
report_id=report_id,
|
|
1908
|
+
format_id=format_id,
|
|
1909
|
+
config_id=config_id,
|
|
1910
|
+
filter_string=filter_string,
|
|
1911
|
+
ignore_pagination=ignore_pagination,
|
|
1912
|
+
lean=lean,
|
|
1913
|
+
notes_details=notes_details,
|
|
1914
|
+
overrides_details=overrides_details,
|
|
1915
|
+
result_tags=result_tags,
|
|
1916
|
+
)
|
|
1917
|
+
)
|
|
1918
|
+
|
|
1919
|
+
def export_delta_audit_report(
|
|
1920
|
+
self,
|
|
1921
|
+
report_id: EntityID,
|
|
1922
|
+
delta_report_id: EntityID,
|
|
1923
|
+
format_id: EntityID,
|
|
1924
|
+
*,
|
|
1925
|
+
config_id: EntityID | None = None,
|
|
1926
|
+
filter_string: str | None = None,
|
|
1927
|
+
ignore_pagination: bool = False,
|
|
1928
|
+
lean: bool = False,
|
|
1929
|
+
notes_details: bool = False,
|
|
1930
|
+
overrides_details: bool = False,
|
|
1931
|
+
result_tags: bool = False,
|
|
1932
|
+
) -> T:
|
|
1933
|
+
"""Request an asynchronous export of a delta audit report.
|
|
1934
|
+
|
|
1935
|
+
If an identical export is already pending or running, the existing
|
|
1936
|
+
report export is returned instead of creating a duplicate.
|
|
1937
|
+
|
|
1938
|
+
Args:
|
|
1939
|
+
report_id: UUID of the audit report to export.
|
|
1940
|
+
delta_report_id: UUID of the report used for delta comparison.
|
|
1941
|
+
format_id: UUID of the report format to apply.
|
|
1942
|
+
config_id: UUID of an optional report configuration.
|
|
1943
|
+
filter_string: Filter term to apply while generating the report.
|
|
1944
|
+
ignore_pagination: Whether pagination settings in the filter
|
|
1945
|
+
should be ignored.
|
|
1946
|
+
lean: Whether lean report data should be generated.
|
|
1947
|
+
notes_details: Whether note details should be included.
|
|
1948
|
+
overrides_details: Whether override details should be included.
|
|
1949
|
+
result_tags: Whether result tags should be included.
|
|
1950
|
+
|
|
1951
|
+
Returns:
|
|
1952
|
+
A request for the export_delta_audit_report GMP command.
|
|
1953
|
+
|
|
1954
|
+
Raises:
|
|
1955
|
+
RequiredArgument: If report_id or delta_report_id is not provided.
|
|
1956
|
+
"""
|
|
1957
|
+
return self._send_request_and_transform_response(
|
|
1958
|
+
AuditReport.export_delta_audit_report(
|
|
1959
|
+
report_id=report_id,
|
|
1960
|
+
delta_report_id=delta_report_id,
|
|
1961
|
+
format_id=format_id,
|
|
1962
|
+
config_id=config_id,
|
|
1963
|
+
filter_string=filter_string,
|
|
1964
|
+
ignore_pagination=ignore_pagination,
|
|
1965
|
+
lean=lean,
|
|
1966
|
+
notes_details=notes_details,
|
|
1967
|
+
overrides_details=overrides_details,
|
|
1968
|
+
result_tags=result_tags,
|
|
1969
|
+
)
|
|
1970
|
+
)
|
|
1971
|
+
|
|
1972
|
+
def get_report_exports(
|
|
1973
|
+
self,
|
|
1974
|
+
) -> T:
|
|
1975
|
+
"""Request report exports.
|
|
1976
|
+
|
|
1977
|
+
The command requests a list of report exports.
|
|
1978
|
+
|
|
1979
|
+
Returns:
|
|
1980
|
+
A request for the get_report_exports GMP command.
|
|
1981
|
+
"""
|
|
1982
|
+
return self._send_request_and_transform_response(
|
|
1983
|
+
ReportExports.get_report_exports()
|
|
1984
|
+
)
|
|
1985
|
+
|
|
1986
|
+
def get_report_export(
|
|
1987
|
+
self,
|
|
1988
|
+
report_export_id: EntityID,
|
|
1989
|
+
) -> T:
|
|
1990
|
+
"""Request a single report export.
|
|
1991
|
+
|
|
1992
|
+
Args:
|
|
1993
|
+
report_export_id: UUID of the report export.
|
|
1994
|
+
|
|
1995
|
+
Returns:
|
|
1996
|
+
A request for the get_report_exports GMP command.
|
|
1997
|
+
"""
|
|
1998
|
+
return self._send_request_and_transform_response(
|
|
1999
|
+
ReportExports.get_report_export(
|
|
2000
|
+
report_export_id=report_export_id,
|
|
2001
|
+
)
|
|
2002
|
+
)
|
|
2003
|
+
|
|
2004
|
+
def download_report_export(
|
|
2005
|
+
self,
|
|
2006
|
+
report_export_id: EntityID,
|
|
2007
|
+
) -> T:
|
|
2008
|
+
"""Request a download report export.
|
|
2009
|
+
|
|
2010
|
+
Args:
|
|
2011
|
+
report_export_id: UUID of the report export.
|
|
2012
|
+
|
|
2013
|
+
Returns:
|
|
2014
|
+
A request for the download_report_export GMP command.
|
|
2015
|
+
"""
|
|
2016
|
+
return self._send_request_and_transform_response(
|
|
2017
|
+
ReportExports.download_report_export(
|
|
2018
|
+
report_export_id=report_export_id,
|
|
2019
|
+
)
|
|
2020
|
+
)
|
|
@@ -30,6 +30,9 @@ from gvm.protocols.gmp.requests.next._report_cves import (
|
|
|
30
30
|
from gvm.protocols.gmp.requests.next._report_errors import (
|
|
31
31
|
ReportErrors,
|
|
32
32
|
)
|
|
33
|
+
from gvm.protocols.gmp.requests.next._report_exports import (
|
|
34
|
+
ReportExports,
|
|
35
|
+
)
|
|
33
36
|
from gvm.protocols.gmp.requests.next._report_hosts import (
|
|
34
37
|
ReportHosts,
|
|
35
38
|
)
|
|
@@ -174,6 +177,7 @@ __all__ = (
|
|
|
174
177
|
"ReportConfigParameter",
|
|
175
178
|
"ReportConfigs",
|
|
176
179
|
"ReportErrors",
|
|
180
|
+
"ReportExports",
|
|
177
181
|
"ReportFormatType",
|
|
178
182
|
"ReportFormats",
|
|
179
183
|
"ReportHosts",
|
|
@@ -438,6 +438,7 @@ class Agents:
|
|
|
438
438
|
agent_id: EntityID,
|
|
439
439
|
*,
|
|
440
440
|
days: int = 0,
|
|
441
|
+
encryption: bool = True,
|
|
441
442
|
) -> Request:
|
|
442
443
|
"""Request a support bundle for an agent.
|
|
443
444
|
|
|
@@ -445,6 +446,7 @@ class Agents:
|
|
|
445
446
|
agent_id: ID of the agent to get the support bundle for.
|
|
446
447
|
days: Number of days of logs to include. If None, zero is sent so the
|
|
447
448
|
Agent Controller uses its configured default.
|
|
449
|
+
encryption: Whether an encrypted or plain support bundle is requested.
|
|
448
450
|
|
|
449
451
|
Raises:
|
|
450
452
|
RequiredArgument: If agent_id is missing.
|
|
@@ -462,5 +464,6 @@ class Agents:
|
|
|
462
464
|
cmd = XmlCommand("get_agent_support_bundle")
|
|
463
465
|
cmd.set_attribute("agent_uuid", str(agent_id))
|
|
464
466
|
cmd.set_attribute("days", str(days))
|
|
467
|
+
cmd.set_attribute("encryption", to_bool(encryption))
|
|
465
468
|
|
|
466
469
|
return cmd
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from gvm.errors import RequiredArgument
|
|
2
2
|
from gvm.protocols.core import Request
|
|
3
3
|
from gvm.protocols.gmp.requests import EntityID
|
|
4
|
+
from gvm.utils import to_bool
|
|
4
5
|
from gvm.xml import XmlCommand
|
|
5
6
|
|
|
6
7
|
|
|
@@ -37,3 +38,158 @@ class AuditReport:
|
|
|
37
38
|
cmd.add_filter(filter_string, filter_id)
|
|
38
39
|
|
|
39
40
|
return cmd
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def export_audit_report(
|
|
44
|
+
cls,
|
|
45
|
+
report_id: EntityID,
|
|
46
|
+
format_id: EntityID,
|
|
47
|
+
*,
|
|
48
|
+
config_id: EntityID | None = None,
|
|
49
|
+
filter_string: str | None = None,
|
|
50
|
+
ignore_pagination: bool = False,
|
|
51
|
+
lean: bool = False,
|
|
52
|
+
notes_details: bool = False,
|
|
53
|
+
overrides_details: bool = False,
|
|
54
|
+
result_tags: bool = False,
|
|
55
|
+
) -> Request:
|
|
56
|
+
"""Request an asynchronous export of an audit report.
|
|
57
|
+
|
|
58
|
+
If an identical export is already pending or running, the existing
|
|
59
|
+
report export is returned instead of creating a duplicate.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
report_id: UUID of the audit report to export.
|
|
63
|
+
format_id: UUID of the report format to apply.
|
|
64
|
+
config_id: UUID of an optional report configuration.
|
|
65
|
+
filter_string: Filter term to apply while generating the report.
|
|
66
|
+
ignore_pagination: Whether pagination settings in the filter
|
|
67
|
+
should be ignored.
|
|
68
|
+
lean: Whether lean report data should be generated.
|
|
69
|
+
notes_details: Whether note details should be included.
|
|
70
|
+
overrides_details: Whether override details should be included.
|
|
71
|
+
result_tags: Whether result tags should be included.
|
|
72
|
+
|
|
73
|
+
Returns:
|
|
74
|
+
A request for the export_audit_report GMP command.
|
|
75
|
+
|
|
76
|
+
Raises:
|
|
77
|
+
RequiredArgument: If report_id is not provided.
|
|
78
|
+
"""
|
|
79
|
+
if not report_id:
|
|
80
|
+
raise RequiredArgument(
|
|
81
|
+
function=cls.export_audit_report.__name__,
|
|
82
|
+
argument="report_id",
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
cmd = XmlCommand("export_audit_report")
|
|
86
|
+
cmd.set_attribute("report_id", str(report_id))
|
|
87
|
+
cmd.set_attribute("format_id", str(format_id))
|
|
88
|
+
|
|
89
|
+
if config_id:
|
|
90
|
+
cmd.set_attribute("config_id", str(config_id))
|
|
91
|
+
|
|
92
|
+
if filter_string is not None:
|
|
93
|
+
cmd.set_attribute("filter", filter_string)
|
|
94
|
+
|
|
95
|
+
cmd.set_attribute(
|
|
96
|
+
"ignore_pagination",
|
|
97
|
+
to_bool(ignore_pagination),
|
|
98
|
+
)
|
|
99
|
+
cmd.set_attribute("lean", to_bool(lean))
|
|
100
|
+
cmd.set_attribute(
|
|
101
|
+
"notes_details",
|
|
102
|
+
to_bool(notes_details),
|
|
103
|
+
)
|
|
104
|
+
cmd.set_attribute(
|
|
105
|
+
"overrides_details",
|
|
106
|
+
to_bool(overrides_details),
|
|
107
|
+
)
|
|
108
|
+
cmd.set_attribute(
|
|
109
|
+
"result_tags",
|
|
110
|
+
to_bool(result_tags),
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
return cmd
|
|
114
|
+
|
|
115
|
+
@classmethod
|
|
116
|
+
def export_delta_audit_report(
|
|
117
|
+
cls,
|
|
118
|
+
report_id: EntityID,
|
|
119
|
+
delta_report_id: EntityID,
|
|
120
|
+
format_id: EntityID,
|
|
121
|
+
*,
|
|
122
|
+
config_id: EntityID | None = None,
|
|
123
|
+
filter_string: str | None = None,
|
|
124
|
+
ignore_pagination: bool = False,
|
|
125
|
+
lean: bool = False,
|
|
126
|
+
notes_details: bool = False,
|
|
127
|
+
overrides_details: bool = False,
|
|
128
|
+
result_tags: bool = False,
|
|
129
|
+
) -> Request:
|
|
130
|
+
"""Request an asynchronous export of a delta audit report.
|
|
131
|
+
|
|
132
|
+
If an identical export is already pending or running, the existing
|
|
133
|
+
report export is returned instead of creating a duplicate.
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
report_id: UUID of the audit report to export.
|
|
137
|
+
delta_report_id: UUID of the report used for delta comparison.
|
|
138
|
+
format_id: UUID of the report format to apply.
|
|
139
|
+
config_id: UUID of an optional report configuration.
|
|
140
|
+
filter_string: Filter term to apply while generating the report.
|
|
141
|
+
ignore_pagination: Whether pagination settings in the filter
|
|
142
|
+
should be ignored.
|
|
143
|
+
lean: Whether lean report data should be generated.
|
|
144
|
+
notes_details: Whether note details should be included.
|
|
145
|
+
overrides_details: Whether override details should be included.
|
|
146
|
+
result_tags: Whether result tags should be included.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
A request for the export_delta_audit_report GMP command.
|
|
150
|
+
|
|
151
|
+
Raises:
|
|
152
|
+
RequiredArgument: If report_id or delta_report_id is not provided.
|
|
153
|
+
"""
|
|
154
|
+
if not report_id:
|
|
155
|
+
raise RequiredArgument(
|
|
156
|
+
function=cls.export_delta_audit_report.__name__,
|
|
157
|
+
argument="report_id",
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
if not delta_report_id:
|
|
161
|
+
raise RequiredArgument(
|
|
162
|
+
function=cls.export_delta_audit_report.__name__,
|
|
163
|
+
argument="delta_report_id",
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
cmd = XmlCommand("export_delta_audit_report")
|
|
167
|
+
cmd.set_attribute("report_id", str(report_id))
|
|
168
|
+
cmd.set_attribute("delta_report_id", str(delta_report_id))
|
|
169
|
+
cmd.set_attribute("format_id", str(format_id))
|
|
170
|
+
|
|
171
|
+
if config_id:
|
|
172
|
+
cmd.set_attribute("config_id", str(config_id))
|
|
173
|
+
|
|
174
|
+
if filter_string is not None:
|
|
175
|
+
cmd.set_attribute("filter", filter_string)
|
|
176
|
+
|
|
177
|
+
cmd.set_attribute(
|
|
178
|
+
"ignore_pagination",
|
|
179
|
+
to_bool(ignore_pagination),
|
|
180
|
+
)
|
|
181
|
+
cmd.set_attribute("lean", to_bool(lean))
|
|
182
|
+
cmd.set_attribute(
|
|
183
|
+
"notes_details",
|
|
184
|
+
to_bool(notes_details),
|
|
185
|
+
)
|
|
186
|
+
cmd.set_attribute(
|
|
187
|
+
"overrides_details",
|
|
188
|
+
to_bool(overrides_details),
|
|
189
|
+
)
|
|
190
|
+
cmd.set_attribute(
|
|
191
|
+
"result_tags",
|
|
192
|
+
to_bool(result_tags),
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
return cmd
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2026 Greenbone AG
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
|
|
5
|
+
from gvm.errors import RequiredArgument
|
|
6
|
+
from gvm.protocols.core import Request
|
|
7
|
+
from gvm.protocols.gmp.requests import EntityID
|
|
8
|
+
from gvm.xml import XmlCommand
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ReportExports:
|
|
12
|
+
@classmethod
|
|
13
|
+
def get_report_exports(
|
|
14
|
+
cls,
|
|
15
|
+
) -> Request:
|
|
16
|
+
"""Request report exports.
|
|
17
|
+
|
|
18
|
+
The command requests a list of report exports.
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
A request for the get_report_exports GMP command.
|
|
22
|
+
"""
|
|
23
|
+
cmd = XmlCommand("get_report_exports")
|
|
24
|
+
|
|
25
|
+
return cmd
|
|
26
|
+
|
|
27
|
+
@classmethod
|
|
28
|
+
def get_report_export(
|
|
29
|
+
cls,
|
|
30
|
+
report_export_id: EntityID,
|
|
31
|
+
) -> Request:
|
|
32
|
+
"""Request a single report export.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
report_export_id: UUID of the report export.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
A request for the get_report_exports GMP command.
|
|
39
|
+
|
|
40
|
+
Raises:
|
|
41
|
+
RequiredArgument: If report_export_id is not provided.
|
|
42
|
+
"""
|
|
43
|
+
if not report_export_id:
|
|
44
|
+
raise RequiredArgument(
|
|
45
|
+
function=cls.get_report_export.__name__,
|
|
46
|
+
argument="report_export_id",
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
cmd = XmlCommand("get_report_exports")
|
|
50
|
+
cmd.set_attribute(
|
|
51
|
+
"report_export_id",
|
|
52
|
+
str(report_export_id),
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
return cmd
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def download_report_export(
|
|
59
|
+
cls,
|
|
60
|
+
report_export_id: EntityID,
|
|
61
|
+
) -> Request:
|
|
62
|
+
"""Request a download report export.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
report_export_id: UUID of the report export.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
A request for the download_report_export GMP command.
|
|
69
|
+
|
|
70
|
+
Raises:
|
|
71
|
+
RequiredArgument: If report_export_id is not provided.
|
|
72
|
+
"""
|
|
73
|
+
if not report_export_id:
|
|
74
|
+
raise RequiredArgument(
|
|
75
|
+
function=cls.get_report_export.__name__,
|
|
76
|
+
argument="report_export_id",
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
cmd = XmlCommand("download_report_export")
|
|
80
|
+
cmd.set_attribute(
|
|
81
|
+
"report_export_id",
|
|
82
|
+
str(report_export_id),
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
return cmd
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2026 Greenbone AG
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
|
|
1
5
|
from gvm.errors import RequiredArgument
|
|
2
6
|
from gvm.protocols.core import Request
|
|
3
7
|
from gvm.protocols.gmp.requests import EntityID
|
|
@@ -111,3 +115,85 @@ class ScanReports:
|
|
|
111
115
|
)
|
|
112
116
|
|
|
113
117
|
return cmd
|
|
118
|
+
|
|
119
|
+
@classmethod
|
|
120
|
+
def export_delta_scan_report(
|
|
121
|
+
cls,
|
|
122
|
+
report_id: EntityID,
|
|
123
|
+
delta_report_id: EntityID,
|
|
124
|
+
format_id: EntityID,
|
|
125
|
+
*,
|
|
126
|
+
config_id: EntityID | None = None,
|
|
127
|
+
filter_string: str | None = None,
|
|
128
|
+
ignore_pagination: bool = False,
|
|
129
|
+
lean: bool = False,
|
|
130
|
+
notes_details: bool = False,
|
|
131
|
+
overrides_details: bool = False,
|
|
132
|
+
result_tags: bool = False,
|
|
133
|
+
) -> Request:
|
|
134
|
+
"""Request an asynchronous export of a delta scan report.
|
|
135
|
+
|
|
136
|
+
If an identical export is already pending or running, the existing
|
|
137
|
+
report export is returned instead of creating a duplicate.
|
|
138
|
+
|
|
139
|
+
Args:
|
|
140
|
+
report_id: UUID of the scan report to export.
|
|
141
|
+
delta_report_id: UUID of the report used for delta comparison.
|
|
142
|
+
format_id: UUID of the report format to apply.
|
|
143
|
+
config_id: UUID of an optional report configuration.
|
|
144
|
+
filter_string: Filter term to apply while generating the report.
|
|
145
|
+
ignore_pagination: Whether pagination settings in the filter
|
|
146
|
+
should be ignored.
|
|
147
|
+
lean: Whether lean report data should be generated.
|
|
148
|
+
notes_details: Whether note details should be included.
|
|
149
|
+
overrides_details: Whether override details should be included.
|
|
150
|
+
result_tags: Whether result tags should be included.
|
|
151
|
+
|
|
152
|
+
Returns:
|
|
153
|
+
A request for the export_delta_scan_report GMP command.
|
|
154
|
+
|
|
155
|
+
Raises:
|
|
156
|
+
RequiredArgument: If report_id or delta_report_id is not provided.
|
|
157
|
+
"""
|
|
158
|
+
if not report_id:
|
|
159
|
+
raise RequiredArgument(
|
|
160
|
+
function=cls.export_delta_scan_report.__name__,
|
|
161
|
+
argument="report_id",
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
if not delta_report_id:
|
|
165
|
+
raise RequiredArgument(
|
|
166
|
+
function=cls.export_delta_scan_report.__name__,
|
|
167
|
+
argument="delta_report_id",
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
cmd = XmlCommand("export_delta_scan_report")
|
|
171
|
+
cmd.set_attribute("report_id", str(report_id))
|
|
172
|
+
cmd.set_attribute("delta_report_id", str(delta_report_id))
|
|
173
|
+
cmd.set_attribute("format_id", str(format_id))
|
|
174
|
+
|
|
175
|
+
if config_id:
|
|
176
|
+
cmd.set_attribute("config_id", str(config_id))
|
|
177
|
+
|
|
178
|
+
if filter_string is not None:
|
|
179
|
+
cmd.set_attribute("filter", filter_string)
|
|
180
|
+
|
|
181
|
+
cmd.set_attribute(
|
|
182
|
+
"ignore_pagination",
|
|
183
|
+
to_bool(ignore_pagination),
|
|
184
|
+
)
|
|
185
|
+
cmd.set_attribute("lean", to_bool(lean))
|
|
186
|
+
cmd.set_attribute(
|
|
187
|
+
"notes_details",
|
|
188
|
+
to_bool(notes_details),
|
|
189
|
+
)
|
|
190
|
+
cmd.set_attribute(
|
|
191
|
+
"overrides_details",
|
|
192
|
+
to_bool(overrides_details),
|
|
193
|
+
)
|
|
194
|
+
cmd.set_attribute(
|
|
195
|
+
"result_tags",
|
|
196
|
+
to_bool(result_tags),
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
return cmd
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: python-gvm
|
|
3
|
-
Version: 27.
|
|
3
|
+
Version: 27.9.0
|
|
4
4
|
Summary: Library to communicate with remote servers over GMP or OSP
|
|
5
5
|
Project-URL: Homepage, https://github.com/greenbone/python-gvm/
|
|
6
6
|
Project-URL: Repository, https://github.com/greenbone/python-gvm/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
gvm/__init__.py,sha256=Eu3a8hRdlixDFn34Q-BwPXVN65KHpgFk_i0CYUdbfF8,412
|
|
2
|
-
gvm/__version__.py,sha256=
|
|
2
|
+
gvm/__version__.py,sha256=WntFlSlP-2NmRB8oNTQAbOK2i4lKf0o-IzJdiurJiaI,103
|
|
3
3
|
gvm/_enum.py,sha256=n--ztwQQW2MU4M9E_4qJrw-32IGc4Laj6auZ8glMw_0,1168
|
|
4
4
|
gvm/errors.py,sha256=FnZoe3ROKlAm8LMJ25uKRaG9cp-SG8hYIVtDMwwp0l0,5263
|
|
5
5
|
gvm/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -27,29 +27,30 @@ gvm/protocols/gmp/_gmp224.py,sha256=NO-ufzkGW1RNzMHrIjlFm7r8QzSH0uRZK5xc9mWLRVI,
|
|
|
27
27
|
gvm/protocols/gmp/_gmp225.py,sha256=3lz_AHTIQdBEr4DIYJ5o9D0Eke-Df3jUb0IZytITRdo,2227
|
|
28
28
|
gvm/protocols/gmp/_gmp226.py,sha256=YqQ7CJIbUtM7s8wQPYX5BgePdhX-tUjCemanW0_DZtE,14543
|
|
29
29
|
gvm/protocols/gmp/_gmp227.py,sha256=-q4Aci1I4FRtLle21qTwtkchE2ixWn1-Kug58X4dU5I,5713
|
|
30
|
-
gvm/protocols/gmp/_gmpnext.py,sha256
|
|
30
|
+
gvm/protocols/gmp/_gmpnext.py,sha256=NFGsmIKtLstFvjGVPWjlBGCOol7kLGg_MNGsEy3qZ4U,72142
|
|
31
31
|
gvm/protocols/gmp/requests/__init__.py,sha256=XH1zSifyz9Rx4FqY2lJ1mwurnUepHk7REZ-fSMC_Wx0,200
|
|
32
32
|
gvm/protocols/gmp/requests/_entity_id.py,sha256=V96VhTg7_CF2AduaAHRYrGgTaOVA8_mG1lFiCl8-CMA,136
|
|
33
33
|
gvm/protocols/gmp/requests/_version.py,sha256=GdHQnEVzJ6PbxoU4pxP36Oze1XvK5llWqB9bkC16Pf8,393
|
|
34
|
-
gvm/protocols/gmp/requests/next/__init__.py,sha256=
|
|
34
|
+
gvm/protocols/gmp/requests/next/__init__.py,sha256=xUX5hpR9WJELsKwlYEO0Yq0DOlkiU3DKjhAk6EHCUds,4926
|
|
35
35
|
gvm/protocols/gmp/requests/next/_agent_groups.py,sha256=Dqa77vY2U82lG6wkLZfGMIUOHfZW9yCXkFvT3M8bFfo,6275
|
|
36
36
|
gvm/protocols/gmp/requests/next/_agent_installer_instructions.py,sha256=wh4LBJVEE3t_Og9uf5Ek_y8MxjtnTcBa2IT4u4JVXg0,1798
|
|
37
|
-
gvm/protocols/gmp/requests/next/_agents.py,sha256=
|
|
38
|
-
gvm/protocols/gmp/requests/next/_audit_report.py,sha256=
|
|
37
|
+
gvm/protocols/gmp/requests/next/_agents.py,sha256=5UZaeKDkgyM2PXrB1okFasv2ix-T2H1W0nsHh5woSew,15766
|
|
38
|
+
gvm/protocols/gmp/requests/next/_audit_report.py,sha256=VKki5YPnSGpKln3v-iAvieKWRqGXhWyJDyiHmET_n6o,6542
|
|
39
39
|
gvm/protocols/gmp/requests/next/_credential_stores.py,sha256=wgixeHhls_Nvd7lYPE3mra_2vtWFZscm8HCwy4UgUNg,5691
|
|
40
40
|
gvm/protocols/gmp/requests/next/_credentials.py,sha256=9iI2F4rp6TtQdM-OXS9IKN09SZRRLxYeBMcZs-Heo1Q,6107
|
|
41
|
-
gvm/protocols/gmp/requests/next/_integration_configs.py,sha256=
|
|
41
|
+
gvm/protocols/gmp/requests/next/_integration_configs.py,sha256=aBG9V4RsqDQ0usGgVKcrGAcCVt1XRgj0yXT0jd4-3vI,3806
|
|
42
42
|
gvm/protocols/gmp/requests/next/_oci_image_targets.py,sha256=rN2kzbJloFDxZsWsfNz2eJDlCZs33kHktPRA9weNLWM,5830
|
|
43
|
-
gvm/protocols/gmp/requests/next/_report_applications.py,sha256=
|
|
44
|
-
gvm/protocols/gmp/requests/next/_report_closed_cves.py,sha256=
|
|
45
|
-
gvm/protocols/gmp/requests/next/_report_cves.py,sha256=
|
|
46
|
-
gvm/protocols/gmp/requests/next/_report_errors.py,sha256=
|
|
47
|
-
gvm/protocols/gmp/requests/next/
|
|
48
|
-
gvm/protocols/gmp/requests/next/
|
|
49
|
-
gvm/protocols/gmp/requests/next/
|
|
50
|
-
gvm/protocols/gmp/requests/next/
|
|
51
|
-
gvm/protocols/gmp/requests/next/
|
|
52
|
-
gvm/protocols/gmp/requests/next/
|
|
43
|
+
gvm/protocols/gmp/requests/next/_report_applications.py,sha256=DruCnJFQikolIUcDYVd708P7Y176Y1OxIqckPxvgKKE,1628
|
|
44
|
+
gvm/protocols/gmp/requests/next/_report_closed_cves.py,sha256=k_qCWbbveRVmQ7tDENDUeBEDVtjtnNqf_eZm0RvO1Ik,1335
|
|
45
|
+
gvm/protocols/gmp/requests/next/_report_cves.py,sha256=9bNJ9V71DHU0Kw5Shy6SSz2OTs9m_H50-F1TLS1K_hg,1562
|
|
46
|
+
gvm/protocols/gmp/requests/next/_report_errors.py,sha256=ycMHlQM30pMfSLdtroLcJECVPrbNSM6qNeCRoQYo1vA,1574
|
|
47
|
+
gvm/protocols/gmp/requests/next/_report_exports.py,sha256=5MXbQV9auEBncTmtg2eeFvMYwwSD1Yw5DrTScpy5lJ4,2133
|
|
48
|
+
gvm/protocols/gmp/requests/next/_report_hosts.py,sha256=oDgqQNO81lSFSO5pNGHdQQAquRQm8mCKW-Q8pQeBr_Y,2855
|
|
49
|
+
gvm/protocols/gmp/requests/next/_report_operating_systems.py,sha256=NhIoV7hXk-05yqeb0Yvl0zMpak6noiSSeJOq7-Qf36k,1657
|
|
50
|
+
gvm/protocols/gmp/requests/next/_report_ports.py,sha256=l99zgCuMbUmlDu3JshYHxJckvddP7yG7CvnBHWrqZjI,1568
|
|
51
|
+
gvm/protocols/gmp/requests/next/_report_tls_certificates.py,sha256=8xumwRIS6yqOSefePkIdH4Xta6eKeaGbESe6pDFYtCk,1650
|
|
52
|
+
gvm/protocols/gmp/requests/next/_report_vulnerabilities.py,sha256=qQxBu-Js8F7bO5xGDA5W6LDB3JuAGigzvp6Y_f_gSX0,1634
|
|
53
|
+
gvm/protocols/gmp/requests/next/_scan_report.py,sha256=jXNNvFxqBGqHOwUNnNIyDOtTUNdW7Bl9u23SSyqo--0,6606
|
|
53
54
|
gvm/protocols/gmp/requests/next/_targets.py,sha256=EIiYyPNrzflxjr3pmY0ZT25KSHn-ISERD3IfrzVauZI,12707
|
|
54
55
|
gvm/protocols/gmp/requests/next/_tasks.py,sha256=4faG2a3wey9-fj-el4TiAwBUbu4H8M7EZ9WyO3SJ0QM,27016
|
|
55
56
|
gvm/protocols/gmp/requests/next/_web_application_targets.py,sha256=03EYFVXKmVf0ZS_CTaXGsD-ALclSu9Hc2hm6p0LLV8o,6563
|
|
@@ -115,7 +116,7 @@ gvm/protocols/http/openvasd/_notus.py,sha256=FwX5fFsx-FWXf4Rl_5seequkQ6XVS8jZ0NW
|
|
|
115
116
|
gvm/protocols/http/openvasd/_openvasd1.py,sha256=VS-fErATsT25SJxk0UVQRFETJ5OtGnrhk8aNsFqs7Ew,4074
|
|
116
117
|
gvm/protocols/http/openvasd/_scans.py,sha256=U8aYmHudMQFtVzl9khjNsRRewY0sf8G376zTYZN6HQQ,16667
|
|
117
118
|
gvm/protocols/http/openvasd/_vts.py,sha256=_T4j4SdXe0DthBA7pCehx4FXKYbQyhzpq72YNO4fKt4,2136
|
|
118
|
-
python_gvm-27.
|
|
119
|
-
python_gvm-27.
|
|
120
|
-
python_gvm-27.
|
|
121
|
-
python_gvm-27.
|
|
119
|
+
python_gvm-27.9.0.dist-info/METADATA,sha256=tR2Sx1kYd7-LcQ4XgXfWjhwTT24Z6MEoeaWgMlDNZgw,5699
|
|
120
|
+
python_gvm-27.9.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
121
|
+
python_gvm-27.9.0.dist-info/licenses/LICENSE,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
|
|
122
|
+
python_gvm-27.9.0.dist-info/RECORD,,
|
|
File without changes
|