commit a05ecfad4fb34eb4a06aee3bd56ca2872ddabc82
parent 676ab85a9ee9a8c60afe39f330bed6e463c8ae09
Author: Solderpunk <solderpunk@sdf.org>
Date: Mon, 11 May 2020 23:27:48 +0200
Add easy loading of previously generated certs.
Diffstat:
M | av98.py | | | 38 | ++++++++++++++++++++++++++++++-------- |
1 file changed, 30 insertions(+), 8 deletions(-)
diff --git a/av98.py b/av98.py
@@ -14,6 +14,7 @@ import cgi
import codecs
import collections
import fnmatch
+import glob
import io
import mimetypes
import os
@@ -421,14 +422,18 @@ Slow internet connection? Use 'set timeout' to be more patient.""")
print("This will allow the site to recognise you across requests.")
print("What do you want to do?")
print("1. Give up.")
- print("2. Load client certificate from file and retry the request.")
- print("3. Generate new certificate and retry the request.")
+ print("2. Generate new certificate and retry the request.")
+ print("3. Load previously generated certificate from file.")
+ print("4. Load certificate from file and retry the request.")
choice = input("> ").strip()
if choice == "2":
- self._load_client_cert()
+ self._generate_persistent_client_cert()
self._go_to_gi(gi, update_hist, handle)
elif choice == "3":
- self._generate_persistent_client_cert()
+ self._choose_client_cert()
+ self._go_to_gi(gi, update_hist, handle)
+ elif choice == "4":
+ self._load_client_cert()
self._go_to_gi(gi, update_hist, handle)
else:
print("Giving up.")
@@ -752,6 +757,20 @@ Slow internet connection? Use 'set timeout' to be more patient.""")
os.system(cmd)
self._activate_client_cert(certfile, keyfile)
+ def _choose_client_cert(self):
+ certdir = os.path.join(self.config_dir, "certs")
+ certs = glob.glob(os.path.join(certdir, "*.crt"))
+ certdir = {}
+ for n, cert in enumerate(certs):
+ certdir[str(n+1)] = (cert, os.path.splitext(cert)[0] + ".key")
+ print("{}. {}".format(n+1, os.path.splitext(os.path.basename(cert))[0]))
+ choice = input("> ").strip()
+ if choice in certdir:
+ certfile, keyfile = certdir[choice]
+ self._activate_client_cert(certfile, keyfile)
+ else:
+ print("What?")
+
def _activate_client_cert(self, certfile, keyfile):
self.client_certs["active"] = (certfile, keyfile)
self.active_cert_domains = []
@@ -852,17 +871,20 @@ Slow internet connection? Use 'set timeout' to be more patient.""")
if self.client_certs["active"]:
print("Active certificate: {}".format(self.client_certs["active"][0]))
print("1. Deactivate client certificate.")
- print("2. Load client certificate from file.")
- print("3. Generate new certificate.")
+ print("2. Generate new certificate.")
+ print("3. Load previously generated certificate.")
+ print("4. Load client certificate from file.")
print("Enter blank line to exit certificate manager.")
choice = input("> ").strip()
if choice == "1":
print("Deactivating client certificate.")
self._deactivate_client_cert()
elif choice == "2":
- self._load_client_cert()
+ self._generate_persistent_client_cert()
elif choice == "3":
- self._generate_client_cert()
+ self._choose_client_cert()
+ elif choice == "4":
+ self._load_client_cert()
else:
print("Aborting.")