Files
Noxely/server/noxely_server/__main__.py
T
tuxgyver 51b60cda70 Appairage du téléphone, en-têtes de licence (2.1.0)
Recopier un jeton de trente-trois caractères sur un clavier tactile n'était pas
un réglage, c'était une corvée. On ouvre désormais une fenêtre depuis le
serveur, on appuie sur Appairer côté téléphone, et c'est fait.

Le jeton n'est pas pour autant distribué : ouvrir la fenêtre l'exige déjà,
elle dure deux minutes, se referme dès qu'un appareil s'est servi, et ne
répond qu'à une adresse privée. Le champ de saisie reste là pour qui préfère
le coller.

Les cinquante fichiers de code portent en outre leur notice de licence, comme
la GPL le recommande. Elle est en français, comme le reste ; le texte qui fait
foi demeure celui de LICENSE, non traduit.
2026-09-13 20:15:14 +02:00

55 lines
1.8 KiB
Python

# Noxely — collecte côté serveur, écoute hors connexion côté mobile.
# Copyright © 2026 Johnny (tuxgyver)
#
# Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
# selon les termes de la GNU General Public License, version 3 ou ultérieure,
# telle que publiée par la Free Software Foundation.
#
# Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
# Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
"""Point d'entrée : `python -m noxely_server`."""
from __future__ import annotations
import sys
import uvicorn
from .config import load
def ensure_usable(data_dir) -> None:
"""Le dossier de données est la première chose qui peut manquer : on le dit clairement."""
try:
data_dir.mkdir(parents=True, exist_ok=True)
probe = data_dir / ".ecriture"
probe.touch()
probe.unlink()
except PermissionError:
print(
f"[noxely] Droits insuffisants sur {data_dir}.\n"
f" Choisissez un dossier accessible dans server/.env (NOXELY_DATA=./data),\n"
f" ou créez-le : sudo install -d -o $(whoami) {data_dir}",
file=sys.stderr,
)
raise SystemExit(1)
except OSError as error:
print(f"[noxely] Dossier de données inutilisable ({data_dir}) : {error}", file=sys.stderr)
raise SystemExit(1)
def main() -> None:
config = load()
ensure_usable(config.data_dir)
# Importé après la vérification : l'application ouvre la base dès son chargement.
from .api import app
print(f"[noxely] données : {config.data_dir}")
print(f"[noxely] écoute : http://{config.host}:{config.port}")
uvicorn.run(app, host=config.host, port=config.port, log_level="info")
if __name__ == "__main__":
main()