← back to Ga Allsites
gate2_rollback.sh
147 lines
#!/usr/bin/env bash
# gate2_rollback.sh — Restore all files modified by gate2_inject.sh
# Finds every .bak-ga-* file written by the inject run and restores it.
# Then reloads affected pm2 processes.
#
# Run from Mac2:
# ! ssh root@45.61.58.125 'bash -s' < ~/Projects/ga-allsites/gate2_rollback.sh
# ---------------------------------------------------------------------------
set -uo pipefail
ssh root@45.61.58.125 'bash -s' <<'REMOTE'
set -uo pipefail
ID="G-J2SL8P5KDL"
echo ""
echo "========================================================"
echo " GATE-2 ROLLBACK — restoring .bak-ga-* files"
echo "========================================================"
echo ""
# Find every .bak file this inject run created (pattern: <original>.bak-ga-YYYYMMDD-HHMMSS)
BAK_FILES=()
for f in \
/root/Projects/wolfgordon-site/public/index.html.bak-ga-* \
/root/Projects/artmura-site/public/index.html.bak-ga-* \
/root/Projects/carnegie-site/public/index.html.bak-ga-* \
/root/Projects/thibaut-site/public/index.html.bak-ga-* \
/root/Projects/elitis-site/public/index.html.bak-ga-* \
/root/Projects/romo-site/public/index.html.bak-ga-* \
/root/Projects/la-walls-site/public/index.html.bak-ga-* \
/root/Projects/british-walls-site/public/index.html.bak-ga-* \
/root/Projects/leed-walls-site/public/index.html.bak-ga-* \
/root/Projects/surface-stick-site/public/index.html.bak-ga-* \
/root/Projects/coleandson-site/public/index.html.bak-ga-* \
/root/Projects/fallingstar-site/public/index.html.bak-ga-* \
/root/Projects/philipjeffries-site/public/index.html.bak-ga-* \
/root/Projects/primo-leathers-site/public/index.html.bak-ga-* \
/root/Projects/quadrille-house-site/public/index.html.bak-ga-* \
"/var/www/fabricut.designerwallcoverings.com/public/index.html.bak-ga-*" \
/root/Projects/fentucci-site/public/index.html.bak-ga-* \
"/root/Projects/Designer-Wallcoverings/DW-Websites/Fentucci/public/index.html.bak-ga-*"
do
[ -f "$f" ] && BAK_FILES+=("$f")
done
if [ ${#BAK_FILES[@]} -eq 0 ]; then
echo " Nothing to roll back — no .bak-ga-* files found for any of the 17 target paths."
echo " (Either gate2_inject.sh was never run, or all files were already skipped as no-op.)"
exit 0
fi
N_RESTORED=0
N_FAILED=0
TOUCHED_PM2=()
restore_file() {
local bak="$1"
# Original file is everything before .bak-ga-
local orig="${bak%.bak-ga-*}"
echo " Restoring: $orig"
echo " from: $bak"
if cp -a "$bak" "$orig"; then
echo " status: RESTORED"
(( N_RESTORED++ )) || true
# Track for pm2 reload
TOUCHED_PM2+=("$orig")
else
echo " status: FAIL — could not copy bak"
(( N_FAILED++ )) || true
fi
}
for bak in "${BAK_FILES[@]}"; do
restore_file "$bak"
echo ""
done
# ─── Reload pm2 processes for restored files ────────────────────────────────
echo "Reloading pm2 processes..."
# If wolfgordon shared template was restored, reload all 30 wolf processes
wolf_restored=0
for orig in "${TOUCHED_PM2[@]}"; do
[[ "$orig" == *wolfgordon-site/public/index.html ]] && wolf_restored=1
done
if [ "$wolf_restored" -eq 1 ]; then
echo " wolfgordon-site shared template — reloading all 30 processes..."
WOLF_PROCS=(
anna-french-site brunschwig-fils-site coordonne-site designers-guild-site
designtex-site gp-j-baker-site groundworks-site harlequin-site knoll-site
koroseal-site kravet-site lee-jofa-site maharam-site maya-romanoff-site
mulberry-site nina-campbell-site nobilis-site osborne-little-site
phillip-jeffries-site pierre-frey-site ralph-lauren-site rebel-walls-site
sancar-site sandberg-site scalamandre-site threads-site william-morris-site
wolf-gordon-site wolfgordon-site zoffany-site
)
ok=0; fail=0
for p in "${WOLF_PROCS[@]}"; do
pm2 reload "$p" >/dev/null 2>&1 && (( ok++ )) || (( fail++ )) || true
done
echo " reloaded ${ok}/30 OK (${fail} failed)"
fi
# Map standalone paths to pm2 names
declare -A PATH_PM2
PATH_PM2["/root/Projects/artmura-site/public/index.html"]="artmura-site"
PATH_PM2["/root/Projects/carnegie-site/public/index.html"]="carnegie-site"
PATH_PM2["/root/Projects/thibaut-site/public/index.html"]="thibaut-site"
PATH_PM2["/root/Projects/elitis-site/public/index.html"]="elitis-site"
PATH_PM2["/root/Projects/romo-site/public/index.html"]="romo-site"
PATH_PM2["/root/Projects/la-walls-site/public/index.html"]="la-walls-site"
PATH_PM2["/root/Projects/british-walls-site/public/index.html"]="british-walls-site"
PATH_PM2["/root/Projects/leed-walls-site/public/index.html"]="leed-walls-site"
PATH_PM2["/root/Projects/surface-stick-site/public/index.html"]="surface-stick-site"
PATH_PM2["/root/Projects/coleandson-site/public/index.html"]="coleandson-site"
PATH_PM2["/root/Projects/fallingstar-site/public/index.html"]="fallingstar-site"
PATH_PM2["/root/Projects/philipjeffries-site/public/index.html"]="philipjeffries-site"
PATH_PM2["/root/Projects/primo-leathers-site/public/index.html"]="primo-leathers-site"
PATH_PM2["/root/Projects/quadrille-house-site/public/index.html"]="quadrille-house-site"
PATH_PM2["/var/www/fabricut.designerwallcoverings.com/public/index.html"]="fabricut-landing"
PATH_PM2["/root/Projects/fentucci-site/public/index.html"]="fentucci-site"
PATH_PM2["/root/Projects/Designer-Wallcoverings/DW-Websites/Fentucci/public/index.html"]="fentucci-website"
for orig in "${TOUCHED_PM2[@]}"; do
[[ "$orig" == *wolfgordon-site/public/index.html ]] && continue # already handled above
pname="${PATH_PM2[$orig]:-}"
if [ -n "$pname" ]; then
pm2 reload "$pname" >/dev/null 2>&1 && echo " reloaded $pname" || echo " WARN: reload $pname failed"
fi
done
# ────────────────────────────────────────────────────────────────────────────
echo ""
echo "========================================================"
echo " ROLLBACK SUMMARY"
echo "========================================================"
echo " Restored : $N_RESTORED files"
echo " Failed : $N_FAILED files"
echo ""
echo "NOTE: .bak files are preserved at their original .bak-ga-* paths."
echo " Verify with: grep -l 'G-J2SL8P5KDL' <any restored file> (should return nothing)"
echo "========================================================"
REMOTE