alpinux-static/app/CHANGELOG.md
Alpinux abf13db0e6 chore: changelog v1.5.1 — détail des corrections ignore/ban IP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:18:43 +02:00

4.8 KiB

Changelog — Alpinux Static

[1.5.1] — 2026-05-06

Corrigé

  • Ignorer une IP : /opt/static-cdn/ appartenait à abonnelc alors que le service tourne sous static-cdn — écriture de ignored_ips.json silencieusement impossible ; corrigé par chown -R static-cdn + script de déploiement mis à jour
  • Ignorer une IP : invalidation du cache multi-worker gunicorn basée sur le mtime de ignored_ips.json (chaque worker re-parse dès que le fichier change)
  • Bannir une IP : règle sudoers créée pour static-cdn (compte de service réel, pas abonnelc) avec chemins absolus /usr/bin/sudo et /usr/bin/fail2ban-client

[1.5.0] — 2026-05-06

Ajouté

  • Onglet Erreurs dans la navigation : analyse des logs Apache des 7 derniers jours (fichiers .gz inclus)
  • Tableau des erreurs 404 trié par fréquence, avec badge statut coloré (✗ actif / ✓ résolu) cliquable
  • Détail par chemin (AJAX) : liste des IPs avec compteur, dernière date, referers
  • Ignorer une IP (devs, tests, IPs internes) — persisté dans ignored_ips.json, cache invalidé
  • Bannir une IP directement depuis l'interface via fail2ban-client set global-blacklist banip
  • Section des IPs ignorées avec suppression individuelle

[1.4.2] — 2026-05-06

Corrigé

  • Statistiques : la page affichait une erreur de génération alors qu'ISPConfig génère déjà le rapport GoAccess chaque nuit — STATS_FILE pointe maintenant directement sur le fichier ISPConfig

[1.4.1] — 2026-05-06

Corrigé

  • Changelog : TypeError au rendu — clé items du dict en conflit avec la méthode Python dict.items() en Jinja2 (renommée entries)
  • Sélecteur de largeur : boutons L et ∞ sans effet — max-width:none + margin:auto sur flex child rétrécissait <main> ; remplacé par data-cw sur <html> + sélecteurs CSS d'attribut

[1.4.0] — 2026-05-06

Ajouté

  • Sélecteur de largeur du contenu dans le header : Étroit (900 px), Normal (1 200 px), Large (1 600 px), Plein — préférence mémorisée dans le navigateur
  • Changelog avec numéro de version sémantique, accessible depuis le footer

Corrigé

  • Décalage de largeur entre les pages dû à l'apparition/disparition de la scrollbar (scrollbar-gutter: stable)
  • Labels EXIF non traduits : ResolutionUnit, XResolution, YResolution
  • Valeur numérique brute pour ColorSpace → libellé lisible (sRGB, Adobe RGB, Non calibré)

Modifié

  • Contenu principal en pleine largeur (suppression du max-width fixe sur <main>)

[1.3.0] — 2026-05-06

Ajouté

  • Prévisualisation des fichiers depuis la corbeille (propriétés, métadonnées, téléchargement)
  • Footer sur toutes les pages avec liens de navigation et numéro de version
  • Stats corbeille dans le tableau de bord (nombre de fichiers, taille totale, date du plus ancien)

Modifié

  • Header compact : avatar initiale + prénom + icône déconnexion (suppression du bouton texte)
  • Suppression du lien « Tableau de bord » dans la navigation (doublon avec le logo)
  • user, humansize, trash_count centralisés dans le context processor Flask (disponibles sur toutes les pages)

[1.2.0] — 2026-05-06

Ajouté

  • Corbeille : mise à la corbeille depuis /browse, restauration avec gestion des conflits (écraser / renommer), suppression définitive
  • Purge automatique des éléments en corbeille depuis plus de 30 jours
  • Badge dans la navigation indiquant le nombre d'éléments en corbeille
  • Page /trash avec tableau partagé (mode browse / trash) et bouton « Vider la corbeille »

[1.1.0] — 2026-05-06

Ajouté

  • Redimensionnement d'images depuis la prévisualisation : tailles prédéfinies, dimension libre, formats PNG/JPG/ICO
  • Gestion des conflits lors du redimensionnement (backup, écraser, renommer, ignorer)
  • Renommage de fichiers inline dans /browse et la page de prévisualisation
  • Affichage des métadonnées image (dimensions, format, mode couleur, DPI, EXIF)
  • Dimension libre avec contrainte de proportions (mode « carré »)

Corrigé

  • Échec du redimensionnement sur les fichiers ICO en mode palette (conversion RGBA avant LANCZOS)
  • Aucune sélection de taille ou format → copie à l'identique (comportement par défaut)

[1.0.0] — 2026-05-03

Ajouté

  • Upload de fichiers par glisser-déposer avec gestion des conflits (écraser, backup, renommer, ignorer)
  • Parcourir les assets CDN depuis /browse avec fil d'Ariane
  • Statistiques de consultation via GoAccess (/stats), générées à la demande
  • Authentification SSO via AlpID (Keycloak / OpenID Connect)
  • Recherche dans les fichiers
  • Scripts rsync push-assets.sh et pull-assets.sh pour la synchronisation locale ↔ serveur
  • Script deploy-app.sh pour le déploiement de l'application Flask