Skip to content

Commit

Permalink
chg: [valkey] get rid of Redis and moved to Valkey
Browse files Browse the repository at this point in the history
  • Loading branch information
adulau committed Nov 23, 2024
1 parent 9cc2bef commit facc75d
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 17 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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
Expand Down Expand Up @@ -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:<word>` set
- `s:<word>` sorted set with a score depending of the number of appearance
Expand All @@ -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
2 changes: 1 addition & 1 deletion REQUIREMENTS
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
redis
valkey[libvalkey]
falcon
dynaconf
4 changes: 2 additions & 2 deletions bin/import.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
import gzip
import shutil
import xml.sax
import redis
import valkey
import time
from dynaconf import Dynaconf

# Configuration
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):
Expand Down
4 changes: 2 additions & 2 deletions config/settings.yaml
Original file line number Diff line number Diff line change
@@ -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'
source: 'https://nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-dictionary_v2.3.xml.gz'
10 changes: 5 additions & 5 deletions lib/cpeguesser.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import redis
import valkey
from dynaconf import Dynaconf

# Configuration
Expand All @@ -10,9 +10,9 @@

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,
)
Expand All @@ -35,4 +35,4 @@ def guessCpe(self, words):
rank = self.rdb.zrank("rank:cpe", cpe)
ranked.append((rank, cpe))

return sorted(ranked)
return sorted(ranked, reverse=True)

0 comments on commit facc75d

Please sign in to comment.