CORRECTIF DOUAWE VPN — erreur 500 de « Administration VPN » ET cron arrêté

CE QUE CE CORRECTIF RÉPARE
 1. « Administration VPN » (erreur 500) : trois routes manquaient (vpn.admin.api-settings, .save, .test). Elles sont ajoutées.
 2. LE CRON : depuis le 8 octobre 15:06, toutes les commandes artisan plantaient (« An option named "quiet" already exists »), donc aussi la tâche planifiée
    (lecture des ventes sur les routeurs, relevés, expiration…). La commande vpn:sync ne redéclare plus l'option --quiet de Laravel.
 3. Défauts du module VPN trouvés en cours de route :
    - la colonne « Client » de l'administration était vide et la recherche aurait donné une erreur SQL (mauvaise relation appareil → abonnement) ;
    - enregistrer la configuration API avec le jeton dans .env donnait une erreur 500 ;
    - l'adresse et le jeton saisis dans « Configuration API » n'étaient pas utilisés par l'activation des appareils (seul .env comptait) ;
    - l'annulation (rollback) de la migration connection_status échouait ;
    - la règle de pare-feu du script MikroTik était ajoutée en fin de chaîne (donc inefficace) : elle est maintenant placée en tête ;
    - les erreurs techniques étaient montrées telles quelles aux clients : seuls des messages clairs sont montrés.
 4. Sécurité : la clé privée de chaque appareil est générée dans l'application ; le serveur VPN ne reçoit que la clé publique (une ancienne API qui génère ses clés reste acceptée).
    L'API doit être en https. Chaque création, révocation, téléchargement de configuration et confirmation de paiement est inscrit au journal d'activité, sans aucun secret.
    La clé privée est effacée dès qu'un appareil est révoqué.

INSTALLATION (une fois, ~5 minutes)
 1. Gestionnaire de fichiers cPanel > dossier « public_html » (celui qui CONTIENT le dossier wifi.douaweproshop.ci) > envoyer ce zip > Extraire, en remplaçant les fichiers.
    Seuls 28 fichiers sont concernés : le reste de votre site n'est pas touché. .env et vos données ne sont pas dans ce zip.
 2. Dans wifi.douaweproshop.ci/bootstrap/cache : supprimer les fichiers .php (garder .gitignore).
 3. Connecté en super administrateur : « Mettre à jour la base » (1 changement : les forfaits « 1 appareil » passent à « 2 appareils »,
    puisqu'un abonnement couvre le téléphone ET le MikroTik). Ou au terminal : php artisan migrate --force
 4. Vérifier le cron : au terminal, « php artisan list » doit s'afficher sans erreur ; « php artisan schedule:run » aussi.
    Le fichier storage/logs/laravel.log ne doit plus recevoir « An option named "quiet" ».
 5. Ouvrir « Administration VPN » : elle s'affiche. Cliquer « Configuration API » : adresse en https:// et jeton, puis « Tester la connexion API ».

NOUVELLES COMMANDES (terminal)
 php artisan vpn:diagnose   vérifie toute la chaîne (configuration, serveur enregistré, API, jeton, clé du serveur), SANS rien créer
 php artisan vpn:audit      compare le serveur WireGuard et la base : appareils fantômes, révoqués encore autorisés, expirés encore actifs, doublons
 php artisan vpn:setup      enregistre le serveur (--host=… --public-key=…) et crée les forfaits de départ s'il n'y en a aucun (ne modifie jamais un forfait existant)
 Une page « 🔎 Audit » est aussi disponible dans l'Administration VPN.

À SAVOIR
 - Ce correctif ne change PAS ce qui tourne sur le serveur VPN. Le dossier d'API de serveur (douawe_vpn_api_serveur_v2.zip, livré à part) n'est à installer qu'après
   « php artisan vpn:diagnose » : l'API actuellement en production n'a pas pu être retrouvée dans vos fichiers.
 - Votre suite de tests contenait déjà environ 60 échecs sans rapport avec le VPN (zones, commandes de routeur, assistant « temps limite »…). Ce correctif n'en ajoute aucun.
 - Anciennes vues restées sur le serveur (zones/, routers/tabs/commands, routers/tabs/tickets) : inutilisées, sans effet.
