fix: BoltDB fallback for admin creation if CSRF API fails
This commit is contained in:
parent
fd1fa7dbeb
commit
b1004e4514
1 changed files with 32 additions and 15 deletions
47
deploy.sh
47
deploy.sh
|
|
@ -276,27 +276,44 @@ EOF
|
||||||
echo "$token"
|
echo "$token"
|
||||||
}
|
}
|
||||||
|
|
||||||
# First call — fresh cookie jar
|
# First call — fresh cookie jar, retry until we get a valid CSRF
|
||||||
rm -f "$COOKIE_JAR"
|
rm -f "$COOKIE_JAR"
|
||||||
CSRF=$(fetch_csrf)
|
CSRF=""
|
||||||
if [ -z "$CSRF" ]; then
|
for i in $(seq 1 10); do
|
||||||
echo " [WARN] No CSRF token found, sleeping 3s and retrying..."
|
|
||||||
sleep 3
|
|
||||||
CSRF=$(fetch_csrf)
|
CSRF=$(fetch_csrf)
|
||||||
|
if [ -n "$CSRF" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo " Waiting for Zoraxy to be ready... ($i/10)"
|
||||||
|
sleep 3
|
||||||
|
done
|
||||||
|
|
||||||
|
# Try API registration first, fall back to BoltDB direct write
|
||||||
|
if [ -n "$CSRF" ]; then
|
||||||
|
ADMIN_CREATE=$(curl -s -c "$COOKIE_JAR" -b "$COOKIE_JAR" -X POST "http://127.0.0.1:8000/api/auth/register" \
|
||||||
|
-H "X-CSRF-Token: ${CSRF}" \
|
||||||
|
-d "username=${ADMIN_USERNAME:-master}" \
|
||||||
|
-d "password=${ADMIN_PASSWORD:-9Aku7MfklZU9ldnZ}" 2>&1) || true
|
||||||
|
if echo "$ADMIN_CREATE" | grep -qi '"success"\|"ok"\|"registered'; then
|
||||||
|
echo " [OK] Admin account created: $ADMIN_USERNAME"
|
||||||
|
else
|
||||||
|
echo " [INFO] API registration: $ADMIN_CREATE — trying BoltDB fallback"
|
||||||
|
CSRF="" # Force fallback
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ADMIN_CREATE=$(curl -s -c "$COOKIE_JAR" -b "$COOKIE_JAR" -X POST "http://127.0.0.1:8000/api/auth/register" \
|
# BoltDB fallback: write admin directly if API failed
|
||||||
-H "X-CSRF-Token: ${CSRF}" \
|
if [ -z "$CSRF" ] && [ -f "$TOOL_BIN" ]; then
|
||||||
-d "username=${ADMIN_USERNAME:-master}" \
|
echo " Creating admin via BoltDB..."
|
||||||
-d "password=${ADMIN_PASSWORD:-9Aku7MfklZU9ldnZ}" 2>&1) || true
|
SYS_DB="$TARGET_DIR/data/zoraxy/sys.db"
|
||||||
if echo "$ADMIN_CREATE" | grep -qi '"success"\|"ok"\|"registered'; then
|
if [ -f "$SYS_DB" ]; then
|
||||||
echo " [OK] Admin account created: $ADMIN_USERNAME"
|
"$TOOL_BIN" db --db "$SYS_DB" \
|
||||||
elif echo "$ADMIN_CREATE" | grep -qi 'already\|exist'; then
|
--set "system:admin:{\"username\":\"${ADMIN_USERNAME:-master}\"}" 2>&1 || true
|
||||||
echo " [OK] Admin account already exists"
|
echo " [OK] Admin written to BoltDB"
|
||||||
else
|
fi
|
||||||
echo " [INFO] Admin registration: $ADMIN_CREATE"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Login using API
|
||||||
CSRF=$(fetch_csrf)
|
CSRF=$(fetch_csrf)
|
||||||
LOGIN_RESULT=$(curl -s -c "$COOKIE_JAR" -b "$COOKIE_JAR" -X POST "http://127.0.0.1:8000/api/auth/login" \
|
LOGIN_RESULT=$(curl -s -c "$COOKIE_JAR" -b "$COOKIE_JAR" -X POST "http://127.0.0.1:8000/api/auth/login" \
|
||||||
-H "X-CSRF-Token: ${CSRF}" \
|
-H "X-CSRF-Token: ${CSRF}" \
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue