41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""Complète les secrets manquants du .env, sans écraser les valeurs existantes."""
|
|
from pathlib import Path
|
|
import secrets
|
|
import stat
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
ENV = ROOT / ".env"
|
|
SOURCE = ROOT / ".env.example"
|
|
|
|
if not ENV.exists():
|
|
ENV.write_text(SOURCE.read_text(encoding="utf-8"), encoding="utf-8")
|
|
|
|
values = ENV.read_text(encoding="utf-8").splitlines(keepends=True)
|
|
secrets_to_generate = {
|
|
"SECRET_KEY": lambda: secrets.token_urlsafe(64),
|
|
"MYSQL_PASSWORD": lambda: secrets.token_urlsafe(24),
|
|
"MYSQL_ROOT_PASSWORD": lambda: secrets.token_urlsafe(28),
|
|
"ADMIN_PASSWORD": lambda: secrets.token_urlsafe(16),
|
|
}
|
|
updated = set()
|
|
result = []
|
|
for line in values:
|
|
if line.lstrip().startswith("#") or "=" not in line:
|
|
result.append(line)
|
|
continue
|
|
key, val = line.rstrip("\n").split("=", 1)
|
|
if key in secrets_to_generate and not val.strip():
|
|
line = f"{key}={secrets_to_generate[key]()}\n"
|
|
updated.add(key)
|
|
result.append(line)
|
|
ENV.write_text("".join(result), encoding="utf-8")
|
|
if hasattr(ENV, "chmod"):
|
|
ENV.chmod(stat.S_IRUSR | stat.S_IWUSR)
|
|
|
|
print("Fichier .env prêt.")
|
|
if updated:
|
|
print("Secrets générés :", ", ".join(sorted(updated)))
|
|
print("Le mot de passe admin est dans .env : conserve-le de manière sûre.")
|
|
else:
|
|
print("Aucune valeur existante modifiée.")
|