Valider 4f923d5f rédigé par esj's avatar esj
Parcourir les fichiers

Deux améliorations de [15407]: vérification de l'opérationnalité des .htaccess:

     * ne pas tenir compte d'une réussite par {{{fopen}}} (cas du site en 127.0.0.1);

     * lorsqu'à la configuration du site on déclare un proxy, il faut recommecner le test d'opérationnalité des .htaccess, car leur test à l'installation ne prouvait rien à leur sujet.
parent 92c3e9e0
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+16 −12
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -75,7 +75,7 @@ function configuration_relayeur_post ($http_proxy, $http_noproxy, $test_proxy, $
	if (preg_match(',:\*\*\*\*@,', $http_proxy))
		$http_proxy = $GLOBALS['meta']['http_proxy'];

	$retour = '';
	$retour = $page = '';

	if ($tester_proxy AND preg_match(",https?://,", $http_proxy)) {
		include_spip('inc/distant');
@@ -83,25 +83,29 @@ function configuration_relayeur_post ($http_proxy, $http_noproxy, $test_proxy, $

		if (!@$t['host']) {
			$retour = _T('info_adresse_non_indiquee');
		} else {
		} elseif (!need_proxy($t['host'])) {

			$retour = "<p>"._T('page_pas_proxy')."</p>\n";
		} elseif ($page = recuperer_page($test_proxy, true)) {
			include_spip('inc/texte'); // pour aide, couper, lang
			if (!need_proxy($t['host']))
			  $page = "<p>"._T('page_pas_proxy')."</p>\n";
			$page = recuperer_page($test_proxy, true);
			if ($page)
				$retour = "<p>"._T('info_proxy_ok')."</p>\n<tt>".couper(entites_html($page),300)."</tt>";
			  else
				$retour = _T('info_impossible_lire_page', array('test_proxy' => $test_proxy))
			$retour = "<p>"._T('info_proxy_ok')."</p>\n<tt>"
			. couper(entites_html($page),300)."</tt>";
		} else	$retour = _T('info_impossible_lire_page',
					array('test_proxy' => $test_proxy))
			. " <tt>".no_password_proxy_url($http_proxy)."</tt>."
			. aide('confhttpproxy');
	}
	}

	if ($http_proxy !== NULL) {
		ecrire_meta('http_proxy', $http_proxy);
	}
	if ($http_noproxy !== NULL) {
		ecrire_meta('http_noproxy', $http_noproxy);
	}
	if ($page) {
		include_spip('install/etape_fin');
		$retour .= install_verifier_htaccess();
	}
	return $retour;
}

+7 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -205,7 +205,6 @@ function verifier_htaccess($rep, $force=false) {
		return true;
	if ($_SERVER['SERVER_ADMIN'] == 'www@nexenservices.com')
		return nexen($rep);
	spip_log("Creation de $htaccess");
	if ($ht = @fopen($htaccess, "w")) {
		fputs($ht, "deny from all\n");
		fclose($ht);
@@ -214,14 +213,15 @@ function verifier_htaccess($rep, $force=false) {
		if ($ht = @fopen($t, "w")) {
			@fclose($ht);
			include_spip('inc/distant');
			$t = '/' . _DIR_RACINE . $t;
			if (preg_match(',^(.*/)[^/]+/../(.*)$,',$t, $m))
				$t = $m[1] . $m[2];
			$f = $GLOBALS['meta']['adresse_site'] . $t;
			$ht = !recuperer_lapage($f, false, 'HEAD', 0);
			$t = substr($t,strlen(_DIR_RACINE));
			$t = url_de_base() . $t;
			$ht = recuperer_lapage($t, false, 'HEAD', 0);
			// htaccess inoperant si on a recupere des entetes HTTP
			// (ignorer la reussite si connexion par fopen)
			$ht = !(isset($ht[0]) AND $ht[0]);
		}
	}
	if (!$ht) spip_log("$htaccess inoperant sur $rep"); 
	spip_log("Creation de $htaccess " . ($ht ? " reussie" : " manquee"));
	return $ht;
}	

+21 −11
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -48,18 +48,28 @@ function install_etape_fin_dist()

	// Verifier la securite des htaccess
	// Si elle ne fonctionne pas, prevenir
	if (!verifier_htaccess(_DIR_TMP, true) OR !verifier_htaccess(_DIR_CONNECT, true)) {
		$h = generer_form_ecrire('accueil', '','',_T('public:accueil_site'));
	$msg = install_verifier_htaccess();
	if ($msg) {
		$cible = _T('public:accueil_site');
		$cible = generer_form_ecrire('accueil', '','', $cible);
		echo minipres('AUTO', $msg . $cible);
	// ok, deboucher dans l'espace prive
	} else redirige_url_ecrire('accueil');
}

function install_verifier_htaccess()
{
	if (verifier_htaccess(_DIR_TMP, true)
	AND verifier_htaccess(_DIR_CONNECT, true))
		return '';

	$titre = _T('htaccess_inoperant');

	$averti = _T('htaccess_a_simuler', 
		array('htaccess' => '<tt>' . _ACCESS_FILE_NAME . '</tt>',
			'constantes' =>  '<tt>_DIR_TMP &amp; _DIR_CONNECT</tt>',
			'document_root' => '<tt>' . $_SERVER['DOCUMENT_ROOT'] . '</tt>'));
		echo minipres(
			'AUTO',
			"<p class='resultat echec'>$titre</p><p>$averti</p>$h"
			      );
	// ok, deboucher dans l'espace prive
	} else redirige_url_ecrire('accueil');

	return "<p class='resultat echec'>$titre</p><p>$averti</p>";
}
?>