diff --git a/bin/core/ail_2_ail.py b/bin/core/ail_2_ail.py index 530cfa87..780698fc 100755 --- a/bin/core/ail_2_ail.py +++ b/bin/core/ail_2_ail.py @@ -141,7 +141,10 @@ def is_server_client_sync_mode_connected(ail_uuid, sync_mode): return res == 1 def is_server_client_connected(ail_uuid): - return r_cache.sismember('ail_2_ail:server:all_clients', ail_uuid) + try: + return r_cache.sismember('ail_2_ail:server:all_clients', ail_uuid) + except: + return False def clear_server_connected_clients(): for ail_uuid in get_server_all_connected_clients(): @@ -398,7 +401,10 @@ def get_all_ail_instance_keys(): return r_serv_sync.smembers(f'ail:instance:key:all') def is_allowed_ail_instance_key(key): - return r_serv_sync.sismember(f'ail:instance:key:all', key) + try: + return r_serv_sync.sismember(f'ail:instance:key:all', key) + except: + return False def get_ail_instance_key(ail_uuid): return r_serv_sync.hget(f'ail:instance:{ail_uuid}', 'api_key') @@ -427,7 +433,10 @@ def get_ail_instance_all_sync_queue(ail_uuid): return r_serv_sync.smembers(f'ail:instance:sync_queue:{ail_uuid}') def is_ail_instance_queue(ail_uuid, queue_uuid): - return r_serv_sync.sismember(f'ail:instance:sync_queue:{ail_uuid}', queue_uuid) + try: + return r_serv_sync.sismember(f'ail:instance:sync_queue:{ail_uuid}', queue_uuid) + except: + return False def exists_ail_instance(ail_uuid): return r_serv_sync.exists(f'ail:instance:{ail_uuid}') @@ -439,7 +448,10 @@ def get_ail_instance_description(ail_uuid): return r_serv_sync.hget(f'ail:instance:{ail_uuid}', 'description') def exists_ail_instance(ail_uuid): - return r_serv_sync.sismember('ail:instance:all', ail_uuid) + try: + return r_serv_sync.sismember('ail:instance:all', ail_uuid) + except: + return False def is_ail_instance_push_enabled(ail_uuid): res = r_serv_sync.hget(f'ail:instance:{ail_uuid}', 'push') @@ -935,7 +947,10 @@ def get_all_sync_queue_dict(): return dict_sync_queues def is_queue_registred_by_ail_instance(queue_uuid, ail_uuid): - return r_serv_sync.sismember(f'ail:instance:sync_queue:{ail_uuid}', queue_uuid) + try: + return r_serv_sync.sismember(f'ail:instance:sync_queue:{ail_uuid}', queue_uuid) + except: + return False def register_ail_to_sync_queue(ail_uuid, queue_uuid): is_linked = is_ail_instance_linked_to_sync_queue(ail_uuid) diff --git a/bin/lib/Investigations.py b/bin/lib/Investigations.py index 09c84f98..1944d00f 100755 --- a/bin/lib/Investigations.py +++ b/bin/lib/Investigations.py @@ -22,6 +22,7 @@ sys.path.append(os.environ['AIL_BIN']) ################################## # Import Project packages ################################## +from lib import ail_core from lib import ConfigLoader from lib import Tag from lib.exceptions import UpdateInvestigationError @@ -445,7 +446,7 @@ def api_register_object(json_dict): investigation = Investigation(investigation_uuid) obj_type = json_dict.get('type', '').replace(' ', '') - if not exists_obj_type(obj_type): + if obj_type not in ail_core.get_all_objects(): return {"status": "error", "reason": f"Invalid Object Type: {obj_type}"}, 400 subtype = json_dict.get('subtype', '') diff --git a/bin/lib/objects/Screenshots.py b/bin/lib/objects/Screenshots.py index 68814ab8..efe3e48b 100755 --- a/bin/lib/objects/Screenshots.py +++ b/bin/lib/objects/Screenshots.py @@ -9,6 +9,7 @@ import sys from hashlib import sha256 from io import BytesIO from flask import url_for +from pymisp import MISPObject sys.path.append(os.environ['AIL_BIN']) ################################## diff --git a/bin/lib/objects/abstract_subtype_object.py b/bin/lib/objects/abstract_subtype_object.py index c3f33eab..82bb85f6 100755 --- a/bin/lib/objects/abstract_subtype_object.py +++ b/bin/lib/objects/abstract_subtype_object.py @@ -72,7 +72,10 @@ class AbstractSubtypeObject(AbstractObject, ABC): return last_seen def get_nb_seen(self): - return int(r_object.zscore(f'{self.type}_all:{self.subtype}', self.id)) + nb = r_object.zscore(f'{self.type}_all:{self.subtype}', self.id) + if not nb: + nb = 0 + return int(nb) # # TODO: CHECK RESULT def get_nb_seen_by_date(self, date_day): diff --git a/var/www/blueprints/import_export.py b/var/www/blueprints/import_export.py index 314c5e74..2297529f 100644 --- a/var/www/blueprints/import_export.py +++ b/var/www/blueprints/import_export.py @@ -25,6 +25,7 @@ from exporter import MISPExporter from exporter import TheHiveExporter from lib.exceptions import MISPConnectionError from lib.objects import ail_objects +from lib import ail_core from lib.Investigations import Investigation # ============ BLUEPRINT ============ @@ -91,7 +92,7 @@ def import_object_file(): @login_analyst def objects_misp_export(): user_id = current_user.get_id() - object_types = ail_objects.get_all_objects_with_subtypes_tuple() + object_types = ail_core.get_all_objects_with_subtypes_tuple() to_export = MISPExporter.get_user_misp_objects_to_export(user_id) return render_template("export_object.html", object_types=object_types, to_export=to_export)