Changeset 114177 in spip-zone


Ignore:
Timestamp:
Feb 28, 2019, 9:09:53 AM (6 months ago)
Author:
marcimat@…
Message:

Quelques améliorations de l’analyseur :

  • Le composed-by de mediaspip est pris en compte
  • Le terme recherché 'spip' (si on n’a pas trouvé de version) dans le contenu des pages devient plus précis (spip_in, spip_out, spip_logo) afin d’éviter de faux positifs
  • Lorsqu’on n’a rien trouvé, c’est probablement que ce n’est plus un SPIP, et pas uniquement un vieux SPIP.
Location:
_dev_/univers_spip
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _dev_/univers_spip/inc/univers_analyser.php

    r112587 r114177  
    140140
    141141        // check if the header says "Hey, i'm made with SPIP"
    142         if (preg_match($regexp = ',Composed-By: (.*)( @ www.spip.net)( ?\+ ?(.*))?$,m', $header, $r)) {
     142        $regexp_plugin_spip = ',Composed-By: (?:.*)\+ (?<plugins>spip\((?<spip>[^)]+)\)(.*)?)$,m';
     143        $regexp_generique = ',Composed-By: (?<spip>.*)( @ www.spip.net)( ?\+ ?(?<plugins>.*))?$,m';
     144        if (
     145                preg_match($regexp_plugin_spip, $header, $r)
     146                or preg_match($regexp_generique, $header, $r)
     147        ) {
    143148                // essayer de choper local/config.txt si il est la car plus complet si le header semble coupe
    144149                if (substr($header, -1)!==')') {
     
    150155                                $config = univers_recuperer_lapage($url_config);
    151156                        }
    152                         if ($config and preg_match($regexp, $config[1], $rc)) {
    153                                 $r = $rc;
    154                         }
    155                 }
    156                 $res['spip'] = trim(preg_replace(',^[^0-9]*,', '', $r[1]));
     157                        if ($config) {
     158                                if (
     159                                        preg_match($regexp_plugin_spip, $config[1], $rc)
     160                                        or preg_match($regexp_generique, $config[1], $rc)
     161                                ) {
     162                                        $r = $rc;
     163                                }
     164                        }
     165                }
     166                $res['spip'] = trim(preg_replace(',^[^0-9]*,', '', $r['spip']));
    157167                if (!$res['spip']) {
    158168                        $res['spip'] = '?';
    159169                }
    160170                $res['plugins'] = array();
    161                 if ($p = array_filter(explode(',', $r[4]))) {
     171                if ($p = array_filter(explode(',', $r['plugins']))) {
    162172                        foreach ($p as $plugin) {
    163173                                $plugin = trim($plugin);
     
    167177        }
    168178        // else, find another clue
    169         // if 'spip' is in the html, there are some chance that it is a SPIP site
     179        // if 'spip_' is in the html, there are some chance that it is a SPIP site
    170180        if (!isset($res['spip'])) {
    171                 if (preg_match(',spip,i', $page)) {
    172                         $res['spip'] = '';
     181                if (preg_match(',spip_(in|out|logo),i', $page)) {
     182                        $res['spip'] = '?';
    173183                }
    174184        }
     
    176186        // if maybe but not sure, try to get the login page
    177187        // it should have some information that says "SPIP"
    178         if (isset($res['spip']) and (!$res['spip'] or $res['spip']=='?')) {
     188        if (isset($res['spip']) and $res['spip'] === '?') {
    179189                // recuperer la page de login
    180190                $login = preg_replace(',spip[.]php.*$,', '', $url).'ecrire/';
     
    192202        // try to get the htaccess.txt delivered with SPIP,
    193203        // it has some extra informations
    194         if (isset($res['spip']) and (!$res['spip'] or $res['spip']=='?')) {
     204        if (isset($res['spip']) and $res['spip'] === '?') {
    195205                // tenter de recup le htaccess.txt qui contient un numero de version
    196206                $ht = preg_replace(',spip[.]php.*$,', '', $url).'htaccess.txt';
     
    202212                }
    203213
    204                 // if we did'nt found a confirmation and there was only 'spip' in the html
    205                 // maybe it's an old spip site, but whe mark it apart as it is suspect
    206                 if (!$res['spip']) {
    207                         $res['spip'] = '<1.8?';
     214                // if we didn't found a confirmation and there was only 'spip' in the html
     215                // maybe it's an old spip site, but it’s no more a SPIP now.
     216                if ($res['spip'] === '?') {
     217                        unset($res['spip']);
    208218                }
    209219        }
  • _dev_/univers_spip/plugin.xml

    r113562 r114177  
    44        <licence>GPL</licence>
    55        <etat>test</etat>
    6         <version>0.2.31</version>
     6        <version>0.2.32</version>
    77        <version_base>0.1.10</version_base>
    88        <categorie>statistique</categorie>
Note: See TracChangeset for help on using the changeset viewer.