From f863d9b81a9634cfb6941c06283d4a1f82b84e0a Mon Sep 17 00:00:00 2001
From: Massimiliano Adamo <maxadamo@gmail.com>
Date: Tue, 21 Jan 2025 21:25:25 +0100
Subject: [PATCH] update provider options to include Harica provider

---
 wile_coyote/acme/nomad_uploader.py    |  3 +--
 wile_coyote/acme/uploader.py          |  2 +-
 wile_coyote/acme/wildcard_uploader.py |  2 +-
 wile_coyote/bin/cert2json             | 11 ++++++-----
 wile_coyote/common/combine.py         |  4 ++++
 wile_coyote/tools/__init__.py         |  2 ++
 6 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/wile_coyote/acme/nomad_uploader.py b/wile_coyote/acme/nomad_uploader.py
index b63ac71..823fdf6 100644
--- a/wile_coyote/acme/nomad_uploader.py
+++ b/wile_coyote/acme/nomad_uploader.py
@@ -1,13 +1,12 @@
 """Nomad Uploader
 
 Options:
-  provider  = ACME Provider (sectigo_ev, sectigo_ov, letsencrypt)
+  provider  = ACME Provider (harica_dv, harica_ov, sectigo_ev, sectigo_ov, letsencrypt)
   domain    = Certificate name
   project   = Nomad Project
   nomad_env = staging nomad_env
   wildcard  = Wildcard (Bool)
 """
-
 import os
 import tempfile
 import wile_coyote.tools
diff --git a/wile_coyote/acme/uploader.py b/wile_coyote/acme/uploader.py
index b30d7d7..adf05b9 100644
--- a/wile_coyote/acme/uploader.py
+++ b/wile_coyote/acme/uploader.py
@@ -1,7 +1,7 @@
 """Certificates Uploader
 
 Options:
-  provider = ACME Provider (sectigo_ev, sectigo_ov, letsencrypt)
+  provider = ACME Provider (harica_dv, harica_ov, sectigo_ev, sectigo_ov, letsencrypt)
   domain   = Certificate name
   client   = Client that will access the private key
   unit     = Unit, entity or team
diff --git a/wile_coyote/acme/wildcard_uploader.py b/wile_coyote/acme/wildcard_uploader.py
index c879706..0f99cc6 100644
--- a/wile_coyote/acme/wildcard_uploader.py
+++ b/wile_coyote/acme/wildcard_uploader.py
@@ -1,7 +1,7 @@
 """Wildcard Uploader
 
 Options:
-  provider = ACME Provider (sectigo_ev, sectigo_ov, letsencrypt)
+  provider = ACME Provider (harica_dv, harica_ov, sectigo_ev, sectigo_ov, letsencrypt)
   domain   = Certificate name
 """
 
diff --git a/wile_coyote/bin/cert2json b/wile_coyote/bin/cert2json
index 06d7c33..b115294 100755
--- a/wile_coyote/bin/cert2json
+++ b/wile_coyote/bin/cert2json
@@ -8,7 +8,7 @@ Usage:
 
 Options:
   -h --help                       Show this screen
-  -p PROVIDER --provider=PROVIDER Provider [sectigo_ev | sectigo_ov | letsencrypt| all]
+  -p PROVIDER --provider=PROVIDER Provider [harica_dv | harica_ov| sectigo_ev | sectigo_ov | letsencrypt| all]
 """
 import json
 import os
@@ -24,13 +24,15 @@ import wile_coyote.tools
 
 PROCESSES = 6
 WEB_BASE = REDIS_HOST = wile_coyote.tools.WEB_BASE
+ACME_PROVIDERS = wile_coyote.tools.ACME_PROVIDERS
+ALL_PROVIDERS = ACME_PROVIDERS.append("all")
 ARGS = docopt(__doc__)
 PROVIDER = ARGS['--provider']
-if PROVIDER not in ["letsencrypt", "sectigo_ov", "sectigo_ev", "all"]:
-    print("valid providers are: sectigo_ev, sectigo_ov, letsencrypt, and all")
+if PROVIDER not in ALL_PROVIDERS:
+    print(f"valid providers are: {', '.join(ALL_PROVIDERS)}")
     os.sys.exit()
 elif PROVIDER == 'all':
-    PROVIDERS = ["letsencrypt", "sectigo_ov", "sectigo_ev"]
+    PROVIDERS = ACME_PROVIDERS
 else:
     PROVIDERS = [PROVIDER]
 
@@ -79,7 +81,6 @@ if __name__ == "__main__":
         pool.close()
         pool.join()
 
-        # sort list of dictionaries by value: https://stackoverflow.com/a/73050/3151187
         sorted_certname = sorted(cert_list, key=lambda k: k['certname'])
         sorted_expired = sorted(
             cert_list,
diff --git a/wile_coyote/common/combine.py b/wile_coyote/common/combine.py
index ecf8886..e3e9550 100644
--- a/wile_coyote/common/combine.py
+++ b/wile_coyote/common/combine.py
@@ -20,6 +20,10 @@ def keys(certpath, provider, keypath, outpath):
         capath = os.path.join(ssl_dir, "COMODO_EV.crt")
     elif provider == "letsencrypt":
         capath = os.path.join(ssl_dir, "LE.crt")
+    elif provider == "harica_dv":
+        capath = os.path.join(ssl_dir, "HARICA_DV.crt")
+    elif provider == "harica_ov":
+        capath = os.path.join(ssl_dir, "HARICA_OV.crt")
     else:
         raise NotImplementedError(f"Provider {provider} not supported")
 
diff --git a/wile_coyote/tools/__init__.py b/wile_coyote/tools/__init__.py
index e6c3813..be34336 100644
--- a/wile_coyote/tools/__init__.py
+++ b/wile_coyote/tools/__init__.py
@@ -1,3 +1,5 @@
+""" This module is a package that contains all the tools used by the wile_coyote package. """
+
 from ast import literal_eval as l_eval
 import pkgutil
 import configparser
-- 
GitLab