source: spip-zone/_plugins_/acces_restreint/trunk/inc/accesrestreint_documents.php @ 74471

Last change on this file since 74471 was 74471, checked in by rastapopoulos@…, 8 years ago

Coquille ! C'est évidemment un + que je voulais mettre, pas une *. Puisqu'on veut tester qu'il y a des choses obligatoirement supplémentaires au "/" de base.

File size: 2.2 KB
Line 
1<?php
2/**
3 * Plugin Acces Restreint 3.0 pour Spip 2.0
4 * Licence GPL (c) 2006-2008 Cedric Morin
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10/**
11 * on essaye de poser un htaccess rewrite global sur IMG/
12 * si fonctionne on gardera des ulrs de document permanente
13 * si ne fonctionne pas on se rabat sur creer_htaccess du core
14 * qui pose un deny sur chaque sous repertoire de IMG/
15 *
16 * http://doc.spip.org/@gerer_htaccess
17 *
18 * @param bool $active
19 * @return bool
20 */
21function accesrestreint_gerer_htaccess($active = true) {
22        if (!$active){
23                spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
24                effacer_meta("creer_htaccess");
25                // effacer les xx/.htaccess crees eventuellement par le core
26                include_spip("inc/acces");
27                gerer_htaccess();
28                return false;
29        }
30        else  {
31                $rewrite = <<<rewrite
32RewriteEngine On
33RewriteCond %{QUERY_STRING} ^(\d+/[\da-f]+)$
34RewriteRule ^\w+/.*$     ../spip.php?action=api_docrestreint&arg=%1/$0 [skip=100]
35RewriteRule ^\w+/.*$     ../spip.php?action=api_docrestreint&arg=0/0/$0 [skip=100]
36rewrite;
37               
38                // On cherche si le dossier racine a un RewriteBase plus long que "/"
39                if (file_exists(_DIR_RACINE._ACCESS_FILE_NAME)){
40                        $ht = '';
41                        lire_fichier(_DIR_RACINE._ACCESS_FILE_NAME, $ht);
42                        if ($ht and preg_match('|^RewriteBase\s+/.+$|m', $ht, $rewritebase)){
43                                $rewritebase = rtrim(trim($rewritebase[0]), '/').'/'._NOM_PERMANENTS_ACCESSIBLES;
44                                $rewrite = $rewritebase."\n".$rewrite;
45                        }
46                }
47               
48                ecrire_fichier(_DIR_IMG . _ACCESS_FILE_NAME,$rewrite);
49                // verifier sur l'url de test
50                include_spip('inc/distant');
51                $url_test = url_absolue(_DIR_IMG . "test/.test?0/1");
52                $test = recuperer_page($url_test);
53                // si l'url de test renvoie bien "OK" alors rewrite rule fonctionne et on peut baser la protection de document sur ce shema
54                if ($test == "OK") {
55                        effacer_meta("creer_htaccess"); // securite, et permet de generer des urls permanentes
56                }
57                else {
58                        // sinon on se rabat sur un deny et on generera des urls moches
59                        spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
60                        ecrire_meta("creer_htaccess","oui");
61                }
62                // dans tous les cas on passe par gerer_htaccess pour enlever ou mettre les .htaccess dans les sous rep
63                include_spip("inc/acces");
64                gerer_htaccess();
65
66                return true;
67        }
68}
Note: See TracBrowser for help on using the repository browser.