From f5d9b605b482dc87a142ff71b3a7e5fdd8f2c9d4 Mon Sep 17 00:00:00 2001 From: FailedProxy Date: Tue, 24 Mar 2026 21:10:11 +0000 Subject: [PATCH] reverting back to first thing today --- common.sh | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/common.sh b/common.sh index 440b962..86a3361 100644 --- a/common.sh +++ b/common.sh @@ -1,12 +1,13 @@ #!/bin/bash + #----------------------------------------------------------------------------------------------- -# --------------------- Common Shared Functions for Unraid Scripts ----------------------------- +#--------------------- Common Shared Functions ------------------------------------------------- #----------------------------------------------------------------------------------------------- -# Load Master.conf relative to calling script +# Load Master.conf load_master_conf() { local script_dir - script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + script_dir="$(cd "$(dirname "${BASH_SOURCE[1]}")" && pwd)" local master_conf="$script_dir/../Master.conf" if [ -f "$master_conf" ]; then @@ -18,7 +19,7 @@ load_master_conf() { fi } -# Parse CLI args (flags + VAR=value overrides) +# Parse CLI arguments parse_args() { DRY_RUN=${DRY_RUN:-false} @@ -56,7 +57,7 @@ validate_int() { fi } -# Require variable to be set +# Require variable require_var() { local var="$1" if [[ -z "${!var:-}" ]]; then @@ -65,9 +66,10 @@ require_var() { fi } -# Detect local hostname and set remote +# Detect hosts + SSH key + Tailscale IP detect_hosts() { LOCAL_HOSTNAME="$(hostname)" + if [[ "$LOCAL_HOSTNAME" == "$HOST1" ]]; then LOCAL_SERVER_NAME="$HOST1" REMOTE_SERVER_NAME="$HOST2" @@ -78,25 +80,36 @@ detect_hosts() { echo "Error: Local hostname ($LOCAL_HOSTNAME) not recognized." exit 1 fi + echo "Local server: $LOCAL_SERVER_NAME" echo "Remote server: $REMOTE_SERVER_NAME" # Resolve Tailscale IP REMOTE_SERVER=$(tailscale ip -4 "$REMOTE_SERVER_NAME" 2>/dev/null) + if [[ -z "$REMOTE_SERVER" ]]; then echo "Error: Could not resolve Tailscale IP for $REMOTE_SERVER_NAME" exit 1 fi - echo "Resolved $REMOTE_SERVER_NAME → $REMOTE_SERVER" - # Require SSH_KEYS - require_var SSH_KEYS + # Validate SSH_KEYS + if [[ "$(declare -p SSH_KEYS 2>/dev/null)" != declare\ -A* ]]; then + echo "Error: SSH_KEYS is not a valid associative array." + exit 1 + fi + KEY_ID="$LOCAL_SERVER_NAME|$REMOTE_SERVER_NAME" + + # Debug (safe to keep) + echo "DEBUG: KEY_ID=$KEY_ID" + echo "DEBUG: Available keys: ${!SSH_KEYS[@]}" + if [[ -n "${SSH_KEYS[$KEY_ID]}" ]]; then SSH_KEY="${SSH_KEYS[$KEY_ID]}" else echo "Error: No SSH key defined for $LOCAL_SERVER_NAME → $REMOTE_SERVER_NAME" exit 1 fi + echo "Using SSH key: $SSH_KEY" } \ No newline at end of file