From a233a5d7eea5e84e1de9459b91583d75053c14e5 Mon Sep 17 00:00:00 2001
From: Julien Palard <julien@palard.fr>
Date: Wed, 19 Feb 2025 12:16:51 +0100
Subject: [PATCH] Bump psycopg.

---
 scripts/import-from-ct-logs.py | 27 +++++++++++++++------------
 scripts/requirements.txt       |  2 +-
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/scripts/import-from-ct-logs.py b/scripts/import-from-ct-logs.py
index fb9bc0f..7bd82d5 100644
--- a/scripts/import-from-ct-logs.py
+++ b/scripts/import-from-ct-logs.py
@@ -17,9 +17,9 @@ So the next maintainer can import using:
 import argparse
 from pathlib import Path
 
-import psycopg2
+import psycopg
 
-from public_domain import Domain, NON_PUBLIC_DOMAINS, parse_csv_file, write_csv_file
+from public_domain import NON_PUBLIC_DOMAINS, Domain, parse_csv_file, write_csv_file
 
 ROOT = Path(__file__).resolve().parent.parent
 FILE = ROOT / "domains.csv"
@@ -27,19 +27,22 @@ FILE = ROOT / "domains.csv"
 
 def query_ct_logs(last_id):
     """Query crt.sh using their postgres public API."""
-    conn = psycopg2.connect(dbname="certwatch", user="guest", host="crt.sh")
-    conn.set_session(readonly=True, autocommit=True)
-    cur = conn.cursor()
-    cur.execute(
-        """SELECT id, altnames.*, x509_subjectname(certificate) subject
-    FROM certificate, LATERAL (SELECT * FROM x509_altnames(certificate)) altnames
-    WHERE plainto_tsquery('gouv.fr') @@ identities(certificate) AND id > %s""",
-        (last_id,),
-    )
+    with psycopg.connect(dbname="certwatch", user="guest", host="crt.sh", autocommit=True) as conn:
+        conn.read_only = True
+        with conn.cursor() as cur:
+            cur.execute(
+                """SELECT id, altnames.*, x509_subjectname(certificate) subject
+                     FROM certificate, LATERAL (
+                              SELECT * FROM x509_altnames(certificate)
+                          ) altnames
+                    WHERE plainto_tsquery('gouv.fr') @@ identities(certificate)
+                      AND id > %s""",
+                (last_id,),
+            )
+            results = cur.fetchall()
 
     domains = parse_csv_file(FILE)
     primary_key = None
-    results = cur.fetchall()
     for primary_key, domain, subject in results:
         domain = Domain(
             domain.lower(),
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
index fd33cc9..de8d252 100644
--- a/scripts/requirements.txt
+++ b/scripts/requirements.txt
@@ -1,5 +1,5 @@
 tqdm
 aiohttp
 validators>=0.24.0  # where they introduced rfc_2782.
-psycopg2
+psycopg[binary]
 requests
-- 
GitLab