summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinstall-for53
-rwxr-xr-xinstall-for-prosody23
2 files changed, 53 insertions, 23 deletions
diff --git a/install-for b/install-for
new file mode 100755
index 0000000..9487273
--- /dev/null
+++ b/install-for
@@ -0,0 +1,53 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: 2024 Matthew Fennell <matthew@fennell.dev>
+#
+# SPDX-License-Identifier: AGPL-3.0-only
+
+import argparse
+import itertools
+import os
+import subprocess
+
+parser = argparse.ArgumentParser()
+parser.add_argument("identity_file")
+parser.add_argument("--prosody", nargs=1, default = [])
+parser.add_argument("--forgejo", nargs=1, default = [])
+args = parser.parse_args()
+
+ssh_args = f"-o IdentitiesOnly=yes -F /dev/null -i {args.identity_file}"
+
+commands = {
+ "prosody": [
+ "sudo chmod 640 ~/*.crt ~/*.key",
+ "sudo mv ~/*.crt ~/*.key /etc/prosody/certs",
+ "sudo chown -R root:prosody /etc/prosody/certs",
+ "sudo service nginx restart",
+ "sudo service prosody restart",
+ ],
+ "forgejo": [
+ "sudo chown root:root ~/*.crt ~/*.key",
+ "sudo mv ~/*.crt ~/*.key /etc/nginx/ssl/",
+ "sudo service forgejo restart",
+ "sudo service nginx restart",
+ ],
+}
+
+possible_services = {
+ "prosody": next(iter(args.prosody), None),
+ "forgejo": next(iter(args.forgejo), None),
+}
+services = dict(filter(lambda service: service[1] is not None, possible_services.items()))
+files_to_copy = {os.environ["LEGO_CERT_PATH"], os.environ["LEGO_CERT_KEY_PATH"]}
+
+def scp_commands(files: set[str], host:str) -> list[str]:
+ return [f"scp {ssh_args} {' '.join(files)} {host}:~"]
+
+def ssh_commands(service: str, host: str) -> list[str]:
+ return list(map(lambda command: f"ssh {ssh_args} -tt {host} '{command}'", commands[service]))
+
+for service, host in services.items():
+ commands_to_run = itertools.chain(scp_commands(files_to_copy, host), ssh_commands(service, host))
+
+ for command in commands_to_run:
+ print(command)
+ subprocess.run(command, shell=True)
diff --git a/install-for-prosody b/install-for-prosody
deleted file mode 100755
index 4ab540b..0000000
--- a/install-for-prosody
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# SPDX-FileCopyrightText: 2024 Matthew Fennell <matthew@fennell.dev>
-#
-# SPDX-License-Identifier: AGPL-3.0-only
-
-set -eux
-
-connection_string="$1"
-ssh_key="$2"
-
-ssh_args=(-o IdentitiesOnly=yes -F /dev/null -i "${ssh_key}")
-
-# LEGO_CERT_PATH is an environment variable
-#shellcheck disable=SC2154
-scp "${ssh_args[@]}" "${LEGO_CERT_PATH}" "${connection_string}":~
-
-# LEGO_CERT_KEY_PATH is an environment variable
-#shellcheck disable=SC2154
-scp "${ssh_args[@]}" "${LEGO_CERT_KEY_PATH}" "${connection_string}":~
-
-ssh "${ssh_args[@]}" -tt "${connection_string}" "sudo mv ~/*.crt ~/*.key /etc/prosody/certs"
-ssh "${ssh_args[@]}" -tt "${connection_string}" "sudo chown -R prosody:prosody /etc/prosody/certs"
-ssh "${ssh_args[@]}" -tt "${connection_string}" "sudo service prosody reload"