#!/bin/bash
APP=/home/erpsolution26/public_html/spincraft.erpsolution26.com
MARK=$APP/.phase4.done
[ -f "$MARK" ] && exit 0
touch "$MARK"
exec >$APP/fix.log 2>&1
echo "================ FIX $(date) ================"
cd $APP || exit 1
NODEBIN=/opt/alt/alt-nodejs22/root/usr/bin
export PATH=$NODEBIN:$PATH
export HOME=/home/erpsolution26
export NODE_ENV=production
DBU=erpsolution26_spincraft
DBP='y61JTjJiBBNqnwRPJTCg6wJl'
DBN=erpsolution26_spincraft
# ---- stop the stalled phase-2 npm run ----
pkill -9 -u erpsolution26 -f "npm install --no-audit" 2>/dev/null
rm -rf "$APP/.deploy2.lock"
echo "cleaned up stalled phase2"
# ---- how does MySQL actually listen? ----
echo "--- mysql listening config ---"
mysql -u "$DBU" -p"$DBP" "$DBN" -N -e "SHOW VARIABLES WHERE Variable_name IN ('socket','port','bind_address','version');"
SOCK=$(mysql -u "$DBU" -p"$DBP" "$DBN" -N -e "SHOW VARIABLES LIKE 'socket';" | awk '{print $2}')
echo "detected socket: [$SOCK]"
echo "--- tcp 3306 listeners ---"
(netstat -lnt 2>/dev/null || ss -lnt 2>/dev/null) | grep -E '3306|Local' | head -5
# ---- rewrite DATABASE_URL to use the unix socket ----
if [ -n "$SOCK" ] && [ -S "$SOCK" ]; then
NEWURL="mysql://$DBU:$DBP@localhost/$DBN?socket=$SOCK"
echo "using socket connection"
else
NEWURL="mysql://$DBU:$DBP@127.0.0.1:3306/$DBN"
echo "socket not found, falling back to 127.0.0.1"
fi
cat > .env </dev/null; fi
pkill -9 -u erpsolution26 -f "next start -p 3100" 2>/dev/null
sleep 2
: > node.log
nohup ./node_modules/.bin/next start -p 3100 >> node.log 2>&1 &
echo $! > node.pid
echo "node restarted pid=$(cat node.pid)"
# ---- wait for readiness ----
CODE=000
for i in $(seq 1 40); do
sleep 3
CODE=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:3100/login 2>/dev/null)
[ "$CODE" = "200" ] && break
done
echo "local /login -> $CODE"
# ---- prove the DB path works end to end ----
echo "--- real login attempt (admin@spincraft.com / admin123) ---"
curl -s -i -X POST http://127.0.0.1:3100/api/auth/login \
-H 'Content-Type: application/json' \
--data '{"email":"admin@spincraft.com","password":"admin123"}' \
| head -20
echo ""
echo "--- node.log tail ---"
tail -20 node.log
# ---- keepalive cron helper stays; make sure it targets 3100 ----
echo "=== DONE ==="