Joomladay francophone 2019 à Paris, les 8 et 9 mars 2019

Problème avec file_get_contents pour lire libraries/src/Version.php

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Problème avec file_get_contents pour lire libraries/src/Version.php

    Bonjour à tous,

    Je cherche à récupérer (dans un fichier externe mais placé dans le dossier du site, les infos de version de Joomla! présentes dans le fichier "libraries/src/Version.php".
    Pour ça, je fais un "file_get_contents" pour en récupérer le contenu sous forme de chaîne où j'irai ensuite chercher les clés et valeurs avec un preg_match_all.
    $vFile4 = file_get_contents($f4, FALSE, NULL, 0);
    Comme je n'arrive à rien, je fais afficher ce que j'ai récupéré dans ma chaîne $vFile4, et je m'aperçois que le contenu commence par :
    Joomla! is Free Software released under the GNU General Public License.
    qu'on ne trouve pas en début de fichier mais dans la ligne définissant 'const URL' ligne 146, et qui continue par
    '; /** * Magic getter providing access to constants previously defined as class member vars.
    qui n'apparaît dans le fichier qu'à la ligne 148, ce qui veut dire que les 145 premières lignes, celles où il y a, entre autres, les "const" que je veux récupérer, ne sont pas dans la chaîne récupérée par file_get_contents.
    Si je définis une "max length" pour essayer de forcer la lecture au début, ce que j'ai déjà fait avec offset à 0, je récupère une chaîne vide.

    Qu'est-ce qui peut expliquer ce comportement ? Y a-t-il une méthode simple pour lire ce fichier et récupérer les MAJOR_VERSION, MINOR_VERSION et autres constantes utiles ?
    Utiliser ce fichier me semblait plus simple que décoder le manifeste joomla.xml, mais j'ai l'impression de m'être trompé...

    Merci par avance de vos conseils !
    Robert
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

  • #2
    Envoyé par RobertG Voir le message
    Comme je n'arrive à rien, je fais afficher ce que j'ai récupéré dans ma chaîne $vFile4, et je m'aperçois que le contenu ...
    Comment as-tu fait l'affichage ? Un simple "echo" ? (n'oublie pas que c'est du code PHP qui se trouve dans ce fichier)

    Tu devrais faire un "echo '<pre>' . print_r($vFile4, true) . '</pre>';" pour voir le contenu réel; non interprété.

    Christophe (cavo789)
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
    Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
    Mes logiciels OpenSource : https://www.avonture.be
    Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

    Commentaire


    • #3
      Merci Christophe, mais je n'y arrive pas. Ni echo, ni print_r de me renvoie quoi que ce soit.
      En fait, j'essayais de modifier ton fichier jamss.php qui ne fonctionne plus depuis que le fichier version.php a changé d'emplacement, de contenu et de libellé pour Version.php
      Pour le moment, la seule solution qui fonctionne est le décodage du fichier manifeste joomla.xml
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

      Commentaire


      • #4
        Jamss n'est pas mon fichier ;-)
        Voici la source https://github.com/btoplak/Joomla-An...Script--JAMSS-
        Christophe (cavo789)
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
        Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
        Mes logiciels OpenSource : https://www.avonture.be
        Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

        Commentaire


        • #5
          Oui, mais il y a quand même ton copyright dans celui d'aeSecure. Je suis donc parti de l'idée que tu l'avais personnalisé, ce qui est vrai.
          Ceci dit, la version originale ne reconnaîtra pas plus les versions récentes dans la mesure où les fichiers cherchés pour connaître la version de Joomla! n'existent plus depuis je ne sais plus quelle version 3.
          Quant à la recherche de la version, elle se fait, sur les anciennes de Joomla!, dans des fichiers "version.php" où les infos semblent bien récupérées.
          Il faudrait que je me remonte une version 3.0 pour vérifier.

          Dans ce nouveau fichier, les variables sont remplacées par des constantes : public $RELEASE devient const RELEASE, par exemple.

          Ce qui est bizarre, c'est que dans ce fichier dont je ne vois pas l'entête dans $vFile4 (quand je mets $joomla['version_text'] = $vFile4 et que jamss m'affiche la page après traitement des fichiers) le "preg_match_all" est capable de me retrouver "const DEV_LEVEL" mais pas "const RELEASE" ou "const MAJOR_VERSION". Peut-être parce qu'il y a trois fois "major_version" et cinq fois "release" dans le fichier et que je ne sais pas récupérer comme il faut ces éléments de tableau ?

          PS : j'ai réussi à utiliser finalement echo '<pre>' . print_r($vFile4, true) . '</pre>'; qui me montre toujours le contenu du fichier à partir de la ligne 146 (et toutes les fonctions au-dessous), et je confirme que certaines constantes sont bien récupérées, mais pas RELEASE, MAJOR_VERSION ni MINOR_VERSION
          Les arrays dont je devrais voir le contenu (selon le manuel PHP)avec un "print_r ($MINOR");" après avoir récupéré preg_match_all('|\MINOR_VERSION\s*=.*\'(.*)\'|iS', $vFile4,$MINOR);
          me donnent
          Array ( [0] => Array ( ) [1] => Array ( ) )
          alors que pour $DEV_STATUS, je récupère
          Array ( [0] => Array ( [0] => DEV_LEVEL = '3-dev' ) [1] => Array ( [0] => 3-dev ) )
          Dernière édition par RobertG à 28/01/2019, 11h36
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

          Commentaire


          • #6
            Je viens de tester sur la version 4.0 de développement, où ce fichier Version.php n'a plus certaines chaînes obsolètes comme RELEASE.

            Aucune des "const" MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION n'est récupérée par preg_match_all, seulement EXTRA_VERSION et DEV_STATUS, et partiel pour EXTRA:
            Array ( [0] => Array ( [0] => XTRA_VERSION = 'alpha7-dev' ) [1] => Array ( [0] => alpha7-dev ) )
            Il manque le "E" de "EXTRA_VERSION" alors que pour DEV_STATUS l'info est bonne
            Array ( [0] => Array ( [0] => DEV_STATUS = 'Development' ) [1] => Array ( [0] => Development ) )
            On dirait bien que contrairement à ce qui devait se passer pour les versions avant la 3.8.0, ce fichier ne soit pas lu depuis le début...

            Complément : en version 3.5.0, 'public $RELEASE' devient 'const RELEASE' par exemple et jamss.php ne sait plus reconnaître la version
            E version 3.7.5 où on a toujours l'ancien fichier version.php, même problème qu'avec les versions actuelles, on ne récupère pas "RELEASE" qui est dan sle fichier avant "DEV_LEVEL"
            Dernière édition par RobertG à 28/01/2019, 16h58
            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

            Commentaire


            • #7
              Désolé mais je ne comprends pas trop... C'est pour porter l'outil jamss sur J4 ? As-tu vérifié avec l'auteur sur github.com ?
              Christophe (cavo789)
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
              Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
              Mes logiciels OpenSource : https://www.avonture.be
              Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

              Commentaire


              • #8
                Rien sur Github depuis 5 ans.
                C'est pour tenter de mettre à jour ta version incluse dans aeSecure.

                D'une manière ou d'une autre, ce que je n'arrive pas à comprendre c'est que certaines parties du fichier semblent totalement ignorées, comme si file_get_contents qui savait lire les anciens "version.php" (avant la 3.7.5 que j'ai testée tout à l'heure) ne sait plus lire le début du fichier, et ne renvoie donc pas les valeurs correspondantes.
                "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

                Commentaire


                • #9
                  Note qu'aeSecure Quickscan est je pense meilleur et je l'ai mis à jour fin 2018
                  Christophe (cavo789)
                  Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                  Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                  Mes logiciels OpenSource : https://www.avonture.be
                  Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

                  Commentaire


                  • #10
                    Je crois que la dernière fois que je l'ai testé il m'a dit ne pas trouver les fichiers de la version de Joomla!, mais peut-être n'avais-je pas utilisé ta dernière version.
                    Je viens donc de tenter avec la toute dernière, et j'ai ce message (sur un site en local)
                    Désolé, les signatures des fichiers pour la version 3.9.1 de Joomla n'ont pas été trouvées; le scan du site sera donc bien plus long.
                    Ceci m'amène aussi à deux questions :
                    - faut-il supprimer Jamss du menu aeSecure ?
                    - et toujours pourquoi on ne récupère pas le début du fichier, dans mes tests de Jamss ?
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

                    Commentaire


                    • #11
                      Il semble que ce soit le "pattern" qui soit en cause dans jamss, car si je prends exemple sur ce que tu utilises avec seulement preg_match au lieu de preg_match_all dans aesecure_quickscan, je récupère bien RELEASE dans une version 3.7.5
                      Il me rester à tester ta méthode avec les versions plus récentes.
                      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

                      Commentaire


                      • #12
                        Envoyé par RobertG Voir le message
                        Je crois que la dernière fois que je l'ai testé il m'a dit ne pas trouver les fichiers de la version de Joomla!, mais peut-être n'avais-je pas utilisé ta dernière version.
                        Je viens donc de tenter avec la toute dernière, et j'ai ce message (sur un site en local)


                        Ceci m'amène aussi à deux questions :
                        - faut-il supprimer Jamss du menu aeSecure ?
                        - et toujours pourquoi on ne récupère pas le début du fichier, dans mes tests de Jamss ?
                        À chaque sortie d'un joomla (ou autre CMS) je dois générer un fichier de signatures et c'est vrai que je ne suis pas cela avec une extrême rigueur.

                        Pour jamss oui tu pourrais l'ignorer (ou le supprimer). D'ailleurs sur certains hébergeurs je conseillais de le supprimer car ces hébergeurs considéraient jamss comme dangereux (faux positifs bien sûr). Aesecure Quickscan ne sera plus jamais considéré comme faux positifs car il ne contient plus de patterns puisqu'ils les téléchargent au fur et à mesure au format json.

                        Bonne soirée
                        Christophe (cavo789)
                        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                        Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                        Mes logiciels OpenSource : https://www.avonture.be
                        Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

                        Commentaire


                        • #13
                          Merci Christophe !
                          Je viens de tester avec le code que tu utilises dans aesecure_quickscan (modifié dans jamss) et les valeurs de remplacement de RELEASE (MAJOR_ à EXTRA_VERSION), qui apparaissent avant sa définition dans Version.php des 3.9, ne sont pas récupérées, et ne passent pas en version 4.0 dev non plus.
                          C'est ça que j'aimerais comprendre : pourquoi le début du fichier semble ignoré.
                          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

                          Commentaire


                          • #14
                            Bonjour !

                            Je viens de faire un test en modifiant la dernière version de aesecure_quickscan afin d'utiliser MAJOR_VERSION, MINOR_VERSION et PATCH_VERSION sur une 3.9.3-dev à la place des constantes RELEASE et DEV_LEVEL devenues obsolètes.
                            J'ai donc changé la liste des chaînes à trouver ($arr) et la construction des chaînes renvoyant la version :
                            $Version = $arr['MAJOR_VERSION'] . '.' . $arr['MINOR_VERSION'] . '.' . $arr['PATCH_VERSION'] . '.' . $arr['DEV_STATUS'];
                            //$FullVersion = $arr['RELEASE'] . '.' . $arr['DEV_LEVEL'] . ' (' . $arr['DEV_STATUS'] . ') ' . '(' . $arr['RELDATE'] . ' ' . $arr['RELTIME'] . ' ' . $arr['RELTZ'] . ')';
                            $FullVersion = $Version . '(' . $arr['RELDATE'] . ' ' . $arr['RELTIME'] . ' ' . $arr['RELTZ'] . ')';
                            et print_r ($Fullversion); me renvoie
                            0.0.0.Development(15-January-2019 0 GMT)
                            aesecure_quickscan n'arrive pas non plus à récupérer ce qui est présent avant DEV_STATUS, bien qu'un "print_r ($content)" montre bien (dans le code-source de la page affichée) le contenu du fichier Version.php depuis sa première ligne.
                            La question reste donc de comprendre pourquoi ces trois lignes ne sont pas récupérées.
                            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

                            Commentaire


                            • #15
                              Salut

                              Que je comprenne bien : le fichier de version a changé sous J3.9.3-dev et le pattern que j'utilise dans QuickScan devrait être adapté pour en tenir compte. Correct ? Si oui, je tâcherais d'y jeter un oeil sous peu.

                              Bonne journée.
                              Christophe (cavo789)
                              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                              Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                              Mes logiciels OpenSource : https://www.avonture.be
                              Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X