Compare commits

...

2 Commits

Author SHA1 Message Date
missytake
296dcad1da echobot: print invite link with python 2025-12-06 19:08:09 +01:00
Alexandre Gauthier
22c303ed7c Fix issues with echobot invite link in cmdeploy
The entire stack is setup to support 'localhost'  as a value for
ssh_host, returning LocalExec when that is the case, but this last step
made a new explicit SSHExec connection to config.mail_domain.

This changes that to simply use the subprocess module when ssh_host is
local.

This also fixes the issue where the connection was made to
'config.mail_domain' instead of the supplied ssh_host value, ensuring
that remains consistent.

Additionally, the entire process will be skipped if --dry-run is used
with cmdeploy, allowing a dry-run to complete without error.
2025-12-06 19:08:09 +01:00
2 changed files with 18 additions and 7 deletions

View File

@@ -11,6 +11,9 @@
- Organized cmdeploy into install, configure, and activate stages
([#695](https://github.com/chatmail/relay/pull/695))
- echobot: print invite-link also if it's deployed locally
([#751](https://github.com/chatmail/relay/pull/751))
- docs: move readme.md docs to sphinx documentation rendered at https://chatmail.at/doc/relay
([#711](https://github.com/chatmail/relay/pull/711))

View File

@@ -11,6 +11,7 @@ import pathlib
import shutil
import subprocess
import sys
import time
from pathlib import Path
import pyinfra
@@ -109,15 +110,22 @@ def run_cmd(args, out):
try:
retcode = out.check_call(cmd, env=env)
if retcode == 0:
if not args.disable_mail:
if not args.disable_mail and not args.dry_run:
print("\nYou can try out the relay by talking to this echo bot: ")
sshexec = SSHExec(args.config.mail_domain, verbose=args.verbose)
print(
sshexec(
call=remote.rshell.shell,
kwargs=dict(command="cat /var/lib/echobot/invite-link.txt"),
invite_path = Path("/var/lib/echobot/invite-link.txt")
if ssh_host in ["localhost", "@local", "@docker"]:
while not invite_path.exists():
time.sleep(0.1)
with invite_path.open() as f:
print(f.readline())
else:
echo_sshexec = get_sshexec(ssh_host, verbose=args.verbose)
print(
echo_sshexec(
call=remote.rshell.shell,
kwargs=dict(command=f"cat {invite_path}"),
)
)
)
out.green("Deploy completed, call `cmdeploy dns` next.")
elif not remote_data["acme_account_url"]:
out.red("Deploy completed but letsencrypt not configured")