Your IP : 216.73.216.59


Current Path : /home/quelfutuu/www/lchg/plugins/auto/accesrestreint/v6.1.0/inc/
Upload File :
Current File : /home/quelfutuu/www/lchg/plugins/auto/accesrestreint/v6.1.0/inc/accesrestreint_documents.php

<?php

/**
 * Plugin Acces Restreint 5.0 pour Spip 4.x
 * Licence GPL (c) depuis 2006 Cedric Morin
 *
 */

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}

/**
 * on essaye de poser un htaccess rewrite global sur IMG/
 * si fonctionne on gardera des ulrs de document permanente
 * si ne fonctionne pas on se rabat sur creer_htaccess du core
 * qui pose un deny sur chaque sous repertoire de IMG/
 *
 * https://code.spip.net/@gerer_htaccess
 *
 * @param bool $active
 * @return bool
 */
function accesrestreint_gerer_htaccess($active = true) {
	include_spip('inc/acces');
	if (!$active) {
		spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
		effacer_meta('creer_htaccess');
		// effacer les xx/.htaccess crees eventuellement par le core
		gerer_htaccess();
		return false;
	} else {
		$rewrite = <<<rewrite
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(\d+/[\da-f]+)$
RewriteRule ^\w+/.*$     ../spip.php?action=api_docrestreint&arg=%1/$0 [skip=100]
RewriteRule ^\w+/.*$     ../spip.php?action=api_docrestreint&arg=0/0/$0 [skip=100]
rewrite;

		// On cherche si le dossier racine a un RewriteBase plus long que "/"
		if (file_exists(_DIR_RACINE . _ACCESS_FILE_NAME)) {
			$ht = '';
			lire_fichier(_DIR_RACINE . _ACCESS_FILE_NAME, $ht);
			if ($ht and preg_match('|^RewriteBase\s+/.+$|m', $ht, $rewritebase)) {
				$rewritebase = rtrim(trim($rewritebase[0]), '/') . '/' . _NOM_PERMANENTS_ACCESSIBLES;
				$rewrite = $rewritebase . "\n" . $rewrite;
			}
		}

		ecrire_fichier(_DIR_IMG . _ACCESS_FILE_NAME, $rewrite);

		// pour tester il faut enlever les fichiers deny des sous-repertoires
		effacer_meta('creer_htaccess');
		gerer_htaccess();

		// puis verifier sur l'url de test
		include_spip('inc/distant');
		$url_test = url_absolue(_DIR_IMG . 'test_acces/.restreint?0/1');
		$test = recuperer_url($url_test);
		$test = isset($test['page']) ? $test['page'] : null;

		spip_log("Resultat test IMG/.htaccess : $url_test renvoie :$test:", 'accesrestreint' . _LOG_DEBUG);
		// si l'url de test renvoie bien "OK" alors rewrite rule fonctionne et on peut baser la protection de document sur ce shema
		if ($test === 'OK') {
			// on est bon, rien a faire
		} else {
			// sinon on se rabat sur un deny et on generera des urls moches
			spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
			ecrire_meta('creer_htaccess', 'oui');
		}
		// dans tous les cas on passe par gerer_htaccess pour enlever ou mettre les .htaccess dans les sous rep
		gerer_htaccess();

		return true;
	}
}