diff --git a/README.md b/README.md index 9893e74..cbfa7f2 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,12 @@ be used against [cve-search](https://github.com/cve-search/cve-search) to do act ## Requirements -- Redis +- [Valkey](https://valkey.io/) - Python ## Usage -To use CPE guesser, you have to initialise the Redis database with `import.py`. +To use CPE guesser, you have to initialise the [Valkey](https://valkey.io/) database with `import.py`. Then you can use the software with `lookup.py` to find the most probable CPE matching the keywords provided. @@ -28,7 +28,7 @@ If you don't want to install it locally, there is a public online version. Check ### Docker -#### Single image with existing Redis +#### Single image with existing Valkey ```bash docker build . -t cpe-guesser:l.0 @@ -157,9 +157,9 @@ sharing common names or name is composed of multiple words. Split vendor name and product name (such as `_`) into single word(s) and then canonize the word. Building an inverse index using the cpe vendor:product format as value and the canonized word as key. Then cpe guesser creates a ranked set with the most common -cpe (vendor:product) per version to give a probability of the CPE appearance. +cpe (vendor:product) per version to give a probability of the CPE appearance. -### Redis structure +### Valkey structure - `w:` set - `s:` sorted set with a score depending of the number of appearance @@ -168,5 +168,5 @@ cpe (vendor:product) per version to give a probability of the CPE appearance. Software is open source and released under a 2-Clause BSD License -Copyright (C) 2021-2024 Alexandre Dulaunoy -Copyright (C) 2021-2024 Esa Jokinen +Copyright (C) 2021-2024 Alexandre Dulaunoy +Copyright (C) 2021-2024 Esa Jokinen diff --git a/REQUIREMENTS b/REQUIREMENTS index eca36df..bf9edc8 100644 --- a/REQUIREMENTS +++ b/REQUIREMENTS @@ -1,3 +1,3 @@ -redis +valkey[libvalkey] falcon dynaconf diff --git a/bin/import.py b/bin/import.py index 3e8d417..28dffff 100644 --- a/bin/import.py +++ b/bin/import.py @@ -8,7 +8,7 @@ import urllib.request import gzip import shutil import xml.sax -import redis +import valkey import time from dynaconf import Dynaconf @@ -16,7 +16,7 @@ from dynaconf import Dynaconf settings = Dynaconf(settings_files=["../config/settings.yaml"]) cpe_path = settings.cpe.path cpe_source = settings.cpe.source -rdb = redis.Redis(host=settings.redis.host, port=settings.redis.port, db=8) +rdb = valkey.Valkey(host=settings.valkey.host, port=settings.valkey.port, db=8) class CPEHandler(xml.sax.ContentHandler): diff --git a/config/settings.yaml b/config/settings.yaml index 45ddd82..82b4cec 100644 --- a/config/settings.yaml +++ b/config/settings.yaml @@ -1,8 +1,8 @@ server: port: 8000 -redis: +valkey: host: 127.0.0.1 port: 6379 cpe: path: '../data/official-cpe-dictionary_v2.3.xml' - source: 'https://nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-dictionary_v2.3.xml.gz' \ No newline at end of file + source: 'https://nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-dictionary_v2.3.xml.gz' diff --git a/lib/cpeguesser.py b/lib/cpeguesser.py index b917dc2..e9b39ca 100644 --- a/lib/cpeguesser.py +++ b/lib/cpeguesser.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import redis +import valkey from dynaconf import Dynaconf # Configuration @@ -10,9 +10,9 @@ settings = Dynaconf(settings_files=["../config/settings.yaml"]) class CPEGuesser: def __init__(self): - self.rdb = redis.Redis( - host=settings.redis.host, - port=settings.redis.port, + self.rdb = valkey.Valkey( + host=settings.valkey.host, + port=settings.valkey.port, db=8, decode_responses=True, ) @@ -35,4 +35,4 @@ class CPEGuesser: rank = self.rdb.zrank("rank:cpe", cpe) ranked.append((rank, cpe)) - return sorted(ranked) + return sorted(ranked, reverse=True)