コード例 #1
0
ファイル: events.py プロジェクト: zshell/opencve
def check_for_update(cve_json, task):
    cve_id = cve_json["cve"]["CVE_data_meta"]["ID"]
    cve_obj = Cve.query.filter_by(cve_id=cve_id).first()
    events = []

    # A new CVE has been added
    if not cve_obj:
        cve_obj = CveUtil.create_cve(cve_json)
        logger.info("{} created (ID: {})".format(cve_id, cve_obj.id))
        events = [CveUtil.create_event(cve_obj, cve_json, "new_cve", {})]

    # Existing CVE has changed
    elif CveUtil.cve_has_changed(cve_obj, cve_json):
        logger.info("{} has changed, parsing it...".format(cve_obj.cve_id))

        events = []
        checks = BaseCheck.__subclasses__()

        # Loop on each kind of check
        for check in checks:
            c = check(cve_obj, cve_json)
            event = c.execute()

            if event:
                events.append(event)

        # Change the last updated date
        cve_obj.updated_at = arrow.get(cve_json["lastModifiedDate"]).datetime
        cve_obj.json = cve_json
        db.session.commit()

    # Create the change
    if events:
        CveUtil.create_change(cve_obj, cve_json, task, events)
コード例 #2
0
def test_has_changed(app, open_file):
    cve_json = open_file("cves/CVE-2020-26116.json")
    cve_db = CveUtil.create_cve(cve_json)

    cve_db.updated_at = datetime.datetime.now() - datetime.timedelta(days=1)
    db.session.commit()

    assert CveUtil.cve_has_changed(cve_db, cve_json)