diff options
| author | Carson Fleming <cflems@cflems.net> | 2024-10-02 01:52:23 -0400 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2024-10-02 01:52:23 -0400 |
| commit | 1422a25cd5390404221f12b6a08cca6b35e9b776 (patch) | |
| tree | fc605fa20fb7b6a62e8214c13cca891146eb5a23 /key_loader.py | |
| download | pgp-milter-1422a25cd5390404221f12b6a08cca6b35e9b776.tar.gz | |
Initial version with debug prints
Diffstat (limited to 'key_loader.py')
| -rw-r--r-- | key_loader.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/key_loader.py b/key_loader.py new file mode 100644 index 0000000..4867d07 --- /dev/null +++ b/key_loader.py @@ -0,0 +1,38 @@ +import config +import mysql.connector as mysql +import pgpy + +def load_keys(addrs: list[str]) -> list[pgpy.PGPKey]: + if len(addrs) < 1: + return [] + + db = mysql.connect(**config.db_config) + try: + stmt = db.cursor() + except Exception as e: + db.close() + raise e + + try: + stmt.execute(\ + format_multiquery(config.key_loader_query, len(addrs)), \ + tuple(addrs) \ + ) + + keys = {} + for (keyfpr, keydata) in stmt: + if keyfpr in keys: + continue + key = pgpy.PGPKey() + try: + key.parse(keydata) + except: + continue + + return list(keys.values()) + finally: + stmt.close() + db.close() + +def format_multiquery(query: str, n_items: int) -> str: + return query % (', '.join(['%s'] * n_items),) |
