Cedric Hansen cedric

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 076129ae0d fix: sécurité, robustesse et qualité suite à la revue de code - Whitelist des hooks système avant stockage (injection subprocess) - Garde .isdigit() sur le parsing des transfer_targets (évite 500) - Statut "warning" si un transfert échoue (archive OK, transfert KO) - Badge ambre "transfert partiel" dans dashboard et historique - Nettoyage des JobDestination orphelines à la suppression d'une destination ou instance - Imports DB consolidés en tête de settings.py (suppression des imports tardifs) - Préservation du nom/type/cron sur retour anticipé erreur hooks (nouveau job) - Tests : rétrocompat ancien format destination_name/remote_instance_name (singulier) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • d2653f5209 feat: destinations multiples par job (many-to-many) Remplace la relation exclusive destination_id / remote_instance_id par une table job_destinations (job_id, dest_type, dest_id) permettant d'associer autant de destinations SSH et d'instances fédérées que nécessaire à un job. - Migration automatique des données existantes au démarrage - Formulaire : checkboxes multi-sélection à la place du select unique - Dashboard : badges multiples par job - Historique : bouton "Transférer" par destination SSH - Export/import config : format liste destination_names / remote_instance_names (compat ancien format destination_name / remote_instance_name) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 3e459e616b feat: auto-remplissage du nom depuis le label de l'app sélectionnée Lors de la création d'un job, changer l'application dans le menu déroulant met à jour le nom du job avec le label de l'application (ex: "Nextcloud"). En mode édition, le comportement précédent est conservé. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 0f7f1012b1 feat: logs intermédiaires et diagnostic timeout amélioré Persiste le log et l'archive_name en DB dès que la sauvegarde locale est terminée, avant le transfert. Ainsi, si le cleanup 6h se déclenche pendant un transfert long, le log indique déjà que l'archive est créée et où en était le transfert. Le message de timeout distingue maintenant deux cas : - archive locale présente → timeout pendant le transfert - pas d'archive → backup lui-même trop long Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 7c9b709fec feat: sélection des hooks système pour les jobs ynh_system Permet de choisir quels hooks YunoHost inclure dans la sauvegarde système (ex: exclure data_home et data_mail pour alléger l'archive). Rétrocompatible : les jobs existants sans config de hooks sauvegardent tout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • bc50504283 test: suite pytest — rétention (count/daily/GFS), utils, export/import config 35 tests unitaires et d'intégration (Flask test client SQLite in-memory). Lancer avec : cd sources && python -m pytest tests/ -v Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 8c9afc9dd9 feat: export/import configuration (jobs, destinations, instances, SMTP) Deux routes GET /settings/export-config et POST /settings/import-config. L'import est idempotent : crée ou met à jour par nom. Les clés SSH ne sont pas exportées (note dans l'UI). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 3fe195c960 feat: rétention GFS (Grandfather-Father-Son) Ajoute la politique de rétention GFS avec 3 niveaux configurables : Fils (journaliers), Père (hebdomadaires), Grand-Père (mensuels). Migration SQLite automatique au démarrage pour la colonne retention_gfs_config. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 8fb5bdf664 feat: rétention distante après push HTTP chunked - _job_archive_prefix() extrait de _list_archives_for_job (réutilisable) - apply_remote_retention(job, client) dans retention.py : filtre les archives distantes par préfixe du job local, applique la même politique count/daily via DELETE /api/v1/archives/<name> - FederationClient.delete_archive() dans federation/client.py - push_archive_to_instance() accepte job= optionnel et appelle apply_remote_retention() après chaque push réussi - Le log du run trace les suppressions distantes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • b56a7358b2 fix: sudo rm sur archives — sudoers + centralisation via sudo_rm() - sudo_rm() et sudo_rm_archive() dans utils.py (un appel par fichier pour coller au pattern sudoers) - retention.py : os.remove() → sudo_rm() (les archives sont root-owned) - jobs.py archive_delete et api.py : sudo rm -f two-args → sudo_rm_archive() - jobs.py tmp cleanup : rm -f → rm -rf (correspond au sudoers existant) - sudoers : ajout rm -f /home/yunohost.backup/archives/* Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 3c03183bd2 fix: colonne Transfert du dashboard distingue SSH / HTTP / Local - Relation remote_instance ajoutée sur Job (db.py) - Badge "SSH · nom" violet pour rsync, "HTTP · nom" bleu pour chunked, "Local" gris si aucun transfert ; tooltip avec l'URL/chemin distant Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 6f199a1aa4 fix: migration remote_instance_id via sqlite3 direct avant import app app.py schedule les jobs au démarrage (Job.query) — si la colonne n'existe pas encore en DB, l'import explose. On lit DB_PATH depuis le fichier de config et on fait l'ALTER TABLE via sqlite3 brut avant tout import de SQLAlchemy/app. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • ec50730c34 feat: transfert post-backup vers instance fédérée (HTTP chunked) - Ajout colonne remote_instance_id sur Job (DB + migration init_db.py) - Formulaire job : select avec optgroups SSH/rsync et Instances fédérées - push_archive_to_instance() dans jobs/transfer.py (réutilisable) - ynh_backup.py : branche elif remote_instance_id → push HTTP chunked auto Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 26c8dd0a7e fix: balise </div> manquante sur #site-header — main hors du fixed #site-header n'était jamais fermé : spacer et <main> étaient imbriqués dans le div fixed, rendant tout le contenu invisible. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 209a4e4ace fix: remplace ResizeObserver par syncHeaderSpacer au load/resize/toggle activité ResizeObserver créait une boucle infinie (modification du spacer → recalcul layout → re-fire observer). Remplacé par un appel simple sur window load, resize, et lors des show/hide de la barre d'activité. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • e6eb00ae87 fix: navbar fixed + spacer dynamique, suggestName() à l'init du formulaire - Navbar : sticky → fixed (unreliable sur flex child) + ResizeObserver sur spacer pour compenser la hauteur réelle du header (activity bar incluse) - Formulaire job : suggestName() appelé à l'init pour pré-remplir le nom dès l'ouverture, sans attendre une interaction utilisateur Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • 5e96d9dcf8 fix+feat: navbar sticky fonctionnelle, auto-remplissage nom de job - Fix sticky : h-full → min-h-screen sur body (h-full bloquait le scroll du document) - Auto-remplissage du nom depuis app_id / dossier source / nom de base selon le type Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش

cedric پوش کردن به main در YunoHost-Apps/backupmanager_ynh

  • de12f60340 fix: cron_expr stocké "" au lieu de None pour compatibilité schéma SQLite existant db.create_all() ne modifie pas les colonnes existantes, la contrainte NOT NULL reste en base — stocker chaîne vide évite l'IntegrityError sur les jobs manuels. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 ماه پیش