Antoine Van Elstraete 0363898669 feat: authentification QR code / token pour Pronote
Ajoute le mode d'authentification PRONOTE_AUTH_MODE=qr_token comme alternative
au mode password pour les instances Pronote utilisant HubEduConnect/EduConnect
où l'authentification par mot de passe échoue (CAPTCHA, MFA, flux SAML).

Nouveaux éléments :
- PronoteSettings : auth_mode, qr_code_file, qr_pin (SecretStr)
- PronoteAuthState : persistance du token rotatif dans .pronote_auth_state.json
  (écriture atomique, permissions 0600, symlink-safe via O_EXCL|O_NOFOLLOW)
- PronoteClient._connect_qr_token() : token_login avec creds persistés,
  qrcode_login pour l'enrôlement initial, export_credentials persisté après
  chaque login réussi
- PronoteAuthRotationError : levée en cas d'échec de rotation du token,
  propagée sans wrapping à travers PronoteFetcher et fetch_step jusqu'à
  PipelineRunner.run() qui notifie via XMPP (si canal disponible et dry_run inactif)
- _is_pronotepy_configured() mode-aware : qr_token ne requiert que PRONOTE_URL
- _collect_auth_secrets() : redaction des secrets explicites (token, PIN, jeton QR)
  dans tous les logs du chemin d'authentification

Documentation :
- .env.example : PRONOTE_AUTH_MODE, PRONOTE_QR_CODE_FILE, PRONOTE_QR_PIN
- AGENTS.md : contrat d'authentification QR code / token
- Wiki GuidePronote : section enrôlement, exécutions suivantes, ré-enrôlement

Tests (686 passés, couverture 94.87%) :
- 5 tests config QR, 9 tests auth_state, 10 tests client QR, 3 tests propagation,
  4 tests intégration rotation end-to-end, 4 tests fallback mode-aware
- Tests de non-fuite : sentinelles distinctes pour token, PIN, jeton QR

Co-authored-by: coder/litellm/coder <coder@agents.invalid>
2026-09-08 23:15:06 +02:00

pronote-sync

Synchronisation Pronote → CalDAV + XMPP.


Synchronise l'agenda et les devoirs de Pronote vers un calendrier CalDAV et envoie un résumé quotidien par XMPP. Supporte les sources iCal et pronotepy avec repli automatique. Synthèse IA optionnelle.


🚀 Démarrage rapide

# Cloner le dépôt
git clone <repo-url>
cd pronote-sync

# Créer l'environnement virtuel
python3.13 -m venv .venv
source .venv/bin/activate

# Installer
pip install -e ".[dev]"

# Configurer
cp .env.example .env
# Éditer .env avec vos paramètres (voir .env.example pour le détail)

# Tester
pronote-sync --dry-run --log-level DEBUG

📖 Utilisation

pronote-sync                    # Exécute la synchronisation
pronote-sync --dry-run          # Simulation sans écriture
pronote-sync --log-level DEBUG  # Verbosité des journaux

🛠️ Déploiement

Les artefacts pour systemd/timer et logrotate sont fournis dans deploy/. Voir docs/exploitation.md pour plus de détails.


🙏 Remerciements

Ce projet repose sur les bibliothèques open-source suivantes :

Inspiré de pronote-digest par Yoan Bernabeu.


Licence

MIT — voir LICENSE.

Description
Outil python pour récupérer les informations transmises par le collège via Pronote et leur site internet.
Readme MIT 2.7 MiB
2026-09-08 20:41:39 +02:00
Languages
Python 100%