def run(self, case_id, task_name, status): api = TheHiveApiExtended(self.config['thehive_url'], self.config['thehive_api_key']) response = api.get_case_tasks(case_id, query=Eq('title', task_name)) if response.status_code == 200: tasks = response.json() if len(tasks) == 1: task_id = tasks[0]['id'] else: raise ValueError('[ChangeStatusTaskByNameAction]: task not found') else: raise ValueError('[ChangeStatusTaskByNameAction]: tasks status_code %d' % response.status_code) response = api.get_task(task_id) if response.status_code == 200: task_object = response.json() task = CaseTask(json=task_object) task.id = task_id task.status = status task.owner = self.config['thehive_bot_username'] api.update_case_task(task) else: raise ValueError('[ChangeStatusTaskByNameAction]: status_code %d' % response.status_code) return True
async def update_case_task(self, url, api_key, task_id, title=None, description=None, status=None, flag=None): self.logger.info(f'Updating task {task_id} in TheHive...') if not url.startswith("http"): url = f"http://{url}" api = TheHiveApi(url, api_key) task = CaseTask(**api.get_case_task(task_id).json()) task.id = task_id if title: task.title = title if description: task.description = description if status: task.status = status if flag is not None: task.flag = flag r = api.update_case_task(task) if r.status_code == 200: return r.json() else: raise IOError(r.text)
def run(self, task_id, status): api = TheHiveApiExtended(self.config['thehive_url'], self.config['thehive_api_key']) response = api.get_task(task_id) if response.status_code == 200: task_object = response.json() task = CaseTask(json=task_object) task.id = task_id task.status = status task.owner = self.config['thehive_bot_username'] api.update_case_task(task) else: raise ValueError('[ChangeStatusTaskAction]: status_code %d' % response.status_code) return True
def run(self, task_id): api = TheHiveApi(self.config['thehive_url'], self.config['thehive_api_key']) response = api.find_tasks(query=Eq('_id', task_id)) if response.status_code == 200: tasks = response.json() if len(tasks) == 1: task = CaseTask(json=tasks[0]) task.id = task_id task.status = 'InProgress' task.owner = self.config['thehive_bot_username'] api.update_case_task(task) else: raise ValueError('[TakeTaskAction]: no tasks with this id') else: raise ValueError('[TakeTaskAction]: status_code %d' % response.status_code) return True
def run(self, job_id, status): task_id = self.action_service.get_value( name='thehive_job_{}'.format(job_id), local=False) api = TheHiveApiExtended(self.config['thehive_url'], self.config['thehive_api_key']) response = api.get_task(task_id) if response.status_code == 200: task_object = response.json() task = CaseTask(json=task_object) task.id = task_id task.status = status task.owner = self.config['thehive_bot_username'] api.update_case_task(task) if status == 'Completed': self.action_service.delete_value( name='thehive_job_{}'.format(job_id), local=False) else: raise ValueError( '[ChangeStatusTaskByJobIdAction]: status_code %d' % response.status_code) return True