def get_refs_vt_as_xml_str(vt_id, vt_refs): """ Return an xml element with references formatted as string.""" vt_refs_xml = Element('vt_refs') for ref_type, ref_values in vt_refs.items(): for value in ref_values: vt_ref = Element('ref') if ref_type == "xref" and value: for xref in value.split(', '): try: _type, _id = xref.split(':', 1) except ValueError: logger.error( 'Not possible to parse xref %s for vt %s' % (xref, vt_id)) continue vt_ref.set('type', _type.lower()) vt_ref.set('id', _id) elif value: vt_ref.set('type', ref_type.lower()) vt_ref.set('id', value) else: continue vt_refs_xml.append(vt_ref) refs_list = vt_refs_xml.findall("ref") refs = '' for ref in refs_list: refs += (tostring(ref).decode('utf-8')) return refs
def __init__(self, certfile, keyfile, cafile): """ Initializes the ospd-openvas daemon's internal data. """ super(OSPDopenvas, self).__init__(certfile=certfile, keyfile=keyfile, cafile=cafile) self.server_version = __version__ self.scanner_info['name'] = 'openvassd' self.scanner_info['version'] = '' # achieved during self.check() self.scanner_info['description'] = OSPD_DESC for name, param in OSPD_PARAMS.items(): self.add_scanner_param(name, param) if openvas_db.db_init() is False: logger.error('OpenVAS Redis Error: Not possible ' 'to find db_connection.') raise Exception self.pending_feed = None ctx = openvas_db.db_find(nvti.NVTICACHE_STR) if not ctx: self.redis_nvticache_init() ctx = openvas_db.db_find(nvti.NVTICACHE_STR) openvas_db.set_global_redisctx(ctx) self.load_vts()
def get_refs_vt_as_xml_str(vt_id, vt_refs): """ Return an xml element with references formatted as string. Arguments: vt_id (str): VT OID. Only used for logging in error case. vt_refs (dict): Dictionary with the VT references. Return: string: xml element as string. """ vt_refs_xml = Element('vt_refs') for ref_type, ref_values in vt_refs.items(): for value in ref_values: vt_ref = Element('ref') if ref_type == "xref" and value: for xref in value.split(', '): try: _type, _id = xref.split(':', 1) except ValueError: logger.error( 'Not possible to parse xref %s for vt %s' % (xref, vt_id)) continue vt_ref.set('type', _type.lower()) vt_ref.set('id', _id) elif value: vt_ref.set('type', ref_type.lower()) vt_ref.set('id', value) else: continue vt_refs_xml.append(vt_ref) return tostring(vt_refs_xml).decode('utf-8')
def redis_nvticache_init(self): """ Loads NVT's metadata into Redis DB. """ try: logger.debug('Loading NVTs in Redis DB') subprocess.check_call(['openvassd', '-C']) except subprocess.CalledProcessError as err: logger.error('OpenVAS Scanner failed to load NVTs.') raise err
def get_dependencies_vt_as_xml_str(vt_id, dep_list): """ Return an xml element with dependencies as string.""" vt_deps_xml = Element('vt_deps') for dep in dep_list: _vt_dep = Element('dependency') try: _vt_dep.set('vt_id', dep) except TypeError: logger.error('Not possible to add dependency %s for vt %s' % (dep, vt_id)) continue vt_deps_xml.append(_vt_dep) _deps_list = vt_deps_xml.findall("dependency") deps = '' for _dep in _deps_list: deps += (tostring(_dep).decode('utf-8')) return deps
def get_dependencies_vt_as_xml_str(vt_id, dep_list): """ Return an xml element with dependencies as string. Arguments: vt_id (str): VT OID. Only used for logging in error case. dep_list (List): List with the VT dependencies. Return: string: xml element as string. """ vt_deps_xml = Element('dependencies') for dep in dep_list: _vt_dep = Element('dependency') try: _vt_dep.set('vt_id', dep) except TypeError: logger.error('Not possible to add dependency %s for vt %s' % (dep, vt_id)) continue vt_deps_xml.append(_vt_dep) return tostring(vt_deps_xml).decode('utf-8')