From e7b7da41200e9268eb35f69b6e5624e50e5fe0c3 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 14 Oct 2004 22:05:04 +0000
Subject: [PATCH] =?UTF-8?q?introduction=20de=20la=20meta=20creer=5Fhtacces?=
 =?UTF-8?q?s:=20finalisation=20de=20la=20protection=20des=20pi=C3=A8ces=20?=
 =?UTF-8?q?jointes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/config-fonctions.php3 | 46 +++++++++++++++++++++++++++---------
 ecrire/inc_acces.php3        | 14 +++++++++++
 ecrire/inc_config.php3       |  4 +++-
 ecrire/inc_urls.php3         |  2 +-
 ecrire/inc_version.php3      |  5 +++-
 inc-balises.php3             |  1 -
 inc-urls-html.php3           |  2 +-
 inc-urls-standard.php3       |  2 +-
 spip_image.php3              |  5 ----
 9 files changed, 59 insertions(+), 22 deletions(-)

diff --git a/ecrire/config-fonctions.php3 b/ecrire/config-fonctions.php3
index 3d845f4b34..fa1080553d 100644
--- a/ecrire/config-fonctions.php3
+++ b/ecrire/config-fonctions.php3
@@ -395,35 +395,59 @@ fin_cadre_trait_couleur();
 }
 
 
-###### ATTENTION EXPERIMENTAL:
-# l'option htpasswd est remplacee par la securisation des IMG/*
+
 //
 // Creer fichier .htpasswd ?
 //
 
 if ($options == "avancees" AND !@file_exists('.htaccess') AND !$REMOTE_USER ) {
-#	include_ecrire ("inc_acces.php3");
-#	ecrire_acces();
+	include_ecrire ("inc_acces.php3");
+	ecrire_acces();
 
 
 
 debut_cadre_trait_couleur("cadenas-24.gif", false, "", 
-			  #_T('info_fichiers_authent')
-			  _L("acc&egrave;s aux document joints par leur URL"));
+			  _T('info_fichiers_authent'));
+
 	$creer_htpasswd = lire_meta("creer_htpasswd");
 
+	echo "<div class='verdana2'>", _T('texte_fichier_authent'), "</div>";
+
+	echo "<div class='verdana2'>";
+	afficher_choix('creer_htpasswd', $creer_htpasswd,
+		       array('oui' => _T('item_creer_fichiers_authent'),
+			     'non' =>  _T('item_non_creer_fichiers_authent')),
+		       ' &nbsp; ');
+	echo "</div>";
+	echo "<div style='text-align:$spip_lang_right'><INPUT TYPE='submit' NAME='Valider' VALUE='"._T('bouton_valider')."' CLASS='fondo'></div>";
+	
+fin_cadre_trait_couleur();
+
+	echo "<p>";
+}
+
+###### ATTENTION EXPERIMENTAL:
+
+//
+// Creer fichier .htaccess dans les répertoires de documents 
+//
+
+if ($options == "avancees" AND !$REMOTE_USER ) {
+
+debut_cadre_trait_couleur("cadenas-24.gif", false, "", 
+			  _L("Acc&egrave;s aux document joints par leur URL"));
+#	include_ecrire ("inc_acces.php3"); vient d'etre fait
+	$creer_htaccess = gerer_htaccess();
+
 	echo "<div class='verdana2'>";
-#	echo _T('texte_fichier_authent');
 	echo _L("Cette option interdit la lecture des documents joints si le texte auquel ils se rattachent n'est pas publi&eacute");
 	echo "</div>";
 
 	echo "<div class='verdana2'>";
-	afficher_choix('creer_htpasswd', $creer_htpasswd,
+	afficher_choix('creer_htaccess', $creer_htaccess,
 		       array('oui' => _L("interdire la lecture"),
-		      #_T('item_creer_fichiers_authent'),
 			     'non' => _L("autoriser la lecture")),
-# _T('item_non_creer_fichiers_authent')),
- ' &nbsp; ');
+		       ' &nbsp; ');
 	echo "</div>";
 		echo "<div style='text-align:$spip_lang_right'><INPUT TYPE='submit' NAME='Valider' VALUE='"._T('bouton_valider')."' CLASS='fondo'></div>";
 	
diff --git a/ecrire/inc_acces.php3 b/ecrire/inc_acces.php3
index de0df2c8ff..b071def3e2 100644
--- a/ecrire/inc_acces.php3
+++ b/ecrire/inc_acces.php3
@@ -128,6 +128,20 @@ function generer_htpass($pass) {
 	else return '';
 }
 
+function gerer_htaccess()
+{
+  $mode = lire_meta('creer_htaccess');
+	$r = spip_query("SELECT extension FROM spip_types_documents");
+	while ($e = spip_fetch_array($r)) {
+	  spip_log(_DIR_DOC . $e['extension']);
+		if (is_dir($dir = _DIR_DOC . $e['extension'])) {
+			if ($mode == 'oui')
+				verifier_htaccess($dir);
+			else @unlink("$dir/.htaccess");
+		}
+	}
+	return $mode;
+}
 
 initialiser_sel();
 
diff --git a/ecrire/inc_config.php3 b/ecrire/inc_config.php3
index 9232253e70..c880d51399 100644
--- a/ecrire/inc_config.php3
+++ b/ecrire/inc_config.php3
@@ -60,6 +60,7 @@ function init_config() {
 		'charset' => 'iso-8859-1',
 
 		'creer_htpasswd' => 'non',
+		'creer_htaccess' => 'non',
 
 		'langue_site' => $lang,
 
@@ -263,7 +264,8 @@ function appliquer_modifs_config() {
 	// modifs de secu (necessitent une authentification ftp)
 	$liste_meta = array(
 		// 'secu_avertissement',	// n'existe plus !
-		'creer_htpasswd'
+			    'creer_htpasswd',
+			    'creer_htaccess'
 	);
 	while (list(,$i) = each($liste_meta))
 		if (isset($GLOBALS[$i]) AND ($GLOBALS[$i] != lire_meta($i)))
diff --git a/ecrire/inc_urls.php3 b/ecrire/inc_urls.php3
index 2126ae02e2..47337dde32 100644
--- a/ecrire/inc_urls.php3
+++ b/ecrire/inc_urls.php3
@@ -51,7 +51,7 @@ function generer_url_auteur($id_auteur) {
 function generer_url_document($id_document) {
 	if (intval($id_document) <= 0)
 		return '';
-	if ((lire_meta("creer_htpasswd")) == 'oui')
+	if ((lire_meta("creer_htaccess")) == 'oui')
 		return "../spip_acces_doc.php3?id_document=$id_document";
 	if ($row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")))
 		return '../' . ($row['fichier']);
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index b9b0b7abbc..a0e11a4443 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -995,7 +995,10 @@ function creer_repertoire($base, $subdir) {
 
 function creer_repertoire_documents($ext) {
 # est-il bien raisonnable d'accepter de creer si creer_rep retourne '' ?
-	return  _DIR_DOC . creer_repertoire(_DIR_DOC, $ext);
+	$dir =  _DIR_DOC . creer_repertoire(_DIR_DOC, $ext);
+	// mode parano: verifier a chaque fois
+	if (lire_meta("creer_htaccess") == 'oui') verifier_htaccess($dir);
+	return $dir;
 }
 
 // Pour les documents comme pour les logos, le filtre |fichier donne
diff --git a/inc-balises.php3 b/inc-balises.php3
index 8ee63eb81e..e27be55e82 100644
--- a/inc-balises.php3
+++ b/inc-balises.php3
@@ -538,7 +538,6 @@ function calcul_balise_logo ($p) {
 	eregi("^LOGO_([A-Z]+)(_.*)?$", $p->nom_champ, $regs);
 	$type_objet = $regs[1];
 	$suite_logo = $regs[2];	
-	spip_log($suite_logo);
 	if (ereg("^_SPIP(.*)$", $suite_logo, $regs)) {
 		$type_objet = 'RUBRIQUE';
 		$suite_logo = $regs[1];
diff --git a/inc-urls-html.php3 b/inc-urls-html.php3
index 6a6194e704..a0927a46af 100644
--- a/inc-urls-html.php3
+++ b/inc-urls-html.php3
@@ -27,7 +27,7 @@ function generer_url_auteur($id_auteur) {
 function generer_url_document($id_document) {
 	if (intval($id_document) <= 0)
 		return '';
-	if ((lire_meta("creer_htpasswd")) == 'oui')
+	if ((lire_meta("creer_htaccess")) == 'oui')
 		return "spip_acces_doc.php3?id_document=$id_document";
 	if ($row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")))
 		return ($row['fichier']);
diff --git a/inc-urls-standard.php3 b/inc-urls-standard.php3
index eafaff3ef3..8723591f18 100644
--- a/inc-urls-standard.php3
+++ b/inc-urls-standard.php3
@@ -27,7 +27,7 @@ function generer_url_auteur($id_auteur) {
 function generer_url_document($id_document) {
 	if (intval($id_document) <= 0)
 		return '';
-	if ((lire_meta("creer_htpasswd")) == 'oui')
+	if ((lire_meta("creer_htaccess")) == 'oui')
 		return "spip_acces_doc.php3?id_document=$id_document";
 	if ($row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document")))
 		return ($row['fichier']);
diff --git a/spip_image.php3 b/spip_image.php3
index b2b7c7621a..c1dc433c32 100644
--- a/spip_image.php3
+++ b/spip_image.php3
@@ -12,11 +12,6 @@ function copier_document($ext, $orig, $source) {
 		ereg_replace("[^.a-zA-Z0-9_=-]+", "_", 
 			translitteration(ereg_replace("\.([^.]+)$", "", 
 						      ereg_replace("<[^>]*>", '', basename($orig)))));
-	// a améliorer au plus  vite
-	$secure = lire_meta("creer_htpasswd") == 'oui';
-	if ($secure)
-	  verifier_htaccess($dir);
-	else @unlink("$dir/.htaccess");
 
 	# bien vu ?
 	if ($orig == ($dest . '.' . $ext)) return $orig;
-- 
GitLab