diff --git a/ecrire/action/acceder_document.php b/ecrire/action/acceder_document.php
index 6e0555ec36799e3cff3ac7e9fda53e353ef9085b..99852a80455af08f6342af0216dc45b36ae387b8 100644
--- a/ecrire/action/acceder_document.php
+++ b/ecrire/action/acceder_document.php
@@ -19,6 +19,9 @@ include_spip('inc/headers');
 // soit que le document est publie, c'est-a-dire
 // joint a au moins 1 article, breve ou rubrique publie
 
+// Cette variable de configuration peut etre posee par un plugin
+// par exemple acces_restreint
+
 // Definir une fonction d'autorisation specifique
 // sauf si on a deja eu cette idee
 // TODO: ne devrait pas figurer dans ce fichier
diff --git a/ecrire/action/configurer.php b/ecrire/action/configurer.php
index e54fdcd30d57d5c256b6c5c488d90f94e69db6c7..40039ccd58f47e8539507c6ce4c8d0225c509719 100644
--- a/ecrire/action/configurer.php
+++ b/ecrire/action/configurer.php
@@ -27,6 +27,9 @@ function action_configurer_dist() {
 	$r = rawurldecode(_request('redirect'));
 	$r = parametre_url($r, 'configuration', $arg,"&");
 	appliquer_modifs_config();
+
+	// Cette globale est fixee par appliquer_modifs_config();
+	// c'est un message a afficher dans l'exec de retour (relayeur si comme ici on est en ajax)
 	if ($arg == 'relayeur')
 		$r = parametre_url($r, 'retour_proxy', $GLOBALS['retour_proxy'],"&");
 	else if ($arg == 'langue') {
diff --git a/ecrire/configuration/relayeur.php b/ecrire/configuration/relayeur.php
index b0e4ff4327d54f628eb041cf2a0328a1c07d484e..833bcc285dd7f3a88556d875e5801a606da6ede5 100644
--- a/ecrire/configuration/relayeur.php
+++ b/ecrire/configuration/relayeur.php
@@ -18,7 +18,6 @@ include_spip('inc/config');
 function configuration_relayeur_dist()
 {
 	global $spip_lang_right, $spip_lang_left;
-	global $retour_proxy;
 
 	$res = $submit = '';
 
@@ -34,7 +33,10 @@ function configuration_relayeur_dist()
 			. "<input type='text' name='test_proxy' value='http://www.spip.net/' size='40' class='forml' />"
 			. "</p>";
 
-			if($retour_proxy) {
+			// ce retour_proxy provient soit de l'url, si on est en ajax,
+			// soit des globales si on est en mode sans javascript. Joli :(
+			if($retour_proxy = _request('retour_proxy')
+			OR $retour_proxy = $GLOBALS['retour_proxy']) {
 				$res .= debut_boite_info(true)
 				. $retour_proxy
 				. fin_boite_info(true);
diff --git a/ecrire/inc/acces.php b/ecrire/inc/acces.php
index 71b655f6e5b930ad0596ad37cda191851e463fe7..deb5d83fa6cc677026d86d50d1376c2d7abada57 100644
--- a/ecrire/inc/acces.php
+++ b/ecrire/inc/acces.php
@@ -129,25 +129,20 @@ function initialiser_sel() {
 }
 
 
-// http://doc.spip.org/@ecrire_logins
-function ecrire_logins($fichier, $tableau_logins) {
-	reset($tableau_logins);
-
-	while(list($login, $htpass) = each($tableau_logins)) {
-		if ($login && $htpass) {
-			fputs($fichier, "$login:$htpass\n");
-		}
-	}
-}
-
-
+// Cette fonction ne sert plus que pour l'option "activer le htpasswd"
+// dont le reglage se fait depuis le plugin "acces restreint"
+// Toutefois elle reste ici par mesure de precaution/securite
+// pour les sites qui dependent de la production de ces fichiers.
 // http://doc.spip.org/@ecrire_acces
 function ecrire_acces() {
 	$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
 	$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
 
+	// Cette variable de configuration peut etre posee par un plugin
+	// par exemple acces_restreint ;
 	// si .htaccess existe, outrepasser spip_meta
-	if (($GLOBALS['meta']['creer_htpasswd'] == 'non') AND !@file_exists($htaccess)) {
+	if (($GLOBALS['meta']['creer_htpasswd'] != 'oui')
+	AND !@file_exists($htaccess)) {
 		@unlink($htpasswd);
 		@unlink($htpasswd."-admin");
 		return;
@@ -156,29 +151,24 @@ function ecrire_acces() {
 	# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
 	# de devenir "1comite" le cas echeant (auth http)... a nettoyer
 	// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
-	$result = spip_query_db("SELECT login, htpass FROM spip_auteurs WHERE statut != '5poubelle' AND statut!='6forum'");
-
-	$logins = array();
-	while($row = spip_fetch_array($result)) $logins[$row['login']] = $row['htpass'];
+	// on fait spip_query_db() car on est pas forcement encore installe
+	$p1 = ''; // login:htpass pour tous
+	$p2 = ''; // login:htpass pour les admins/0minirezo
+	$s = spip_query_db("SELECT login, htpass, statut FROM spip_auteurs WHERE statut != '5poubelle' AND statut!='6forum'");
+	while ($t = spip_fetch_array($s)) {
+		$p1 .= $t['login'].':'.$t['htpass']."\n";
+		if ($t['statut'] == '0minirezo')
+			$p2 .= $t['login'].':'.$t['htpass']."\n";
+	}
 
-	$fichier = @fopen($htpasswd, "w");
-	if ($fichier) {
-		ecrire_logins($fichier, $logins);
-		fclose($fichier);
+	if (ecrire_fichier($htpasswd, $p1)
+	AND ecrire_fichier($htpasswd.'-admin', $p2)) {
+		spip_log("Ecriture de $htpasswd et $htpasswd-admin: OK");
 	} else {
+		spip_log("Erreur $htpasswd / $htpasswd-admin!");
 		include_spip('inc/headers');
 		redirige_par_entete(generer_test_dirs('', true));
 	}
-
-	$result = spip_query_db("SELECT login, htpass FROM spip_auteurs WHERE statut = '0minirezo'");
-
-
-	$logins = array();
-	while($row = spip_fetch_array($result)) $logins[$row['login']] = $row['htpass'];
-
-	$fichier = fopen("$htpasswd-admin", "w");
-	ecrire_logins($fichier, $logins);
-	fclose($fichier);
 }
 
 
@@ -221,16 +211,18 @@ function verifier_htaccess($rep) {
 
 // http://doc.spip.org/@gerer_htaccess
 function gerer_htaccess() {
-	$mode = $GLOBALS['meta']['creer_htaccess'];
+	// Cette variable de configuration peut etre posee par un plugin
+	// par exemple acces_restreint
+	$GLOBALS['meta']['creer_htaccess'];
 	$r = spip_query("SELECT extension FROM spip_types_documents");
 	while ($e = spip_fetch_array($r)) {
 		if (is_dir($dir = _DIR_IMG . $e['extension'])) {
-			if ($mode == 'oui')
+			if ($GLOBALS['meta']['creer_htaccess'] == 'oui')
 				verifier_htaccess($dir);
 			else @unlink("$dir/" . _ACCESS_FILE_NAME);
 		}
 	}
-	return $mode;
+	return $GLOBALS['meta']['creer_htaccess'];
 }
 
 initialiser_sel();
diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php
index 20e42e6fa433175de159266b1fdff715a57e09ba..45188f5c7bd727e14bc79091c473141e139ac4b4 100644
--- a/ecrire/inc/config.php
+++ b/ecrire/inc/config.php
@@ -65,9 +65,6 @@ function init_config() {
 		'charset' => _DEFAULT_CHARSET,
 		'syndication_integrale' => 'oui',
 
-		'creer_htpasswd' => 'non',
-		'creer_htaccess' => 'non',
-
 		'multi_articles' => 'non',
 		'multi_rubriques' => 'non',
 		'multi_secteurs' => 'non',
@@ -180,6 +177,9 @@ function appliquer_modifs_config() {
 	if (preg_match(',:\*\*\*\*@,', $http_proxy))
 		$http_proxy = $GLOBALS['meta']['http_proxy'];
 
+	// Un globale qui servira soit en ajax soit en direct pour afficher un 
+	// message de statut du proxy.
+	// Cf. action/configurer et configuration/relayeur
 	$retour_proxy = '';
 	if ($tester_proxy) {
 		if (!$test_proxy) {
@@ -297,25 +297,6 @@ function appliquer_modifs_config() {
 
 	ecrire_metas();
 
-	// modifs de secu (necessitent une authentification ftp)
-	$liste_meta = array(
-			    'creer_htpasswd',
-			    'creer_htaccess'
-	);
-	while (list(,$i) = each($liste_meta))
-	  if (isset($GLOBALS[$i]) AND ($GLOBALS[$i] != $GLOBALS['meta'][$i]))
-			$modif_secu=true;
-	if ($modif_secu) {
-		$admin = _T('info_modification_parametres_securite');
-		include_spip('inc/admin');
-		debut_admin($_POST['exec'], $admin);
-		reset($liste_meta);
-		while (list(,$i) = each($liste_meta))
-			if (isset($GLOBALS[$i])) ecrire_meta($i, $GLOBALS[$i]);
-		ecrire_metas();
-		fin_admin($admin);
-	}
-
 	if ($purger_skel) {
 		include_spip('inc/invalideur');
 		purger_repertoire(_DIR_SKELS);
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index e4ac79f7c8e3536c33ea242a095ef85704b13e4b..8784359761841d688eb6bf17f60514a8d7f4c4a8 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -44,6 +44,9 @@ function generer_url_document_dist($id_document) {
 		return '';
 	$row = spip_fetch_array(spip_query("SELECT fichier,distant FROM spip_documents WHERE id_document="._q($id_document)));
 	if ($row) {
+
+		// Cette variable de configuration peut etre posee par un plugin
+		// par exemple acces_restreint
 		if ($GLOBALS['meta']["creer_htaccess"] == 'oui'
 		AND $row['distant'] != 'oui')
 			return parametre_url(
diff --git a/ecrire/inc/getdocument.php b/ecrire/inc/getdocument.php
index 37a1c1a1a8e711b40200b7497ff0bd0944ca4ae8..8928c5c776a7267e8693aabe651ba60a59c8ad57 100644
--- a/ecrire/inc/getdocument.php
+++ b/ecrire/inc/getdocument.php
@@ -24,6 +24,8 @@ function creer_repertoire_documents($ext) {
 		exit;
 	}
 
+	// Cette variable de configuration peut etre posee par un plugin
+	// par exemple acces_restreint
 	if ($GLOBALS['meta']["creer_htaccess"] == 'oui') {
 		include_spip('inc/acces');
 		verifier_htaccess($rep);