🇫🇷 Version Française

🧵 [PLUGIN] ConfigManager évolue !

Nouvelle fonctionnalité : gestion du cache intégrée au panneau d’administration de 299Ko CMS.

🔹 Pourquoi ?

299Ko offrait déjà un cache performant, mais il manquait une interface simple pour le configurer.
➡️ C’est désormais chose faite grâce à la version v2.0.1 du plugin ConfigManager.


✅ v2.0.1 — Nouvelles fonctionnalités :

  • Ajout d’une section "Gestion de Cache" dans le panneau Admin
  • Réglage de la durée du cache
  • Lazy loading automatique pour toutes les balises <iframe> et <img>
  • Ajout automatique de alt="" sur les images qui n’en ont pas
  • Minification du HTML mis en cache

🚧 v2.0.2 — En cours de développement :

  • ✅ Minification automatique des fichiers JS & CSS

Fonctionnalité terminée, pas encore poussée en ligne

  • 🧪 Génération automatique du fichier sitemap.xml

Version MVP fonctionnelle, à intégrer dans le plugin


🔎 Tester la nouvelle version

🧪 Nous avons besoin de testeurs !


💬 Vos retours sont les bienvenus pour améliorer encore le système.

Merci à ceux qui testeront et contribueront ! 🙏


🇬🇧 English version

🧵 [PLUGIN] ConfigManager just got an upgrade!

New feature: cache management now available from the 299Ko CMS admin panel.

🔹 Why this change?

299Ko already had a solid caching system, but lacked a simple UI to manage it.
➡️ The new v2.0.1 of the ConfigManager plugin solves that.


✅ v2.0.1 — What’s new:

  • New “Cache Management” section in the admin panel
  • Configure cache lifetime easily
  • Automatic lazy loading for all <iframe> and <img> tags
  • Adds missing alt="" attributes to <img>
  • HTML minification for cached pages

🚧 v2.0.2 — In development:

  • ✅ Automatic JS & CSS minification

Fully working but not yet pushed online

  • 🧪 Auto-generation of the sitemap.xml file

MVP functional, pending integration into the plugin


🔎 Help us test the new version!

We need testers!


💬 Feedback is very welcome to help us improve.
Thanks to everyone testing and contributing! 🙏

Hello,

Hello,
Je viens juste d'installer cette version pour test, je remonterai les infos de bug ou manquantes ici.

Je viens de voir qu'il y a maintenant, dans Administration/Antispam : "Utiliser un captcha icône".

Par contre dans la partie aide, il n'y a pas les informations.

Ce n'est rien de grave, juste une information pour mise à jour. 😉

Edit : le captcha icônes fonctionne très bien. 😉

  • Max replied to this.

    gn1234567

    Hum non enfait ça a été poussé avec la vérification du http referer qui provoque ce soucis, il faut que je cherche pourquoi 😉

    Merci de ton retour , et de m'avoir rappelé ce "problème" a moitié résolu

    Vraiment pas mal ces ajouts !
    Si je peut me permettre, cela serait cool de réaliser des onglets comme pour l'ajout d'un article du plugin blog, pour séparer les paramètres par "catégories".

    PS: les modifications apportés pour fixer le bogue du mot de passe dans le plugin "page", est basé sur cette version de la discussion.

      Fred

      Fred cela serait cool de réaliser des onglets comme pour l'ajout d'un article du plugin blog, pour séparer les paramètres par "catégories".

      Excellente remarque je vais voir ça , ou au moins un mini menu avec ancre qui te renvoi a la bonne section.

      Pour ton PS, la branche présente ici est basé sur le Master.
      Le master a été mis a jours mais en gardant le http Referer dans la vérification post formulaire.
      C'est ça qui apporte le problème. Nous allons le supprimer (mais en attendant pour patcher la 2.0.0 il faut appliquer la modification que j'ai proposée dans l'autre sujet )

      J'avais pas vue ta réponse sur le sujet concerné par le bug MDP ! Merci de ta participation ! Nous allons regarder tout ça 😉

      Merci de tes retours 🙂

      gn1234567

      Salut !
      En effet, à ajouter, merci.

      Fred Si je peut me permettre, cela serait cool de réaliser des onglets comme pour l'ajout d'un article du plugin blog, pour séparer les paramètres par "catégories".

      Salut Fred, content de te lire 🙂
      En effet, il faudrait uniformiser. C'est pas long en plus, c'est juste qu'à l'époque j'avais testé et j'attendais le retour des utilisateurs avant de supprimer ça ou de le déployer partout. J'ai ma réponse, merci.

      Attention, avant tout tests sur une vrai installation de prod, veuillez faire une sauvegarde du dossier data/ complet , c'est plus prudent !

      Pour voir l'évolution, c'est plus bas !
      Nous passerons a password_hash plus tard, normalement avec ce qui a été mis en place ici ce sera plus simple dans l'éventualité ou un jours nous mettions en place le "vrai" multi-user avec rangs.

      Enjoy

      url du zip de test (pas encore sur github mais techniquement compatible Master, pas essayé sur 2.0.0):

      Rapport Complet des Différences : Version Originale vs Upgrade Version

      Vue d'ensemble

      Ce rapport détaille toutes les améliorations, ajouts et modifications apportés au plugin Page du CMS 299Ko entre la version originale du Master Github et la version présentée ici. Cette version représente une évolution majeure en termes de sécurité, d'interface utilisateur, de fonctionnalités et de maintenabilité.


      🔒 AMÉLIORATIONS DE SÉCURITÉ MAJEURES

      1. Protection par mot de passe renforcée

      Version originale :

      • Hachage SHA1 simple sans sel
      • Session unique globale ($_SESSION['pagePassword'])
      • Aucune expiration de session
      • Aucune protection contre les attaques par force brute

      Upgrade Version :

      • Hachage HMAC-SHA1 avec clé secrète (KEY)
      • Sessions individuelles par page (pagePassword_[ID])
      • Expiration configurable des sessions
      • Protection contre la force brute (limite de 5 tentatives par heure par IP)
      • Hachage des IP pour la conformité RGPD
      • Tokens CSRF indépendants pour les pages protégées

      2. Gestion des sessions avancée

      Version originale :

      $_SESSION['pagePassword'] = sha1($obj->getId()) . $obj->getPassword() . sha1($_SERVER['REMOTE_ADDR']);

      Upgrade Version :

      // Sessions individuelles avec expiration
      $_SESSION['pagePassword_' . $pageId] = sha1($obj->getId()) . $obj->getPassword() . sha1($_SERVER['REMOTE_ADDR']);
      $_SESSION['pagePasswordToken_' . $pageId] = hash_hmac('sha1', $obj->getId() . $_SESSION[$sessionKey], KEY);
      $_SESSION['pagePasswordExpiry_' . $pageId] = time() + $sessionExpiryTime;

      3. Protection contre la force brute

      Nouveau système :

      • Limite de 5 tentatives par heure par IP
      • Hachage des adresses IP pour la conformité RGPD
      • Nettoyage automatique des anciennes tentatives
      • Réinitialisation des tentatives après connexion réussie
      • Logging détaillé des tentatives

      🎨 INTERFACE UTILISATEUR MODERNISÉE

      1. Design inspiré du plugin Blog

      Version originale :

      • Interface basique avec tableaux simples
      • Pas de distinction visuelle entre types de pages
      • Boutons d'action basiques

      Upgrade Version :

      • Système d'onglets moderne
      • Badges colorés pour les types de pages (parent, plugin, URL, page)
      • Icônes FontAwesome pour une meilleure UX
      • Styles CSS dédiés (admin.css)
      • Indicateurs visuels pour le statut (visible/masquée, protégée, page d'accueil)

      2. Gestion de l'ordre améliorée

      Version originale :

      • Flèches simples pour monter/descendre
      • Pas de gestion de la hiérarchie parent/enfant

      Upgrade Version :

      • Recalcul automatique des positions après suppression
      • Gestion de la hiérarchie (pages enfants sous parents)
      • Méthode de recalcul pour corriger les trous dans la numérotation
      • Bouton de recalcul manuel dans l'interface admin

      3. Navigation améliorée

      Nouveau :

      • Lien de retour vers la liste depuis les formulaires d'édition
      • Breadcrumbs visuels
      • Boutons d'action avec icônes et tooltips

      🌐 INTERNATIONALISATION COMPLÈTE

      1. Traductions étendues

      Version originale :

      • Traductions de base en français, anglais, russe
      • Commentaires en français dans le code

      Upgrade Version :

      • Commentaires en anglais dans tout le code
      • Nouvelles clés de traduction pour toutes les fonctionnalités
      • Messages d'erreur traduits
      • Interface de protection entièrement traduite

      2. Nouvelles traductions ajoutées

      # Protection par mot de passe
      page.protection-config = "Configuration de protection"
      page.enable-session-expiry = "Activer l'expiration automatique de session"
      page.session-duration = "Durée de session (en secondes)"
      page.enable-remember-me = "Activer l'option \"Rester connecté\""
      
      # Interface utilisateur
      page.back-to-list = "Retour à la liste"
      page.type = "Type"
      page.status = "Statut"
      page.actions = "Actions"
      page.visible = "Visible"
      page.hidden = "Masquée"
      page.protected = "Protégée"

      🔧 FONCTIONNALITÉS NOUVELLES

      1. Système de migration intégré

      Nouveau :

      • Détection automatique des pages nécessitant une migration
      • Migration sécurisée avec réinitialisation conditionnelle des mots de passe
      • Interface admin pour lancer la migration
      • Logging détaillé du processus de migration

      2. Configuration de protection avancée

      Nouvelles options :

      • Expiration de session configurable (désactivée, personnalisée, infinie)
      • Option "Rester connecté" avec session infinie
      • Durée de session personnalisable (300s à 604800s)
      • Interface dédiée dans les formulaires d'édition

      3. Logging et monitoring

      Nouveau système de logging :

      • Tentatives de connexion (succès/échecs)
      • Expiration de sessions
      • Actions administratives
      • Processus de migration
      • Erreurs de sécurité

      📊 STRUCTURE DES DONNÉES AMÉLIORÉE

      1. Nouveaux champs de données

      Version originale :

      {
        "id": 1,
        "name": "Page",
        "password": "sha1_hash",
        // ... autres champs de base
      }

      Version actuelle :

      {
        "id": 1,
        "name": "Page",
        "password": "hmac_sha1_hash",
        "sessionExpiryEnabled": false,
        "sessionExpiryTime": 300,
        "rememberMeEnabled": false,
        // ... autres champs de base
      }

      2. Fichiers de données supplémentaires

      Nouveaux fichiers :

      • data/plugin/page/attempts.json - Suivi des tentatives de connexion
      • data/plugin/page/admin.css - Styles CSS dédiés

      🛡️ SÉCURITÉ RENFORCÉE

      1. Protection CSRF

      Version originale :

      • Aucune protection CSRF pour les pages protégées

      Version actuelle :

      • Tokens CSRF indépendants pour chaque page protégée
      • Génération sécurisée des tokens
      • Vérification côté serveur

      2. Gestion des erreurs

      Version originale :

      • Gestion d'erreur basique

      Version actuelle :

      • Try-catch pour les opérations critiques
      • Logging d'erreurs détaillé
      • Gestion gracieuse des échecs de fichiers

      🔄 COMPATIBILITÉ ET MIGRATION

      1. Compatibilité ascendante

      • Lecture des anciens formats de données
      • Migration automatique des paramètres manquants
      • Préservation des données existantes

      2. Processus de migration

      • Détection intelligente des pages à migrer
      • Réinitialisation conditionnelle des mots de passe
      • Configuration sécurisée par défaut
      • Rollback possible via sauvegarde

      📈 AMÉLIORATIONS DE PERFORMANCE

      1. Optimisation des requêtes

      • Nettoyage automatique des tentatives expirées
      • Cache des données de pages
      • Optimisation du recalcul des positions

      2. Gestion mémoire

      • Libération des sessions expirées
      • Nettoyage des données temporaires

      🎯 GAINS PRINCIPAUX

      Sécurité

      • ✅ Protection par mot de passe
      • ✅ Protection contre les attaques par force brute
      • ✅ Sessions avec expiration configurable
      • ✅ Conformité RGPD (hachage des IP)
      • ✅ Protection CSRF

      Interface utilisateur

      • ✅ Interface moderne et intuitive
      • ✅ Gestion visuelle des types de pages
      • ✅ Navigation améliorée
      • ✅ Feedback utilisateur enrichi

      Fonctionnalités

      • ✅ Système de migration intégré
      • ✅ Configuration avancée des sessions
      • ✅ Gestion de l'ordre améliorée
      • ✅ Logging complet des actions

      Maintenabilité

      • ✅ Code commenté en anglais
      • ✅ Structure modulaire
      • ✅ Gestion d'erreurs robuste
      • ✅ Documentation complète

      Conformité

      • ✅ Traductions complètes (FR/EN/RU)
      • ✅ Conformité RGPD
      • ✅ Standards de sécurité modernes

      📋 RÉSUMÉ TECHNIQUE


      • Sécurité
        L’ancienne version utilisait un hachage SHA1 simple, vulnérable.
        La version actuelle repose sur HMAC-SHA1 avec une protection contre la force brute.
        Niveau d’amélioration : très élevé

      • Interface
        Interface basique dans la version d’origine.
        L’interface actuelle est plus moderne, avec une navigation par onglets.
        Niveau d’amélioration : élevé

      • Fonctionnalités
        Fonctionnalités limitées dans la version initiale.
        La nouvelle version intègre des options avancées, dont la migration automatique.
        Niveau d’amélioration : très élevé

      • Traductions
        Les traductions étaient partielles et incomplètes.
        Elles sont désormais complètes pour le français, l’anglais et le russe.
        Niveau d’amélioration : élevé

      • Journalisation (logging)
        La version originale ne proposait qu’un suivi minimal.
        La nouvelle version fournit un système de journalisation complet et détaillé.
        Niveau d’amélioration : très élevé

      • Maintenabilité
        Le code était moyennement maintenable.
        Il est désormais entièrement structuré et optimisé pour la maintenance.
        Niveau d’amélioration : très élevé


      • Sécurité renforcée avec des standards modernes
      • Interface utilisateur moderne et intuitive
      • Fonctionnalités avancées pour une gestion professionnelle
      • Conformité aux standards actuels (RGPD, sécurité)

      Oh tu as bossé toute la nuit ? ^^
      Ca a l'air très bien, j'essaye de tester demain. Merci !

        Max

        Un peut la nuit dernière et toute la journée, mon plus petit a été relativement sage aujourd'hui ^^'.

        mais quand t'as pas tout a réécrire ça va.


        Ca vaut au moins une version 3.0.0, ca ... 😉