fix(scripts): جلوگیری از تولید راز خالی و اجرای اسکریپت پیش‌نمایش با python3

- gen-env.sh: rand با دو آرگومان صدا زده می‌شد ولی فقط $1 را می‌خواند؛
  openssl rand -hex بدون تعداد بایت خروجی خالی و کد ۰ می‌دهد، پس fallback
  هرگز اجرا نمی‌شد و .env با رازهای خالی ساخته می‌شد. حالا تعداد بایت
  رعایت می‌شود و اگر مقداری خالی بماند، اسکریپت با خطا متوقف می‌شود.
- preview-mode.sh: python روی اوبونتو ۲۴.۰۴ وجود ندارد (فقط python3).
This commit is contained in:
aramesh-site deploy
2026-09-26 21:43:59 +00:00
parent 846682ac4a
commit 8600d2d4a3
2 changed files with 9 additions and 3 deletions
+7 -1
View File
@@ -15,13 +15,19 @@ if [ -f .env ] && [ "${1:-}" != "--force" ]; then
exit 1
fi
rand() { openssl rand -"$1" 2>/dev/null || head -c 64 /dev/urandom | od -An -tx1 | tr -d ' \n'; }
rand() { local bytes="${2:-32}"; openssl rand -hex "$bytes" 2>/dev/null || head -c "$bytes" /dev/urandom | od -An -tx1 | tr -d ' \n'; }
SECRET_KEY="$(rand hex 48)"
POSTGRES_PASSWORD="$(rand hex 16)"
MINIO_ROOT_PASSWORD="$(rand hex 16)"
ADMIN_PASSWORD="$(rand hex 12)"
# بدون این بررسی، شکست تولید تصادفی به .env خالی می‌رسد و بعداً با خطای مبهم
# ${VAR:?} در compose ظاهر می‌شود.
for v in SECRET_KEY POSTGRES_PASSWORD MINIO_ROOT_PASSWORD ADMIN_PASSWORD; do
[ -n "${!v}" ] || { echo "خطا: تولید مقدار تصادفی برای $v ناموفق بود" >&2; exit 1; }
done
cat > .env <<EOF
# تولیدشده با scripts/gen-env.sh — این فایل هرگز به گیت نمی‌رود.
# پیش از انتشار واقعی، ADMIN_PASSWORD را به مقداری که به یاد می‌سپارید اما قوی است تغییر دهید: