def clear(agent_id=None, all_agents=False): """ Clears the database. :param agent_id: For an agent. :param all_agents: For all agents. :return: Message. """ # Clear DB conn = Connection(common.database_path) regex = re.compile(r'^\d{,3}-\S+$') db_agents_list = [] if not int(all_agents): raw_str = r'^' + "{}".format(int(agent_id)).zfill(3) + r'-\S+$' regex = re.compile(raw_str) for db_agent in conn.getDbsName(): if (regex.search(db_agent) != None): db_agents_list.append(db_agent) if (db_agents_list.count() <= 0): raise OssecAPIException(1600) for db_agent in db_agents_list: conn.connect(db_agent) if conn.getDb() != None: doc = conn.getDb()['pm_event'] if doc != None: doc.drop() conn.vacuum() doc = conn.getDb()['pmCounterInfo'] if doc != None: doc.drop() conn.vacuum() # Clear OSSEC info if int(all_agents): rootcheck_files = glob('{0}/queue/rootcheck/*'.format( common.ossec_path)) else: if agent_id == "000": rootcheck_files = [ '{0}/queue/rootcheck/rootcheck'.format(common.ossec_path) ] else: agent_info = Agent(agent_id).get_basic_information() rootcheck_files = glob( '{0}/queue/rootcheck/({1}) {2}->rootcheck'.format( common.ossec_path, agent_info['name'], agent_info['ip'])) for rootcheck_file in rootcheck_files: if path.exists(rootcheck_file): remove(rootcheck_file) return "Rootcheck database deleted"