HEX
Server: nginx/1.29.3
System: Linux 11979.bigscoots-wpo.com 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64
User: nginx (1068)
PHP: 7.4.33
Disabled: exec,system,passthru,shell_exec,proc_open,proc_close,popen,show_source,cmd# Do not modify this line # 1684243876
Upload Files
File: //bigscoots/wpo/backups/search.sh
#!/bin/bash

HOSTNAME="$1"
DEBUG=false

# Allow optional --debug flag
if [[ "$2" == "--debug" ]]; then
    DEBUG=true
fi

MYSQL_DB="vps_monitor"
MYSQL_TABLE="containers"
SSH_PORT=2222
SSH_OPTIONS=(-p "$SSH_PORT" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -o BatchMode=yes -q)
BACKUP_NODES=(backup1 backup2 backup3 backup4 backup5 backup6 backup7 backup8 backup9 backup10 backup11 backup12 backup13 backup14 backup15 backup16 backup17 backup18 backup19 backup20)

log() {
    [[ "$DEBUG" == true ]] && echo -e "$1"
}

# Validate input
if [[ -z "$HOSTNAME" ]]; then
    [[ "$DEBUG" == true ]] && echo "Usage: $0 <hostname> [--debug]"
    exit 1
fi

# Get VEID
VEID=$(mysql -D"$MYSQL_DB" -N -se "SELECT veid FROM $MYSQL_TABLE WHERE hostname = '$HOSTNAME' LIMIT 1;")

if [[ -z "$VEID" ]]; then
    echo "{\"error\": \"VEID not found for hostname: $HOSTNAME\"}"
    exit 0
fi

WPO_USER="wpo$VEID"
log "🔍 Found VEID=$VEID for hostname=$HOSTNAME"
log "🗄️ Checking backup servers for available backups..."

RESULT="{\"veid\":\"$VEID\",\"hostname\":\"$HOSTNAME\",\"matches\":["
FOUND=false

for NODE in "${BACKUP_NODES[@]}"; do
    OUT=$(ssh "${SSH_OPTIONS[@]}" "$NODE" "if [ -d /home/wpo_users/$WPO_USER ]; then
        cd /home/wpo_users/$WPO_USER
        BACKUPS=(\$(ls -1d back-* 2>/dev/null | sed 's/back-//' | cut -d'T' -f1))
        if [ -d current ]; then
            DOMAINS=(\$(ls -1 current | grep -v '^conf.d\$' | grep -v '^wpincludes\$'))
        else
            DOMAINS=()
        fi
        printf \"__FOUND__\\n\"
        printf \"BACKUPS:\${BACKUPS[*]}\\n\"
        printf \"DOMAINS:\${DOMAINS[*]}\\n\"
    fi" 2>/dev/null)

    if echo "$OUT" | grep -q "__FOUND__"; then
        FOUND=true
        BACKUPS_RAW=$(echo "$OUT" | grep "BACKUPS:" | cut -d':' -f2-)
        DOMAINS_RAW=$(echo "$OUT" | grep "DOMAINS:" | cut -d':' -f2-)

        BACKUPS_ARRAY=$(jq -n --arg data "$BACKUPS_RAW" '$data | split(" ")')
        DOMAINS_ARRAY=$(jq -n --arg data "$DOMAINS_RAW" '$data | split(" ")')

        RESULT+="{\"node\":\"$NODE\",\"backups\":$BACKUPS_ARRAY,\"domains\":$DOMAINS_ARRAY},"
    fi
done

RESULT=${RESULT%,}  # Trim trailing comma
RESULT+="]}"

if [[ "$FOUND" == false ]]; then
    echo "{\"veid\":\"$VEID\",\"hostname\":\"$HOSTNAME\",\"matches\":[]}"
else
    echo "$RESULT" | jq .
fi