Changeset 43858 in spip-zone


Ignore:
Timestamp:
Jan 25, 2011, 3:03:22 AM (8 years ago)
Author:
patfr@…
Message:

[new/modif]Ecran de sécurité : Pour SPIP>=2.1, le fichier distant est copié dans /config/ (configuration globale) afin de bénéficier de l'appel automatique de SPIP juste après /config/mes_options.php
Les mutualisations bénéficient donc de ce seul fichier pour tous les sites.
Attention de bien régler les options SPIP "en amont" dans l'outil "Comportements du Couteau Suisse" pour bénéficier des réglages.

Pour SPIP<2.1, le comportement antécédent n'est pas modifié, le Couteau Suisse gère lui-même l'appel à l'écran de sécurité et détecte les conflits.

+ double appel du pipeline 'fichier_distant', le premier servant à définir le nom complet du fichier local, le second agissant sur le texte et le message à renvoyer.

Location:
_plugins_/couteau_suisse
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r43855 r43858  
    348348        'check' => 'couteauprive:ecran_activer',
    349349        'defaut' => 1,
    350         // code en realpath() pour config/mes_options.php
    351         'code:%s' => "// bug SPIP 1.92?, 2.0 et 2.1
     350        // code d'appel en realpath() pour config/mes_options.php (SPIP < 2.1)
     351        'code:%s' => "// bug SPIP 1.92, 2.0 et 2.1
    352352if(isset(\$_REQUEST['exec']) && strncmp('admin_couteau_suisse',\$_REQUEST['exec'],20)==0) \$_REQUEST['exec']='admin_couteau_suisse';
    353 if(!defined('_ECRAN_SECURITE') && @file_exists(\$f=\"".str_replace('\\','/',realpath(dirname(__FILE__)))."/lib/ecran_securite/distant_ecran_securite.php\")) include \$f;",
     353".(!defined('_SPIP20100'))?"if(!defined('_ECRAN_SECURITE') && @file_exists(\$f=\"".str_replace('\\','/',realpath(dirname(__FILE__)))."/lib/ecran_securite/distant_ecran_securite.php\")) include \$f;":'',
    354354), array(
    355355        'nom' => 'ecran_load',
     
    363363        'categorie' => 'securite',
    364364        'distant' => 'http://zone.spip.org/trac/spip-zone/browser/_core_/securite/ecran_securite.php?format=txt',
    365         'pipelinecode:fichier_distant' => 'ecran_securite_fichier_distant',
     365        'pipeline:fichier_distant' => defined('_SPIP20100')?'ecran_securite_fichier_distant':'',
    366366        'pipelinecode:pre_description_outil' => 'if($id=="ecran_securite") $flux["non"] = !%%ecran_actif%% || !$flux["actif"];',
    367367        'pipeline:pre_description_outil' => 'ecran_securite_pre_description_outil',
  • _plugins_/couteau_suisse/cout_pipelines.php

    r43855 r43858  
    216216function couteau_suisse_fichier_distant($flux) {
    217217        global $cs_metas_pipelines;
    218         $id = &$flux['outil']; $texte = &$flux['texte'];
    219         if(isset($cs_metas_pipelines['pre_description_outil']))
    220                 eval($cs_metas_pipelines['pre_description_outil']);
     218        if(isset($cs_metas_pipelines['fichier_distant']))
     219                eval($cs_metas_pipelines['fichier_distant']);
    221220        return $flux;
    222221}
  • _plugins_/couteau_suisse/inc/cs_outils.php

    r43731 r43858  
    237237        foreach($outil['fichiers_distants'] as $i) {
    238238                $erreur = false;
     239                $res_pipe = '';
    239240                $dir = sous_repertoire($lib, $outil['id']);
    240241                preg_match('/[^?]*/', basename($outil[$i]), $reg);
    241242                $f = 'distant_' . $reg[0];
    242                 $file = $dir.$f;
     243                $file = pipeline('fichier_distant', array('outil'=>$outil['id'], 'fichier_local'=>$dir.$f));
     244                $file = $file['fichier_local'];
     245                $f = basename($file);
    243246                $size = ($forcer || @(!file_exists($file)) ? 0 : filesize($file));
    244247                if($size) $statut = _T('couteauprive:distant_present', array('date'=>cs_date_long(date('Y-m-d H:i:s', filemtime($file)))));
     
    246249                        include_spip('inc/distant');
    247250                        if($distant = recuperer_page($outil[$i])) {
     251                                $distant = pipeline('fichier_distant', array('outil'=>$outil['id'], 'fichier_local'=>$file,
     252                                                'fichier_distant'=>$outil[$i], 'message'=>'', 'texte'=>$distant, 'actif'=>$outil['actif']));
     253                                $file = $distant['fichier_local'];
     254                                $message = $distant['message'] . "\n_ " . _T('couteauprive:copie_vers', array('dir'=>dirname($distant['fichier_local']).'/'));
     255                                $distant = $distant['texte'];
    248256                                if(preg_match(',\.php\d?$,', $file)) {
    249257                                        $test = preg_replace(',^.*?\<\?php|\?\>.*?$,', '', $distant);
     
    256264                        else $erreur = $statut = '<span style="color:red">'._T('couteauprive:distant_echoue').'</span>';
    257265                } else $erreur = $statut = _T('couteauprive:distant_inactif');
    258                 $a[] = "[{$f}->{$outil[$i]}]\n_ $statut";
     266                $a[] = "[{$f}->{$outil[$i]}]\n_ ".$statut.$message;
    259267        }
    260268        if($tester) return $a;
  • _plugins_/couteau_suisse/lang/couteauprive_fr.php

    r43855 r43858  
    393393
    394394        // E
     395        'copie_vers' => 'Copie vers : @dir@',
    395396        'ecran_activer' => 'Activer l\'&eacute;cran de s&eacute;curit&eacute;',
    396397        'ecran_conflit' => 'Attention : le fichier statique &laquo;@file@&raquo; peut entrer en conflit. Choisissez votre m&eacute;thode de protection !',
    397         'ecran_conflit2' => 'Note : un fichier statique &laquo;@file@&raquo; a &eacute;t&eacute; d&eacute;tect&eacute; et activ&eacute;. Le Couteau Suisse ne pourra le mettre &agrave; jour.',
     398        'ecran_conflit2' => 'Note : un fichier statique &laquo;@file@&raquo; a &eacute;t&eacute; d&eacute;tect&eacute; et activ&eacute;. Le Couteau Suisse ne pourra le mettre &agrave; jour ou le configurer.',
    398399        'ecran_ko' => 'Ecran inactif !',
    399400        'ecran_maj_ko' => 'La version {{@n@}} de l\'&eacute;cran de s&eacute;curit&eacute; est disponible. Veuillez actualiser le fichier distant de cet outil.',
  • _plugins_/couteau_suisse/lang/couteauprive_fr_tu.php

    r43855 r43858  
    274274        'ecran_activer' => 'Activer l\'&eacute;cran de s&eacute;curit&eacute;', # NEW
    275275        'ecran_conflit' => 'Attention : le fichier statique &laquo;@file@&raquo; peut entrer en conflit. Choisissez votre m&eacute;thode de protection !',
    276         'ecran_conflit2' => 'Note : un fichier statique &laquo;@file@&raquo; a &eacute;t&eacute; d&eacute;tect&eacute; et activ&eacute;. Le Couteau Suisse ne pourra le mettre &agrave; jour.',
     276        'ecran_conflit2' => 'Note : un fichier statique &laquo;@file@&raquo; a &eacute;t&eacute; d&eacute;tect&eacute; et activ&eacute;. Le Couteau Suisse ne pourra le mettre &agrave; jour ou le configurer.',
    277277        'ecran_ko' => 'Ecran inactif !', # NEW
    278278        'ecran_maj_ko' => 'La version {{@n@}} de l\'&eacute;cran de s&eacute;curit&eacute; est disponible. Veuillez actualiser le fichier distant de cet outil.', # NEW
  • _plugins_/couteau_suisse/outils/ecran_securite.php

    r43857 r43858  
    77        // conflit/doublon potentiel ?
    88        // $flux['non'] est vrai si le Couteau Suisse ne lance aucun fichier par lui-meme
    9         $conf = @file_exists($f) || (defined("_ECRAN_SECURITE") && $flux['non'])
     9        $conf = (@file_exists($f) && !defined('_SPIP20100')) || (defined("_ECRAN_SECURITE") && $flux['non'])
    1010                ?"<hr/>\n@puce@ <span style=\"color: red;\">"._T("couteauprive:ecran_conflit".($flux['non']?"2":""), array("file"=>_NOM_PERMANENTS_INACCESSIBLES."ecran_securite.php"))."</span>"
    1111                :"";
     
    2727# TODO : eviter l'insertion et recopier le fichier dans config/mes_options.php pour SPIP>=2.1
    2828function ecran_securite_fichier_distant($flux) {
     29        // besoin du 1er appel uniquement
     30        if($flux['outil']!='ecran_securite' || isset($flux['texte'])) return $flux;
    2931        // fichier global de config (y compris la mutu)
    30         $f = dirname(cs_spip_file_options(4));
     32        $flux['fichier_local'] = dirname(cs_spip_file_options(4)).'/ecran_securite.php';
    3133        // fichier local de config
    32         $f = dirname(cs_spip_file_options(3));
     34        #$flux['fichier_local'] = dirname(cs_spip_file_options(3)).'/ecran_securite.php';
    3335        return $flux;
    3436}
Note: See TracChangeset for help on using the changeset viewer.