#!/usr/bin/env python3 """Initialisation du backend pySonnerie. Cree backend/data/conf.json avec des valeurs par defaut si le fichier n'existe pas encore. Le mot de passe admin est genere aleatoirement. """ from __future__ import annotations import json import secrets import sys from pathlib import Path CONF_PATH = Path(__file__).resolve().parent / "data" / "conf.json" DEFAULT_CONF = { "server": { "host": "0.0.0.0", "port": 8443, "tls_cert": "certs/cert.pem", "tls_key": "certs/key.pem", }, "auth": { "username": "admin", "password": None, # remplace par un mot de passe aleatoire }, "serial": { "enabled": False, "port": "/dev/ttyACM0", "baudrate": 115200, "timeout": 1, }, "triggers": {}, } def main() -> None: if CONF_PATH.exists(): print(f"[info] {CONF_PATH} existe deja, aucune modification.") sys.exit(0) CONF_PATH.parent.mkdir(parents=True, exist_ok=True) (CONF_PATH.parent / "musiques").mkdir(parents=True, exist_ok=True) conf = DEFAULT_CONF.copy() password = secrets.token_urlsafe(16) conf["auth"] = {"username": "admin", "password": password} CONF_PATH.write_text(json.dumps(conf, indent=2) + "\n", encoding="utf-8") CONF_PATH.chmod(0o600) print(f"[ok] {CONF_PATH} cree (permissions 600).") print(f"[ok] Identifiants par defaut : admin / {password}") print("[!] Notez ce mot de passe, il ne sera pas reaffiche.") if __name__ == "__main__": main()