From 30d9321fc9598919541da3e40c4d6145803054cd Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Sat, 23 Nov 2024 16:47:54 +0100 Subject: [PATCH] new: [api] New endpoint `unique` return the best cpe matches --- bin/server.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bin/server.py b/bin/server.py index 5a0459f..760f7c5 100644 --- a/bin/server.py +++ b/bin/server.py @@ -14,6 +14,7 @@ port = settings.server.port runPath = os.path.dirname(os.path.realpath(__file__)) sys.path.append(os.path.join(runPath, "..")) + from lib.cpeguesser import CPEGuesser @@ -39,9 +40,36 @@ class Search: resp.media = cpeGuesser.guessCpe(q["query"]) +class Unique: + def on_post(self, req, resp): + data_post = req.bounded_stream.read() + js = data_post.decode("utf-8") + try: + q = json.loads(js) + except ValueError: + resp.status = falcon.HTTP_400 + resp.media = "Missing query array or incorrect JSON format" + return + + if "query" in q: + pass + else: + resp.status = falcon.HTTP_400 + resp.media = "Missing query array or incorrect JSON format" + return + + cpeGuesser = CPEGuesser() + try: + r = cpeGuesser.guessCpe(q["query"])[:1][0][1] + except: + r = [] + resp.media = r + + if __name__ == "__main__": app = falcon.App() app.add_route("/search", Search()) + app.add_route("/unique", Unique()) try: with make_server("", port, app) as httpd: