From aaa022de00f5cbbfd2d5e1468c6db901a95846a8 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 17 Jan 2008 13:25:33 +0000 Subject: [PATCH] =?UTF-8?q?Acc=C3=A8s=20au=20documents.=20[11072]=C2=A0ava?= =?UTF-8?q?it=20r=C3=A9introduit=20maladroitement=20l'appel=20=C3=A0=20aut?= =?UTF-8?q?oriser=5Fvoir=20disparu=20avec=20[10998]:=20il=20est=20inutilem?= =?UTF-8?q?ent=20couteux=20de=20produire=20une=20cl=C3=A9=20s'il=20n'y=20a?= =?UTF-8?q?=20pas=20de=20.htaccess,=20on=20am=C3=A9liore.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mais [10998] pose un autre problème: le code compilé des balises #URL_* sur base externe ne permet plus d'accéder à un document du site distant puisque ce script refuse à présent toute demande non émise par son espace privé. Du coup, on introduit _DIR_IMG comme nouvelle meta, permettant de demander à un site distant le répertoire de ses documents. Le code compilé des balises #URL_* l'utilise pour produire la bonne URL. Evidemment si un .htaccess est présent, cette URL conduira à un 403. A moyen terme, cette meta devrait permettre de résoudre le problème de l'accès aux vignettes et logos du site distant. --- ecrire/balise/url_.php | 5 +++-- ecrire/inc/autoriser.php | 4 ++-- ecrire/inc/config.php | 14 ++++++++------ ecrire/inc/documents.php | 5 ++++- ecrire/inc_version.php | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ecrire/balise/url_.php b/ecrire/balise/url_.php index 41948547fa..60b23db70b 100644 --- a/ecrire/balise/url_.php +++ b/ecrire/balise/url_.php @@ -43,8 +43,9 @@ function generer_generer_url($type, $p) return "'./?page=$type&id_$type=' . $_id . '&connect=$s'"; else { $u = "quete_meta('adresse_site', '$s')"; - $f = "$_id . '&file=' . quete_fichier($_id,'$s')"; - return "$u . '?action=acceder_document&arg=' .$f"; + $d = "quete_meta('dir_img', '$s')"; + $f = "quete_fichier($_id,'$s')"; + return "$u . '/' .\n\t$d . $f"; } } } diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php index 5f5aabce1d..850d41813e 100644 --- a/ecrire/inc/autoriser.php +++ b/ecrire/inc/autoriser.php @@ -520,11 +520,11 @@ function autoriser_chargerftp_dist($faire, $type, $id, $qui, $opt) { // http://doc.spip.org/@autoriser_document_voir_dist function autoriser_document_voir_dist($faire, $type, $id, $qui, $opt) { - if (($id = intval($id)) <= 0) return false; - if ($GLOBALS['meta']["creer_htaccess"] != 'oui') return true; + if (($id = intval($id)) <= 0) return false; + if (in_array($qui['statut'], array('0minirezo', '1comite'))) return true; diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php index 87842e64b1..518dd728ee 100644 --- a/ecrire/inc/config.php +++ b/ecrire/inc/config.php @@ -80,8 +80,9 @@ function liste_metas() 'documents_article' => 'non', 'documents_rubrique' => 'non', - 'charset' => _DEFAULT_CHARSET, 'syndication_integrale' => 'oui', + 'charset' => _DEFAULT_CHARSET, + 'dir_img' => substr(_DIR_IMG,strlen(_DIR_RACINE)), 'multi_articles' => 'non', 'multi_rubriques' => 'non', @@ -196,8 +197,6 @@ function appliquer_modifs_config() { set_request('langues_multilingue', join($i, ",")); } - $liste_meta = array_keys(liste_metas()); - // Modification du reglage accepter_inscriptions => vider le cache // (pour repercuter la modif sur le panneau de login) if ($i = _request('accepter_inscriptions') @@ -206,9 +205,12 @@ function appliquer_modifs_config() { suivre_invalideur("1"); # tout effacer } - foreach($liste_meta as $i) - if (!(_request($i)===NULL)) - ecrire_meta($i, _request($i)); + foreach(liste_metas() as $i => $v) { + if (($x =_request($i))!==NULL) + ecrire_meta($i, $x); + elseif (!isset($GLOBALS['meta'][$i])) + ecrire_meta($i, $v); + } if ($lang = _request('changer_langue_site')) { include_spip('inc/lang'); diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index 3fcaacd004..32e83c374c 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -63,7 +63,10 @@ function generer_url_document_dist($id_document, $args='', $ancre='') { $f = $row['fichier']; - if ($row['distant'] == 'oui') return get_spip_doc($f); + // Si droit de voir tous les docs, pas seulement celui-ci + // il est inutilement couteux de rajouter une protection + if (($row['distant'] == 'oui') OR !autoriser('voir', 'document')) + return get_spip_doc($f); include_spip('inc/securiser_action'); diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index 52f3c1432b..d9e4fd8fcf 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -293,7 +293,7 @@ $liste_des_forums = array( // (= numero SVN de leur derniere modif cassant la compatibilite) $spip_version_code = 11056; // version de la base SQL (= numero SVN de sa derniere modif) -$spip_version = 11042; +$spip_version = 11088; // version de l'interface a la base $spip_sql_version = 1; -- GitLab