mirror of
https://github.com/cve-search/cpe-guesser.git
synced 2024-11-14 10:58:27 +00:00
54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import sys
|
|
import falcon
|
|
from wsgiref.simple_server import make_server
|
|
import json
|
|
from dynaconf import Dynaconf
|
|
|
|
# Configuration
|
|
settings = Dynaconf(settings_files=["../config/settings.yaml"])
|
|
port = settings.server.port
|
|
|
|
runPath = os.path.dirname(os.path.realpath(__file__))
|
|
sys.path.append(os.path.join(runPath, ".."))
|
|
from lib.cpeguesser import CPEGuesser
|
|
|
|
|
|
class Search:
|
|
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()
|
|
resp.media = cpeGuesser.guessCpe(q["query"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app = falcon.App()
|
|
app.add_route("/search", Search())
|
|
|
|
try:
|
|
with make_server("", port, app) as httpd:
|
|
print(f"Serving on port {port}...")
|
|
httpd.serve_forever()
|
|
except OSError as e:
|
|
print(e)
|
|
sys.exit(1)
|
|
except KeyboardInterrupt:
|
|
sys.exit(0)
|