Changeset 84557 in spip-zone


Ignore:
Timestamp:
Sep 10, 2014, 2:34:38 PM (5 years ago)
Author:
marcimat@…
Message:

Reformattage (suite) pour y voir un rien plus clair dans la fonction api_docrestreint. À suivre...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/acces_restreint/trunk/action/api_docrestreint.php

    r84556 r84557  
    4040        // manque des arguments : 404
    4141        if (count($arg) < 3) {
    42                 accesrestreint_afficher_404_document();
     42                accesrestreint_afficher_erreur_document(404);
    4343                return;
    4444        }
     
    6464        spip_log($file, 'dbg');
    6565
     66        // securite : on refuse tout ../ ou url absolue
     67        if ((strpos($f, '../') !== false) OR (preg_match(',^\w+://,', $f))) {
     68                accesrestreint_afficher_erreur_document(403);
     69                return;
     70        }
     71
     72        // inexistant ou illisible : 404
     73        if (!file_exists($file) OR !is_readable($file)) {
     74                accesrestreint_afficher_erreur_document(404);
     75                return;
     76        }
     77
    6678        $status = $doc = false;
    6779        $dossiers_a_exclure = array('nl');
    68 
    69         // securite : on refuse tout ../ ou url absolue
    70         if ((strpos($f, '../') !== false) OR (preg_match(',^\w+://,', $f))) {
    71                 $status = 403;
    72         } elseif (!file_exists($file) OR !is_readable($file)) {
    73                 $status = 404;
    74         }
    7580
    7681        // Si c'est dans un sous-dossier explicitement utilisé pour autre chose que les documents
    7782        // (exemple : les newsletters)
    7883        // et bien on ne teste pas l'accès
    79         elseif (preg_match('%^(' . join('|', $dossiers_a_exclure) . ')/%', $f)){
     84        if (preg_match('%^(' . join('|', $dossiers_a_exclure) . ')/%', $f)){
    8085                $status = 200;
    8186        }
     
    131136
    132137        case 403:
    133                 include_spip('inc/minipres');
    134                 echo minipres("","","",true);
     138                accesrestreint_afficher_erreur_document(403);
    135139                break;
    136140
    137141        case 404:
    138                 accesrestreint_afficher_404_document();
     142                accesrestreint_afficher_erreur_document(404);
    139143                break;
    140144
     
    192196
    193197/**
    194  * Retourne une page 404 indiquant un document introuvable
    195  *
     198 * Affiche une page indiquant un document introuvable ou interdit
     199 *
     200 * @param string $status
     201 *     Numero d'erreur (403 ou 404)
    196202 * @return void
    197203**/
    198 function accesrestreint_afficher_404_document() {
    199         http_status(404);
    200         include_spip('inc/minipres');
    201         echo minipres(_T('erreur') . ' 404', _T('medias:info_document_indisponible'), "", true);
     204function accesrestreint_afficher_erreur_document($status = 404) {
     205
     206        switch ($status)
     207        {
     208                case 403:
     209                        include_spip('inc/minipres');
     210                        echo minipres("","","",true);
     211                        break;
     212
     213                case 404:
     214                        http_status(404);
     215                        include_spip('inc/minipres');
     216                        echo minipres(_T('erreur') . ' 404', _T('medias:info_document_indisponible'), "", true);
     217                        break;
     218        }
    202219}
Note: See TracChangeset for help on using the changeset viewer.