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