|
@@ -1,4 +1,4 @@
|
|
|
-# SPDX-FileCopyrightText: 2016-2017 Helmut Pozimski <helmut@pozimski.eu>
|
|
|
+# SPDX-FileCopyrightText: 2016-2023 Helmut Pozimski <helmut@pozimski.eu>
|
|
|
#
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
|
@@ -14,6 +14,7 @@ import logging
|
|
|
import json
|
|
|
import sys
|
|
|
|
|
|
+from amulib.cert_path_provider import AcmeToolCertPathProvider
|
|
|
from amulib.helpers import get_log_level
|
|
|
from amulib import apache
|
|
|
from amulib import postfix
|
|
@@ -26,6 +27,7 @@ def main():
|
|
|
Main function of acme-updater.
|
|
|
"""
|
|
|
config = None
|
|
|
+ cert_path_provider = None
|
|
|
parser = argparse.ArgumentParser()
|
|
|
parser.add_argument("--apache", help="use the apache module",
|
|
|
action="store_true")
|
|
@@ -43,6 +45,14 @@ def main():
|
|
|
args = parser.parse_args()
|
|
|
logger = logging.getLogger("acme-updater")
|
|
|
logger.addHandler(logging.StreamHandler())
|
|
|
+ config = read_config(args, config, logger)
|
|
|
+ set_log_level(args, config, logger)
|
|
|
+ cert_path_provider = create_cert_path_provider(cert_path_provider, config, logger)
|
|
|
+
|
|
|
+ execute_services(args, cert_path_provider, config)
|
|
|
+
|
|
|
+
|
|
|
+def read_config(args, config, logger):
|
|
|
if args.config:
|
|
|
try:
|
|
|
with open(args.config, "r") as fobj:
|
|
@@ -53,33 +63,52 @@ def main():
|
|
|
except json.JSONDecodeError:
|
|
|
logger.error("Error: Could not parse configuration file")
|
|
|
sys.exit(1)
|
|
|
+ else:
|
|
|
+ logger.error("A configuration file has to be provided with --config")
|
|
|
+ sys.exit(1)
|
|
|
+ return config
|
|
|
+
|
|
|
+
|
|
|
+def set_log_level(args, config, logger):
|
|
|
if args.verbose:
|
|
|
logger.setLevel(logging.DEBUG)
|
|
|
elif config:
|
|
|
logger.setLevel(get_log_level(config["loglevel"]))
|
|
|
else:
|
|
|
logger.setLevel(logging.INFO)
|
|
|
+
|
|
|
+
|
|
|
+def create_cert_path_provider(cert_path_provider, config, logger):
|
|
|
+ if "acme_tool" in config and config["acme_tool"] == "acmetool":
|
|
|
+ cert_path_provider = AcmeToolCertPathProvider(config["acme_dir"])
|
|
|
+ else:
|
|
|
+ logger.error("Invalid acme tooling specified")
|
|
|
+ sys.exit(1)
|
|
|
+ return cert_path_provider
|
|
|
+
|
|
|
+
|
|
|
+def execute_services(args, cert_path_provider, config):
|
|
|
if args.apache:
|
|
|
if config:
|
|
|
- apache.run(config["apache"], config["acme_dir"],
|
|
|
+ apache.run(cert_path_provider, config["apache"],
|
|
|
config["named_key_path"], config["dns_server"])
|
|
|
else:
|
|
|
- apache.run()
|
|
|
+ apache.run(cert_path_provider)
|
|
|
if args.postfix:
|
|
|
if config:
|
|
|
postfix.run(config["postfix"], config["acme_dir"],
|
|
|
config["named_key_path"], config["dns_server"])
|
|
|
else:
|
|
|
- postfix.run()
|
|
|
+ postfix.run(cert_path_provider)
|
|
|
if args.dovecot:
|
|
|
if config:
|
|
|
dovecot.run(config["dovecot"], config["acme_dir"],
|
|
|
config["named_key_path"], config["dns_server"])
|
|
|
else:
|
|
|
- dovecot.run()
|
|
|
+ dovecot.run(cert_path_provider)
|
|
|
if args.ejabberd:
|
|
|
if config:
|
|
|
ejabberd.run(config["ejabberd"], config["acme_dir"],
|
|
|
- config["named_key_path"], config["dns_server"])
|
|
|
+ config["dns_server"])
|
|
|
else:
|
|
|
- ejabberd.run()
|
|
|
+ ejabberd.run(cert_path_provider)
|