def get_software(product_name, version): """ Get CVEs from CPE with corresponding version and product name --- tags: - CVE parameters: - name: product_name in: path required: true type: string description: name of the CPE product - name: version in: path required: true type: string description: CPE version responses: 200: description: Get corresponding CVEs 408: description: Request timeout """ cves = CVE.query.join( CVE.cpes).filter(CPE.version == version).join(Product).filter( Product.name == product_name).all() return {"cves": cves_schema.dump(cves)}
def all_cves(): """ Get all CVEs --- tags: - CVE responses: 200: description: Get CVEs """ cves = CVE.query.all() return {"cves": cves_schema.dump(cves)}
def cve_last_week(): """ Get CVEs from last week of the year --- tags: - CVE responses: 200: description: Get CVEs from last week of the year 408: description: Request timeout """ # FIXME: get rid of hardcoded year cves = CVE.query.filter(2019 == db.extract("year", CVE.published_date), db.extract("week", CVE.published_date) == 52).all() return {"cves": cves_schema.dump(cves)}
def cve_last_year(): """ Get CVEs from current year --- tags: - CVE responses: 200: description: Get CVEs from current year 408: description: Request timeout """ current_time = datetime.now() cves = CVE.query.filter( current_time.year == db.extract("year", CVE.published_date)).all() return {"cves": cves_schema.dump(cves)}
def cve_latest(): """ Get 30 latest CVEs --- tags: - CVE responses: 200: description: Get CVEs from last day of the year 408: description: Request timeout """ current_time = datetime.now() cves = CVE.query.filter( current_time.year == db.extract("year", CVE.published_date)).order_by( CVE.published_date.desc()).limit(30).all() return {"cves": cves_schema.dump(cves)}