From b2a32b47e2d8926fa3aca3dba9b1fe9be52431ec Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Fri, 4 May 2007 23:06:17 +0000 Subject: [PATCH] on sort la configuration des options creer_ht_access et creer_htpasswd du core pour la passer dans le seul plugin acces_restreint --- ecrire/action/acceder_document.php | 3 ++ ecrire/action/configurer.php | 3 ++ ecrire/configuration/relayeur.php | 6 ++- ecrire/inc/acces.php | 60 +++++++++++++----------------- ecrire/inc/config.php | 25 ++----------- ecrire/inc/documents.php | 3 ++ ecrire/inc/getdocument.php | 2 + 7 files changed, 44 insertions(+), 58 deletions(-) diff --git a/ecrire/action/acceder_document.php b/ecrire/action/acceder_document.php index 6e0555ec36..99852a8045 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 e54fdcd30d..40039ccd58 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 b0e4ff4327..833bcc285d 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 71b655f6e5..deb5d83fa6 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 20e42e6fa4..45188f5c7b 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 e4ac79f7c8..8784359761 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 37a1c1a1a8..8928c5c776 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); -- GitLab