From 39fb5b7bef8a74be13c624b5ba2c14ba27c9fb0f Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 12 Jan 2006 14:55:24 +0000
Subject: [PATCH] entrer dans le moule general les scritps de ecrire qui
 n'authentifient pas par cookie

---
 ecrire/admin_repair.php3    | 14 +-------------
 ecrire/inc.php3             | 13 ++++++++-----
 ecrire/inc_admin_repair.php | 10 ++++++++++
 ecrire/inc_install.php      |  1 +
 ecrire/inc_utils.php        |  9 +++++++++
 ecrire/inc_version.php3     |  4 +---
 ecrire/install.php3         |  5 +----
 7 files changed, 31 insertions(+), 25 deletions(-)

diff --git a/ecrire/admin_repair.php3 b/ecrire/admin_repair.php3
index 31abd3ad9f..6e6b5935f6 100644
--- a/ecrire/admin_repair.php3
+++ b/ecrire/admin_repair.php3
@@ -10,17 +10,5 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-/*
- * REMARQUE IMPORTANTE : SECURITE
- * Ce systeme de reparation doit pouvoir fonctionner meme si
- * la table spip_auteurs est en panne : on n'appelle donc pas
- * inc_auth ; seule l'authentification ftp est exigee
- *
- */
-
-include ("inc_version.php3");
-$GLOBALS['connect_statut'] = '0minirezo';
-$var_f = include_fonction($SCRIPT_NAME);
-$var_f();
-
+include ("inc.php3");
 ?>
diff --git a/ecrire/inc.php3 b/ecrire/inc.php3
index d258bbe1fd..d37084d860 100644
--- a/ecrire/inc.php3
+++ b/ecrire/inc.php3
@@ -12,11 +12,14 @@
 
 if (!defined('_ECRIRE_INC_VERSION')) include ("inc_version.php3");
 
-include_ecrire ("inc_session");
-include_ecrire('inc_cookie');
-
-$var_f = include_fonction('auth');
-if (!$var_f()) exit;
+if (autoriser_sans_cookie($SCRIPT_NAME))
+	unset($GLOBALS['_COOKIE']);
+else {
+	include_ecrire ("inc_session");
+	include_ecrire('inc_cookie');
+	$var_f = include_fonction('auth');
+	if (!$var_f()) exit;
+ } 
 
 //
 // Preferences de presentation
diff --git a/ecrire/inc_admin_repair.php b/ecrire/inc_admin_repair.php
index 98cf428e81..a53081ab71 100644
--- a/ecrire/inc_admin_repair.php
+++ b/ecrire/inc_admin_repair.php
@@ -12,6 +12,16 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
+/*
+ * REMARQUE IMPORTANTE : SECURITE
+ * Ce systeme de reparation doit pouvoir fonctionner meme si
+ * la table spip_auteurs est en panne : on n'appelle donc pas
+ * inc_auth ; seule l'authentification ftp est exigee
+ *
+ */
+
+$GLOBALS['connect_statut'] = '0minirezo';
+
 include_ecrire ("inc_admin");
 include_ecrire ("inc_texte");
 include_ecrire ("inc_minipres");
diff --git a/ecrire/inc_install.php b/ecrire/inc_install.php
index baabbc6149..41981bfcdb 100644
--- a/ecrire/inc_install.php
+++ b/ecrire/inc_install.php
@@ -14,6 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_ecrire ("inc_minipres");
 include_ecrire ("inc_base");
+define("_ECRIRE_INSTALL", "1");
 define('_FILE_TMP', '_install');
 
 function install()
diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php
index cfc149823c..8b8173d7b9 100644
--- a/ecrire/inc_utils.php
+++ b/ecrire/inc_utils.php
@@ -581,6 +581,15 @@ function charger_plugins($plugins) {
 #var_dump($plugins);var_dump($spip_pipeline);var_dump($spip_matrice);exit;
 }
 
+// predicat sur les scripts de ecrire qui n'authentifient pas par cookie
+
+function autoriser_sans_cookie($nom)
+{
+  static $autsanscookie = array('aide_index', 'install', 'admin_repair');
+  $nom = preg_replace('/.php[3]?$/', '', basename($nom));
+  return in_array($nom, $autsanscookie);
+}
+
 // Cette fonction charge le bon inc-urls selon qu'on est dans l'espace
 // public ou prive, la presence d'un (old style) inc-urls.php3, etc.
 function charger_generer_url() {
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 592c6d35b9..257eb18e57 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -288,7 +288,6 @@ $connect_statut = '';
 $hash_recherche = '';
 $hash_recherche_strict = '';
 
-
 //
 // Capacites php (en fonction de la version)
 //
@@ -394,9 +393,8 @@ $spip_lang = $langue_site;
 // Que faire si Spip n'est pas installe... sauf si justement on l'installe!
 //
 if (!(_FILE_CONNECT
-OR defined('_ECRIRE_INSTALL')
 OR defined('_TEST_DIRS')
-OR defined('_ECRIRE_AIDE'))) {
+OR autoriser_sans_cookie($SCRIPT_NAME))) {
 
 	include_ecrire('inc_upgrade');
 	info_install();
diff --git a/ecrire/install.php3 b/ecrire/install.php3
index 34a8a06c5d..6e6b5935f6 100644
--- a/ecrire/install.php3
+++ b/ecrire/install.php3
@@ -10,8 +10,5 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-define("_ECRIRE_INSTALL", "1");
-include ("inc_version.php3");
-$var_f = include_fonction($SCRIPT_NAME);
-$var_f();
+include ("inc.php3");
 ?>
-- 
GitLab