Source code for tenable.nessus.editor

'''
Editor
======

Methods described in this section relate to the the editor API.
These methods can be accessed at ``Nessus.editor``.

.. rst-class:: hide-signature
.. autoclass:: EditorAPI
    :members:
'''
from io import BytesIO
from typing import Dict, List
from typing_extensions import Literal
from tenable.base.endpoint import APIEndpoint


[docs]class EditorAPI(APIEndpoint): # noqa PLC0115 _path = 'editor'
[docs] def export_audit(self, object_type: Literal['scan', 'policy'], object_id: int, file_id: int, **kwargs ) -> BytesIO: ''' Exports the given audit file. from the scan or policy Args: object_type (str): The object type (either scan or policy). object_id (int): The id of the object to export from. file_id (int): The id of the audit file to export. fobj (BytexIO, optional): The file object to write the exported file to. If none is specified then a BytesIO object is written to in memory. chunk_size (int, optional): The chunk sizing for the download itself. stream_hook (callable, optional): Overload the default downloading behavior with a custom stream hook. hook_kwargs (dict, optional): keyword arguments to pass to the stream_hook callable in addition to the default passed params. Returns: BytesIO: The file object of the requested audit file. Example: >>> with open('example.audit', 'wb') as audit_file: ... nessus.editor.export_audit('policy', 1, 1, fobj=audit_file) ''' token = self._get(f'{object_type}/{object_id}/audits/{file_id}/prepare' )['token'] return self._api.tokens._fetch(token, **kwargs) # noqa PLW0212
[docs] def template_details(self, object_type: Literal['scan', 'policy'], template_uuid: str ) -> Dict: ''' Returns the template object requested. Args: object_type (str): The type of the object requested (either scan, or policy). template_uuid (str): The UUID of the template to fetch. Returns: Dict: The editor object for the requested template. Example: >>> nessus.editor.template_details( ... 'scan', '00000000-0000-0000-000000000000') ''' return self._get(f'{object_type}/templates/{template_uuid}')
[docs] def details(self, object_type: Literal['scan', 'policy'], object_id: int ) -> Dict: ''' Returns the object requested. Args: object_type (str): The type of the object requested (either scan or policy). object_id (int): The id of the object to fetch. Returns: Dict: The editor object for the requested item. Example: >>> nessus.editor.details('scan', 1) ''' return self._get(f'{object_type}/{object_id}')
[docs] def template_list(self, object_type: Literal['scan', 'policy'] ) -> List[Dict]: ''' Returns the list of template objects. Args: object_type (str): The type of templates to return (either scan or policy). Returns: List[Dict]: List of template summaries. Example: >>> for tmpl in nessus.editor.template_list('scan'): ... print(tmpl) ''' return self._get(f'{object_type}/templates')['templates']
[docs] def plugin_description(self, policy_id: int, family_id: int, plugin_id: int ) -> Dict: ''' Returns the plugin description. Args: policy_id (int): The id of the policy to lookup. family_id (int): The id of the plugin family to lookup. plugin_id (int): The id of the plugin to lookup within the family. Returns: Dict: The plugin description. Example: >>> nessus.editor.plugin_description(1, 1, 19506) ''' return self._get((f'policy/{policy_id}/' f'families/{family_id}/' f'plugins/{plugin_id}' ))['plugindescription']