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);