Adding the possibility to delete elements/IOCs from watchers
This commit is contained in:
		@@ -70,7 +70,7 @@ class IOCs(object):
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def delete(ioc_id):
 | 
			
		||||
        """
 | 
			
		||||
            Delete an IOC by its id to the database.
 | 
			
		||||
            Delete an IOC by its id in the database.
 | 
			
		||||
            :return: status of the operation in JSON
 | 
			
		||||
        """
 | 
			
		||||
        if db.session.query(exists().where(Ioc.id == ioc_id)).scalar():
 | 
			
		||||
@@ -82,6 +82,21 @@ class IOCs(object):
 | 
			
		||||
            return {"status": False,
 | 
			
		||||
                    "message": "IOC not found"}
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def delete_by_value(ioc_value):
 | 
			
		||||
        """
 | 
			
		||||
            Delete an IOC by its value in the database.
 | 
			
		||||
            :return: status of the operation in JSON
 | 
			
		||||
        """
 | 
			
		||||
        if db.session.query(exists().where(Ioc.value == ioc_value)).scalar():
 | 
			
		||||
            db.session.query(Ioc).filter_by(value=ioc_value).delete()
 | 
			
		||||
            db.session.commit()
 | 
			
		||||
            return {"status": True,
 | 
			
		||||
                    "message": "IOC deleted"}
 | 
			
		||||
        else:
 | 
			
		||||
            return {"status": False,
 | 
			
		||||
                    "message": "IOC not found"}
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def search(term):
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@ class WhiteList(object):
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def delete(elem_id):
 | 
			
		||||
        """
 | 
			
		||||
            Delete an element by its id to the database.
 | 
			
		||||
            Delete an element by its id in the database.
 | 
			
		||||
            :return: status of the operation in a dict
 | 
			
		||||
        """
 | 
			
		||||
        if db.session.query(exists().where(Whitelist.id == elem_id)).scalar():
 | 
			
		||||
@@ -67,6 +67,21 @@ class WhiteList(object):
 | 
			
		||||
            return {"status": False,
 | 
			
		||||
                    "message": "Element not found"}
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def delete_by_value(elem_value):
 | 
			
		||||
        """
 | 
			
		||||
            Delete an element by its value in the database.
 | 
			
		||||
            :return: status of the operation in a dict
 | 
			
		||||
        """
 | 
			
		||||
        if db.session.query(exists().where(Whitelist.element == elem_value)).scalar():
 | 
			
		||||
            db.session.query(Whitelist).filter_by(element=elem_value).delete()
 | 
			
		||||
            db.session.commit()
 | 
			
		||||
            return {"status": True,
 | 
			
		||||
                    "message": "Element deleted"}
 | 
			
		||||
        else:
 | 
			
		||||
            return {"status": False,
 | 
			
		||||
                    "message": "Element not found"}
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def search(element):
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,11 @@ def watch_iocs():
 | 
			
		||||
                try:
 | 
			
		||||
                    res = requests.get(w["url"], verify=False)
 | 
			
		||||
                    if res.status_code == 200:
 | 
			
		||||
                        iocs_list = json.loads(res.content)["iocs"]
 | 
			
		||||
                        content = json.loads(res.content)
 | 
			
		||||
                        iocs_list = content["iocs"] if "iocs" in content else [
 | 
			
		||||
                        ]
 | 
			
		||||
                        to_delete = content["to_delete"] if "to_delete" in content else [
 | 
			
		||||
                        ]
 | 
			
		||||
                    else:
 | 
			
		||||
                        w["status"] = False
 | 
			
		||||
                except:
 | 
			
		||||
@@ -58,6 +62,13 @@ def watch_iocs():
 | 
			
		||||
                    except:
 | 
			
		||||
                        continue
 | 
			
		||||
 | 
			
		||||
                for ioc in to_delete:
 | 
			
		||||
                    try:
 | 
			
		||||
                        iocs.delete_by_value(ioc["value"])
 | 
			
		||||
                        w["status"] = True
 | 
			
		||||
                    except:
 | 
			
		||||
                        continue
 | 
			
		||||
 | 
			
		||||
        # If at least one URL haven't be parsed, let's retry in 1min.
 | 
			
		||||
        if False in [w["status"] for w in watchers]:
 | 
			
		||||
            time.sleep(60)
 | 
			
		||||
@@ -83,7 +94,11 @@ def watch_whitelists():
 | 
			
		||||
                try:
 | 
			
		||||
                    res = requests.get(w["url"], verify=False)
 | 
			
		||||
                    if res.status_code == 200:
 | 
			
		||||
                        elements = json.loads(res.content)["elements"]
 | 
			
		||||
                        content = json.loads(res.content)
 | 
			
		||||
                        elements = content["elements"] if "elements" in content else [
 | 
			
		||||
                        ]
 | 
			
		||||
                        to_delete = content["to_delete"] if "to_delete" in content else [
 | 
			
		||||
                        ]
 | 
			
		||||
                    else:
 | 
			
		||||
                        w["status"] = False
 | 
			
		||||
                except:
 | 
			
		||||
@@ -96,6 +111,13 @@ def watch_whitelists():
 | 
			
		||||
                    except:
 | 
			
		||||
                        continue
 | 
			
		||||
 | 
			
		||||
                for elem in to_delete:
 | 
			
		||||
                    try:
 | 
			
		||||
                        whitelist.delete_by_value(elem["element"])
 | 
			
		||||
                        w["status"] = True
 | 
			
		||||
                    except:
 | 
			
		||||
                        continue
 | 
			
		||||
 | 
			
		||||
        if False in [w["status"] for w in watchers]:
 | 
			
		||||
            time.sleep(60)
 | 
			
		||||
        else:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user