From d33c5ebbaffdde1d3ec7dbb61dc3904021f8d71e Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 4 May 2026 01:22:25 -0300 Subject: [PATCH] fix: use remote tty sudo for RC matrix --- Cargo.lock | 6 +-- client/Cargo.toml | 2 +- common/Cargo.toml | 2 +- .../manual/run_server_to_rc_mode_matrix.sh | 47 ++++++++++++------- server/Cargo.toml | 2 +- 5 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74a834a..d39aa32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "lesavka_client" -version = "0.19.13" +version = "0.19.14" dependencies = [ "anyhow", "async-stream", @@ -1686,7 +1686,7 @@ dependencies = [ [[package]] name = "lesavka_common" -version = "0.19.13" +version = "0.19.14" dependencies = [ "anyhow", "base64", @@ -1698,7 +1698,7 @@ dependencies = [ [[package]] name = "lesavka_server" -version = "0.19.13" +version = "0.19.14" dependencies = [ "anyhow", "base64", diff --git a/client/Cargo.toml b/client/Cargo.toml index 4e27fdc..c884910 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.19.13" +version = "0.19.14" edition = "2024" [dependencies] diff --git a/common/Cargo.toml b/common/Cargo.toml index 924e3e5..21b01ba 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.19.13" +version = "0.19.14" edition = "2024" build = "build.rs" diff --git a/scripts/manual/run_server_to_rc_mode_matrix.sh b/scripts/manual/run_server_to_rc_mode_matrix.sh index 0508d23..75e3ed0 100755 --- a/scripts/manual/run_server_to_rc_mode_matrix.sh +++ b/scripts/manual/run_server_to_rc_mode_matrix.sh @@ -10,6 +10,12 @@ set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd)" +if (( EUID == 0 )); then + printf 'Do not run this matrix with local sudo.\n' >&2 + printf 'Run it as your normal workstation user; the script will request sudo on the remote server host only when reconfiguring UVC.\n' >&2 + exit 64 +fi + TETHYS_HOST=${TETHYS_HOST:-tethys} LESAVKA_SERVER_HOST=${LESAVKA_SERVER_HOST:-theia} LESAVKA_SERVER_CONNECT_HOST=${LESAVKA_SERVER_CONNECT_HOST:-38.28.125.112} @@ -106,20 +112,16 @@ reconfigure_server_mode() { return 0 fi - ssh ${SSH_OPTS} "${LESAVKA_SERVER_HOST}" bash -s -- \ + local prepare_output repo interval remote_cmd + prepare_output="$( + ssh ${SSH_OPTS} "${LESAVKA_SERVER_HOST}" bash -s -- \ "${LESAVKA_SERVER_REPO}" \ "${LESAVKA_SERVER_RC_RECONFIGURE_REF}" \ - "${LESAVKA_SERVER_RC_RECONFIGURE_UPDATE}" \ - "${width}" \ - "${height}" \ - "${fps}" <<'REMOTE_RECONFIGURE' + "${LESAVKA_SERVER_RC_RECONFIGURE_UPDATE}" <<'REMOTE_PREPARE' set -euo pipefail repo=$1 ref=$2 update_checkout=$3 -width=$4 -height=$5 -fps=$6 if [[ "${repo}" == "auto" ]]; then for candidate in \ "${HOME}/Development/lesavka" \ @@ -155,15 +157,26 @@ if [[ "${update_checkout}" != "0" ]]; then else printf ' ↪ leaving server checkout untouched; set LESAVKA_SERVER_RC_RECONFIGURE_UPDATE=1 to update it first\n' fi -sudo env \ - LESAVKA_REF="${ref}" \ - LESAVKA_INSTALL_UVC_CODEC=mjpeg \ - LESAVKA_UVC_WIDTH="${width}" \ - LESAVKA_UVC_HEIGHT="${height}" \ - LESAVKA_UVC_FPS="${fps}" \ - LESAVKA_UVC_INTERVAL="$((10000000 / fps))" \ - ./scripts/install/server.sh -REMOTE_RECONFIGURE +printf '__LESAVKA_SERVER_REPO__=%s\n' "${repo}" +REMOTE_PREPARE + )" + printf '%s\n' "${prepare_output}" | sed '/^__LESAVKA_SERVER_REPO__=/d' + repo="$(awk -F= '/^__LESAVKA_SERVER_REPO__=/{print $2; exit}' <<<"${prepare_output}")" + if [[ -z "${repo}" ]]; then + printf 'could not determine the prepared server repo path on %s\n' "${LESAVKA_SERVER_HOST}" >&2 + return 65 + fi + + interval=$((10000000 / fps)) + printf -v remote_cmd \ + 'cd %q && sudo env LESAVKA_REF=%q LESAVKA_INSTALL_UVC_CODEC=mjpeg LESAVKA_UVC_WIDTH=%q LESAVKA_UVC_HEIGHT=%q LESAVKA_UVC_FPS=%q LESAVKA_UVC_INTERVAL=%q ./scripts/install/server.sh' \ + "${repo}" \ + "${LESAVKA_SERVER_RC_RECONFIGURE_REF}" \ + "${width}" \ + "${height}" \ + "${fps}" \ + "${interval}" + ssh -tt ${SSH_OPTS} "${LESAVKA_SERVER_HOST}" "${remote_cmd}" } write_mode_result() { diff --git a/server/Cargo.toml b/server/Cargo.toml index c914a71..407861c 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.19.13" +version = "0.19.14" edition = "2024" autobins = false