@@ 32-122 (lines=91) @@ | ||
29 | ||
30 | ||
31 | class OverridesMixin: |
|
32 | def create_override( |
|
33 | self, |
|
34 | text: str, |
|
35 | nvt_oid: str, |
|
36 | *, |
|
37 | days_active: Optional[int] = None, |
|
38 | hosts: Optional[List[str]] = None, |
|
39 | port: Optional[int] = None, |
|
40 | result_id: Optional[str] = None, |
|
41 | severity: Optional[Severity] = None, |
|
42 | new_severity: Optional[Severity] = None, |
|
43 | task_id: Optional[str] = None, |
|
44 | threat: Optional[SeverityLevel] = None, |
|
45 | new_threat: Optional[SeverityLevel] = None, |
|
46 | ) -> Any: |
|
47 | """Create a new override |
|
48 | ||
49 | Arguments: |
|
50 | text: Text of the new override |
|
51 | nvt_id: OID of the nvt to which override applies |
|
52 | days_active: Days override will be active. -1 on always, 0 off |
|
53 | hosts: A list of host addresses |
|
54 | port: Port to which the override applies |
|
55 | result_id: UUID of a result to which override applies |
|
56 | severity: Severity to which override applies |
|
57 | new_severity: New severity for result |
|
58 | task_id: UUID of task to which override applies |
|
59 | threat: Severity level to which override applies. Will be converted |
|
60 | to severity. |
|
61 | new_threat: New severity level for results. Will be converted to |
|
62 | new_severity. |
|
63 | ||
64 | Returns: |
|
65 | The response. See :py:meth:`send_command` for details. |
|
66 | """ |
|
67 | if not text: |
|
68 | raise RequiredArgument( |
|
69 | function=self.create_override.__name__, argument='text' |
|
70 | ) |
|
71 | ||
72 | if not nvt_oid: |
|
73 | raise RequiredArgument( |
|
74 | function=self.create_override.__name__, argument='nvt_oid' |
|
75 | ) |
|
76 | ||
77 | cmd = XmlCommand("create_override") |
|
78 | cmd.add_element("text", text) |
|
79 | cmd.add_element("nvt", attrs={"oid": nvt_oid}) |
|
80 | ||
81 | if days_active is not None: |
|
82 | cmd.add_element("active", str(days_active)) |
|
83 | ||
84 | if hosts: |
|
85 | cmd.add_element("hosts", to_comma_list(hosts)) |
|
86 | ||
87 | if port: |
|
88 | cmd.add_element("port", str(port)) |
|
89 | ||
90 | if result_id: |
|
91 | cmd.add_element("result", attrs={"id": result_id}) |
|
92 | ||
93 | if severity: |
|
94 | cmd.add_element("severity", str(severity)) |
|
95 | ||
96 | if new_severity: |
|
97 | cmd.add_element("new_severity", str(new_severity)) |
|
98 | ||
99 | if task_id: |
|
100 | cmd.add_element("task", attrs={"id": task_id}) |
|
101 | ||
102 | if threat is not None: |
|
103 | if not isinstance(threat, SeverityLevel): |
|
104 | raise InvalidArgumentType( |
|
105 | function=self.create_override.__name__, |
|
106 | argument="threat", |
|
107 | arg_type=SeverityLevel.__name__, |
|
108 | ) |
|
109 | ||
110 | cmd.add_element("threat", threat.value) |
|
111 | ||
112 | if new_threat is not None: |
|
113 | if not isinstance(new_threat, SeverityLevel): |
|
114 | raise InvalidArgumentType( |
|
115 | function=self.create_override.__name__, |
|
116 | argument="new_threat", |
|
117 | arg_type=SeverityLevel.__name__, |
|
118 | ) |
|
119 | ||
120 | cmd.add_element("new_threat", new_threat.value) |
|
121 | ||
122 | return self._send_xml_command(cmd) |
|
123 | ||
124 | def clone_override(self, override_id: str) -> Any: |
|
125 | """Clone an existing override |
|
@@ 215-304 (lines=90) @@ | ||
212 | cmd.set_attribute("details", "1") |
|
213 | return self._send_xml_command(cmd) |
|
214 | ||
215 | def modify_override( |
|
216 | self, |
|
217 | override_id: str, |
|
218 | text: str, |
|
219 | *, |
|
220 | days_active: Optional[int] = None, |
|
221 | hosts: Optional[List[str]] = None, |
|
222 | port: Optional[int] = None, |
|
223 | result_id: Optional[str] = None, |
|
224 | severity: Optional[Severity] = None, |
|
225 | new_severity: Optional[Severity] = None, |
|
226 | task_id: Optional[str] = None, |
|
227 | threat: Optional[SeverityLevel] = None, |
|
228 | new_threat: Optional[SeverityLevel] = None, |
|
229 | ) -> Any: |
|
230 | """Modifies an existing override. |
|
231 | ||
232 | Arguments: |
|
233 | override_id: UUID of override to modify. |
|
234 | text: The text of the override. |
|
235 | days_active: Days override will be active. -1 on always, |
|
236 | 0 off. |
|
237 | hosts: A list of host addresses |
|
238 | port: Port to which override applies. |
|
239 | result_id: Result to which override applies. |
|
240 | severity: Severity to which override applies. |
|
241 | new_severity: New severity score for result. |
|
242 | task_id: Task to which override applies. |
|
243 | threat: Threat level to which override applies. |
|
244 | Will be converted to severity. |
|
245 | new_threat: New threat level for results. Will be converted to |
|
246 | new_severity. |
|
247 | ||
248 | Returns: |
|
249 | The response. See :py:meth:`send_command` for details. |
|
250 | """ |
|
251 | if not override_id: |
|
252 | raise RequiredArgument( |
|
253 | function=self.modify_override.__name__, argument='override_id' |
|
254 | ) |
|
255 | if not text: |
|
256 | raise RequiredArgument( |
|
257 | function=self.modify_override.__name__, argument='text' |
|
258 | ) |
|
259 | ||
260 | cmd = XmlCommand("modify_override") |
|
261 | cmd.set_attribute("override_id", override_id) |
|
262 | cmd.add_element("text", text) |
|
263 | ||
264 | if days_active is not None: |
|
265 | cmd.add_element("active", str(days_active)) |
|
266 | ||
267 | if hosts: |
|
268 | cmd.add_element("hosts", to_comma_list(hosts)) |
|
269 | ||
270 | if port: |
|
271 | cmd.add_element("port", str(port)) |
|
272 | ||
273 | if result_id: |
|
274 | cmd.add_element("result", attrs={"id": result_id}) |
|
275 | ||
276 | if severity: |
|
277 | cmd.add_element("severity", str(severity)) |
|
278 | ||
279 | if new_severity: |
|
280 | cmd.add_element("new_severity", str(new_severity)) |
|
281 | ||
282 | if task_id: |
|
283 | cmd.add_element("task", attrs={"id": task_id}) |
|
284 | ||
285 | if threat is not None: |
|
286 | if not isinstance(threat, SeverityLevel): |
|
287 | raise InvalidArgumentType( |
|
288 | function=self.modify_override.__name__, |
|
289 | argument='threat', |
|
290 | arg_type=SeverityLevel.__name__, |
|
291 | ) |
|
292 | cmd.add_element("threat", threat.value) |
|
293 | ||
294 | if new_threat is not None: |
|
295 | if not isinstance(new_threat, SeverityLevel): |
|
296 | raise InvalidArgumentType( |
|
297 | function=self.modify_override.__name__, |
|
298 | argument='new_threat', |
|
299 | arg_type=SeverityLevel.__name__, |
|
300 | ) |
|
301 | ||
302 | cmd.add_element("new_threat", new_threat.value) |
|
303 | ||
304 | return self._send_xml_command(cmd) |
|
305 |