35 lines
1.3 KiB
Plaintext
35 lines
1.3 KiB
Plaintext
from PDAPI import *
|
|
|
|
|
|
__metadata__ = {
|
|
"methods": ["GET"],
|
|
"blueprint": "SVE",
|
|
"permission": 0.0,
|
|
"attributes": [],
|
|
"limit": "1 per second",
|
|
"args": [
|
|
{"Name": "SVEID", "Type": "str", "MaxLen": 14}
|
|
]
|
|
}
|
|
def HandleRequest():
|
|
SVE: SVEBase
|
|
SVEID = flask.request.args.get("SVEID")
|
|
if not (SVEID := PreSVE(SVEID)): return flask.jsonify({"error": "SVEID not format", "code": 1})
|
|
if not SVEID.isdigit() or len(SVEID) % 2 != 0: return flask.jsonify({"error": "SVEID not %2 number", "code": 1})
|
|
if not (SVE := SVEBase.query.filter(SVEBase.SVEID == Get16toBytes(SVEID)).first()): return flask.jsonify({"error": "SVEID Not Found", "code": 1}), 404
|
|
SVEID = PreSQLSVE(SVEID)
|
|
return {"sveId": "SVE-" + SVEID[0:4] + "-" + SVEID[4:],
|
|
"sveYear": SVEID[0:4],
|
|
"sveNumber": SVEID[4:],
|
|
"publishDate": SVE.SVECreateTime,
|
|
"lastModified": SVE.SVELastModified,
|
|
"vulnTitle": SVE.SVEName,
|
|
"vulnStatus": SVE.SVEVulnStatus,
|
|
"vulnDescription": SVE.SVEDescription,
|
|
"products": SVE.SVEProducts,
|
|
"cvss": SVE.SVECvss,
|
|
"solutions": SVE.SVESolutions,
|
|
"references": SVE.SVEReferences,
|
|
"relatedSves": SVE.SVERelatedSves,
|
|
"code": 0
|
|
} |