Your IP : 216.73.216.20


Current Path : /home/e/t/i/etiennec/www/f1f54/
Upload File :
Current File : /home/e/t/i/etiennec/www/f1f54/install.tar

etape_.php000066600000002647152503074610006532 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

// http://doc.spip.org/@install_etape__dist
function install_etape__dist()
{
	utiliser_langue_visiteur();
	$menu_langues = menu_langues('var_lang_ecrire');
	if (!$menu_langues) {
		redirige_url_ecrire('install', "etape=chmod");
	} else {
		include_spip('inc/presentation'); // pour info_copyright

		$res = "<div class='petit-centre'><img alt='SPIP' src='" .  chemin_image('logo-spip2.gif') . "' />\n" .
			"<p class='small'>" .info_copyright() ."</p></div>\n" .
			"<p>" ._T('install_select_langue') ."</p>" .
			"<div>" .$menu_langues ."</div>\n" .
			generer_form_ecrire('install', "<input type='hidden' name='etape' value='chmod' />" . bouton_suivant());
		echo minipres('AUTO', $res);
	}
}
?>
etape_2.php000066600000013327152503074610006611 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

include_spip('base/abstract_sql');

// http://doc.spip.org/@install_etape_2_dist
function install_etape_2_dist()
{
	$adresse_db = defined('_INSTALL_HOST_DB')
		? _INSTALL_HOST_DB
		: _request('adresse_db');

	$login_db = defined('_INSTALL_USER_DB')
		? _INSTALL_USER_DB
		: _request('login_db');

	$pass_db = defined('_INSTALL_PASS_DB')
		? _INSTALL_PASS_DB
		: _request('pass_db');

	$server_db = defined('_INSTALL_SERVER_DB')
		? _INSTALL_SERVER_DB
		: _request('server_db');

        $name_db =  defined('_INSTALL_NAME_DB')
		? _INSTALL_NAME_DB
		: '';

	$chmod = _request('chmod');

	$link = spip_connect_db($adresse_db, 0, $login_db, $pass_db, $name_db, $server_db);
	$GLOBALS['connexions'][$server_db] = $link;

	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
	= $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];

	echo install_debut_html();

// prenons toutes les dispositions possibles pour que rien ne s'affiche !

	/*
	 * /!\ sqlite3/PDO : erreur sur join(', ', $link)
	 * L'objet PDO ne peut pas etre transformee en chaine
	 * Un echo $link ne fonctionne pas non plus
	 * Il faut utiliser par exemple print_r($link)
	 */
	//echo "\n<!--\n", join(', ', $link), " $login_db ";
	$db_connect = 0; // revoirfunction_exists($ferrno) ? $ferrno() : 0;
	//echo join(', ', $GLOBALS['connexions'][$server_db]);
	//echo "\n-->\n";

	if (($db_connect=="0") && $link) {
		echo "<div class='success'><b>"._T('info_connexion_ok')."</b></div>";
		echo info_progression_etape(2,'etape_','install/');

		echo info_etape(_T('menu_aide_installation_choix_base').aide ("install2", true));



		spip_connect_db($adresse_db, 0, $login_db, $pass_db, '',$server_db);

		echo "\n", '<!-- ',  sql_version($server_db), ' -->' ;
		list($checked, $res) = install_etape_2_bases($login_db, $server_db);

		$hidden = (defined('_SPIP_CHMOD')
		? ''
		: ("\n<input type='hidden' name='chmod' value='".spip_htmlspecialchars($chmod)."' />"))
		. predef_ou_cache($adresse_db,$login_db,$pass_db, $server_db);

		echo install_etape_2_form($hidden, $checked, $res, 3);
	} else  {
		echo info_progression_etape(1,'etape_','install/',true);

		echo "<div class='error'>";
		echo info_etape(_T('info_connexion_base'));
		echo "<h3>" . _T('avis_connexion_echec_1') . "</h3>";
		echo "<p>"._T('avis_connexion_echec_2')."</p>";

		echo "<p style='font-size: small;'>",
		  _T('avis_connexion_echec_3'),
		  "</p></div>";
	}
	
	echo install_fin_html();
}

// Liste les bases accessibles, 
// avec une heuristique pour preselectionner la plus probable

// http://doc.spip.org/@install_etape_2_bases
function install_etape_2_bases($login_db, $server_db)
{
	$res =  install_etape_liste_bases($server_db, $login_db);
	if ($res) {
		list($checked, $bases) = $res;
		return array($checked, 
			     "<label for='choix_db'><b>"
			     ._T('texte_choix_base_2')
			     ."</b><br />"
			     ._T('texte_choix_base_3')
			     ."</label>"
			     . "<ul>\n<li>"
			     . join("</li>\n<li>",$bases)
			     . "</li>\n</ul><p>"
			     . _T('info_ou')
			     . " "
			     );
	}
	$res = "<b>"._T('avis_lecture_noms_bases_1')."</b>
		"._T('avis_lecture_noms_bases_2')."<p>";

	if ($login_db) {
		// Si un login comporte un point, le nom de la base est plus
		// probablement le login sans le point -- testons pour savoir
			$test_base = $login_db;
			$ok = sql_selectdb($test_base, $server_db);
			$test_base2 = str_replace('.', '_', $test_base);
			if (sql_selectdb($test_base2, $server_db)) {
				$test_base = $test_base2;
				$ok = true;
			}

			if ($ok) {
				$res .= _T('avis_lecture_noms_bases_3')
				. "<ul>"
				. "<li><input name=\"choix_db\" value=\"".$test_base."\" type='radio' id='stand' checked='checked' />"
				. "<label for='stand'>".$test_base."</label></li>\n"
				. "</ul>"
				. "<p>"._T('info_ou')." ";
				$checked = true;
			}
	}

	return array($checked, $res);
}

// http://doc.spip.org/@install_etape_2_form
function install_etape_2_form($hidden, $checked, $res, $etape)
 {
	return generer_form_ecrire('install', (
	  "\n<input type='hidden' name='etape' value='$etape' />"
	 . $hidden
	. (defined('_INSTALL_NAME_DB')
		? '<h3>'._T('install_nom_base_hebergeur'). ' <tt>'._INSTALL_NAME_DB.'</tt>'.'</h3>'
		: "\n<fieldset><legend>"._T('texte_choix_base_1')."</legend>\n"
		. $res
		. "\n<input name=\"choix_db\" value=\"new_spip\" type='radio' id='nou'"
		. ($checked  ? '' : " checked='checked'")
		. " />\n<label for='nou'>"._T('info_creer_base')."</label></p>\n<p>"
		. "\n<input type='text' name='table_new' class='text' value=\"spip\" size='20' /></p></fieldset>\n"
	)

	. ((defined('_INSTALL_TABLE_PREFIX')
	OR $GLOBALS['table_prefix'] != 'spip')
		? '<h3>'._T('install_table_prefix_hebergeur').'  <tt>'.$GLOBALS['table_prefix'].'</tt>'.'</h3>'
		: "<fieldset><legend>"._T('texte_choix_table_prefix')."</legend>\n"
	. "<p><label for='table_prefix'>"._T('info_table_prefix')."</label></p><p>"
	. "\n<input type='text' id='tprefix' name='tprefix' class='text' value='"
		. 'spip' # valeur par defaut
		. "' size='20' /></p></fieldset>"
	)

	. bouton_suivant()));
}
?>
etape_fin.php000066600000004720152503074610007221 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

include_spip('inc/headers');
include_spip('inc/acces');

// Mise en place des fichiers de configuration si ce n'est fait

// http://doc.spip.org/@install_etape_fin_dist
function install_etape_fin_dist()
{
	ecrire_acces();

	$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CHMOD_TMP);
	if (file_exists(_FILE_CHMOD_TMP)) {
		if (!@rename(_FILE_CHMOD_TMP, $f)) {
			if (@copy(_FILE_CHMOD_TMP, $f))
				spip_unlink(_FILE_CHMOD_TMP);
		}
	}

	$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CONNECT_TMP);
	if (file_exists(_FILE_CONNECT_TMP)) {
		spip_log("renomme $f");
		if (!@rename(_FILE_CONNECT_TMP, $f)) {
			if (@copy(_FILE_CONNECT_TMP, $f))
				@spip_unlink(_FILE_CONNECT_TMP);
		}
	}

	// creer le repertoire cache, qui sert partout !
	// deja fait en etape 4 en principe, on garde au cas ou
	if(!@file_exists(_DIR_CACHE)) {
		$rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE);
		$rep = sous_repertoire(_DIR_TMP, $rep, true,true);
	}

	// Verifier la securite des htaccess
	// Si elle ne fonctionne pas, prevenir
	$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>'));

	return "<div class='error'><h3>$titre</h3><p>$averti</p></div>";
}
?>
etape_ldap1.php000066600000005246152503074610007452 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

// http://doc.spip.org/@install_etape_ldap1_dist
function install_etape_ldap1_dist()
{
	$adresse_ldap = defined('_INSTALL_HOST_LDAP')
		? _INSTALL_HOST_LDAP
	  : 'localhost';

	$port_ldap = defined('_INSTALL_PORT_LDAP')
		? _INSTALL_PORT_LDAP
		: 389;

	$tls_ldap = defined('_INSTALL_TLS_LDAP')
		? _INSTALL_TLS_LDAP
		: 'non';

	$protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP')
		? _INSTALL_PROTOCOLE_LDAP
		: 3 ; // on essaie 2 en cas d'echec

	$login_ldap = defined('_INSTALL_USER_LDAP')
		? _INSTALL_USER_LDAP
		: '';

	$pass_ldap = defined('_INSTALL_PASS_LDAP')
		? _INSTALL_PASS_LDAP
		: '';

	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');

	echo info_etape(_T('titre_connexion_ldap'),info_progression_etape(1,'etape_ldap','install/'), _T('entree_informations_connexion_ldap'));

	echo generer_form_ecrire('install', (
	 "\n<input type='hidden' name='etape' value='ldap2' />"

	. fieldset(_T('entree_adresse_annuaire'),
		array(
			'adresse_ldap' => array(
				'label' => _T('texte_adresse_annuaire_1'),
				'valeur' => $adresse_ldap
			),
			'port_ldap' => array(
				'label' => _T('entree_port_annuaire').'<br />'._T('texte_port_annuaire'),
				'valeur' => $port_ldap
			),
			'tls_ldap' => array(
				'label' => '<b>'._T('tls_ldap').'</b>',
				'valeur' => $tls_ldap,
				'alternatives' => array(
					'non' => _T('item_non'),
					'oui' => _T('item_oui')
				)
			),
			'protocole_ldap' => array(
				'label' => _T('protocole_ldap'),
				'valeur' => $protocole_ldap,
				'alternatives' => array(
					'3' => '3',
					'2' => '2'
				)
			)
		)
	)

	. "\n<p>"._T('texte_acces_ldap_anonyme_1').'</p>'
	. fieldset(_T('connexion_ldap'),
		array(
			'login_ldap' => array(
				'label' => _T('texte_login_ldap_1'),
				'valeur' => $login_ldap
			),
			'pass_ldap' => array(
				'label' => _T('entree_passe_ldap'),
				'valeur' => $pass_ldap
			)
		)
	)

	. bouton_suivant()));

	echo install_fin_html();
}

?>
etape_4.php000066600000004150152503074610006605 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

include_spip('inc/headers');

// http://doc.spip.org/@install_etape_4_dist
function install_etape_4_dist()
{

	// creer le repertoire cache, qui sert partout !
	if(!@file_exists(_DIR_CACHE)) {
		$rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE);
		$rep = sous_repertoire(_DIR_TMP, $rep, true,true);
	}


	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
	echo info_progression_etape(4,'etape_','install/');

	echo "<div class='success'><b>"
		. _T('info_derniere_etape')
		. "</b><p>"
		. _T('info_utilisation_spip')
		. "</p></div>";


	echo "<p>"
			._T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>".joli_repertoire(_DIR_PLUGINS_DIST)."</tt>"))
			."</p>";

	// installer les extensions
	include_spip('inc/plugin');
	$afficher = charger_fonction("afficher_liste",'plugins');
	echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST),array(), array(), _DIR_PLUGINS_DIST,'afficher_nom_plugin');

	plugin_installes_meta();

	// mettre a jour si necessaire l'adresse du site
	// securite si on arrive plus a se loger
	include_spip('inc/config');
	appliquer_adresse_site('');

	// aller a la derniere etape qui clos l'install et redirige
	$suite =  "\n<input type='hidden' name='etape' value='fin' />"
	  . bouton_suivant(_T('login_espace_prive'));

	echo generer_form_ecrire('install', $suite);	echo install_fin_html();
}

?>
etape_3.php000066600000025217152503074610006613 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

include_spip('inc/headers');
include_spip('base/abstract_sql');

// http://doc.spip.org/@install_bases
function install_bases($adresse_db, $login_db, $pass_db,  $server_db, $choix_db, $sel_db, $chmod_db){
	global $spip_version_base;

	// Prefix des tables :
	// contrairement a ce qui est dit dans le message (trop strict mais c'est
	// pour notre bien), on va tolerer les chiffres en plus des minuscules
	// S'il n'est pas defini par mes_options/inc/mutualiser, on va le creer
	// a partir de ce qui est envoye a l'installation
	if (!defined('_INSTALL_TABLE_PREFIX')) {
		$table_prefix = ($GLOBALS['table_prefix'] != 'spip')
		? $GLOBALS['table_prefix']
		: trim(preg_replace(',[^a-z0-9],','',strtolower(_request('tprefix'))));
		// S'il est vide on remet spip
		if (!$table_prefix)
			$table_prefix = 'spip';
	} else {
		$table_prefix = _INSTALL_TABLE_PREFIX;
	}

	$GLOBALS['connexions'][$server_db]
	= spip_connect_db($adresse_db, 0, $login_db, $pass_db, '', $server_db);

	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
	= $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];

	$fquery = sql_serveur('query', $server_db);
	if ($choix_db == "new_spip") {
		$re = ',^[a-z_][a-z_0-9-]*$,i';
		if (preg_match($re, $sel_db))
			sql_create_base($sel_db, $server_db);
		else {
		  $re = "Le nom de la base doit correspondre a $re";
		  spip_log($re);
		  return "<p>"._T("avis_connexion_erreur_nom_base")."</p><!--\n$re\n-->";
		}
	}

	// on rejoue la connexion apres avoir teste si il faut lui indiquer
	// un sql_mode
	install_mode_appel($server_db, false);
	$GLOBALS['connexions'][$server_db]
	= spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);

	$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
	= $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];

	// Completer le tableau decrivant la connexion

	$GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix;
	$GLOBALS['connexions'][$server_db]['db'] = $sel_db;

	$old = sql_showbase($table_prefix  . "_meta", $server_db);
	if ($old) $old = sql_fetch($old, $server_db);
	if (!$old) {

		// Si possible, demander au serveur d'envoyer les textes
		// dans le codage std de SPIP,
		$charset = sql_get_charset(_DEFAULT_CHARSET, $server_db);

		if ($charset) {
			sql_set_charset($charset['charset'], $server_db);
			$GLOBALS['meta']['charset_sql_base'] = 
				$charset['charset'];
			$GLOBALS['meta']['charset_collation_sql_base'] = 
				$charset['collation'];
			$GLOBALS['meta']['charset_sql_connexion'] = 
				$charset['charset'];
			$charsetbase = $charset['charset'];
		} else {
			spip_log(_DEFAULT_CHARSET . " inconnu du serveur SQL");
			$charsetbase = 'standard';
		}
		spip_log("Creation des tables. Codage $charsetbase");
		creer_base($server_db); // AT LAST
		// memoriser avec quel charset on l'a creee

		if ($charset) {
			$t = array('nom' => 'charset_sql_base',
				   'valeur' => $charset['charset'],
				   'impt' => 'non');
			@sql_insertq('spip_meta', $t, '', $server_db);
			$t['nom'] = 'charset_collation_sql_base';
			$t['valeur'] = $charset['collation'];
			@sql_insertq('spip_meta', $t, '', $server_db);
			$t['nom'] = 'charset_sql_connexion';
			$t['valeur'] = $charset['charset'];
			@sql_insertq('spip_meta', $t, '', $server_db);
		}
		$t = array('nom' => 'version_installee',
			   'valeur' => $spip_version_base,
			   'impt' => 'non');
		@sql_insertq('spip_meta', $t, '', $server_db);
		$t['nom'] = 'nouvelle_install';
		$t['valeur'] = 1;
		@sql_insertq('spip_meta', $t, '', $server_db);
		// positionner la langue par defaut du site si un cookie de lang a ete mis
		if (isset($_COOKIE['spip_lang_ecrire'])){
			@sql_insertq('spip_meta', array('nom'=>'langue_site','valeur'=>$_COOKIE['spip_lang_ecrire']), '', $server_db);
		}
	} else {

	  // pour recreer les tables disparues au besoin
	  spip_log("Table des Meta deja la. Verification des autres.");
	  creer_base($server_db); 
	  $fupdateq = sql_serveur('updateq', $server_db);

	  $r = $fquery("SELECT valeur FROM spip_meta WHERE nom='version_installee'", $server_db);

	  if ($r) $r = sql_fetch($r, $server_db);
	  $version_installee = !$r ? 0 : (double) $r['valeur'];
	  if (!$version_installee OR ($spip_version_base < $version_installee)) {
	    $fupdateq('spip_meta', array('valeur'=>$spip_version_base, 'impt'=>'non'), "nom='version_installee'",'', $server_db);
	    spip_log("nouvelle version installee: $spip_version_base");
	  }
	  // eliminer la derniere operation d'admin mal terminee
	  // notamment la mise a jour 
	  @$fquery("DELETE FROM spip_meta WHERE nom='import_all' OR  nom='admin'", $server_db);
	}

	$ligne_rappel = install_mode_appel($server_db);

	$result_ok = @$fquery("SELECT COUNT(*) FROM spip_meta", $server_db);
	if (!$result_ok) return "<!--\nvielle = $old rappel= $ligne_rappel\n-->";

	if ($chmod_db) {
		install_fichier_connexion(_FILE_CHMOD_TMP, "if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod_db).");\n");
	}

	if (preg_match(',(.*):(.*),', $adresse_db, $r))
		list(,$adresse_db, $port) = $r;
	else $port = '';

	// si ce fichier existe a cette etape c'est qu'il provient
	// d'une installation qui ne l'a pas cree correctement.
	// Le supprimer pour que _FILE_CONNECT_TMP prime.

	if (_FILE_CONNECT AND file_exists(_FILE_CONNECT))
		spip_unlink(_FILE_CONNECT);

	install_fichier_connexion(_FILE_CONNECT_TMP, 
				  $ligne_rappel
				  . install_connexion($adresse_db,
						      $port,
						      $login_db,
						      $pass_db,
						      $sel_db,
						      $server_db,
						      $table_prefix));
	return '';
}

// http://doc.spip.org/@install_propose_ldap
function install_propose_ldap()
{
	return generer_form_ecrire('install', (
			fieldset(_T('info_authentification_externe'),
				array(
				'etape' => array(
					'label' => _T('texte_annuaire_ldap_1'),
					'valeur' => 'ldap1',
					'hidden' => true
					)),
				 bouton_suivant(_T('bouton_acces_ldap'))
				 )));
}


// http://doc.spip.org/@install_premier_auteur
function install_premier_auteur($email, $login, $nom, $pass, $hidden, $auteur_obligatoire)
{
	return info_progression_etape(3,'etape_','install/') .
		info_etape(_T('info_informations_personnelles'),

		     "<b>"._T('texte_informations_personnelles_1')."</b>" .
			     aide ("install5", true) .
			     "<p>" .
			     ($auteur_obligatoire?
				     ''
				     :
				     _T('texte_informations_personnelles_2') . " " . _T('info_laisser_champs_vides')
			     ))
	. generer_form_ecrire('install', (
			  "\n<input type='hidden' name='etape' value='3b' />"
			  . $hidden
			  . fieldset(_T('info_identification_publique'),
				    array(
					  'nom' => array(
							 'label' => "<b>"._T('entree_signature')."</b><br />\n"._T('entree_nom_pseudo_1')."\n",
							 'valeur' => $nom,
						   'required' => $auteur_obligatoire,
							 ),
					  'email' => array(
							   'label' => "<b>"._T('entree_adresse_email')."</b>\n",
							   'valeur' => $email,
							   )
					  )
				    )

			  . fieldset(_T('entree_identifiants_connexion'),
				   array(
					 'login' => array(
							  'label' => "<b>"._T('entree_login')."</b><br />\n"._T('info_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT))."\n",
							  'valeur' => $login,
	              'required' => $auteur_obligatoire,
							  ),
					 'pass' => array(
							 'label' => "<b>"._T('entree_mot_passe')."</b><br />\n"._T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI))."\n",
							 'valeur' => $pass,
	             'required' => $auteur_obligatoire,
							 ),
					 'pass_verif' => array(
							       'label' => "<b>"._T('info_confirmer_passe')."</b><br />\n",
							       'valeur' => $pass,
	                   'required' => $auteur_obligatoire,
							       )
					 )
				     )
			  . bouton_suivant()));
}

// http://doc.spip.org/@install_etape_3_dist
function install_etape_3_dist()
{
	$ldap_present = _request('ldap_present');

	if (!$ldap_present) {
		$adresse_db = defined('_INSTALL_HOST_DB')
		? _INSTALL_HOST_DB
		: _request('adresse_db');

		$login_db = defined('_INSTALL_USER_DB')
		? _INSTALL_USER_DB
		: _request('login_db');

		$pass_db = defined('_INSTALL_PASS_DB')
		? _INSTALL_PASS_DB
		: _request('pass_db');

		$server_db = defined('_INSTALL_SERVER_DB')
		? _INSTALL_SERVER_DB
		: _request('server_db');

		$chmod_db = defined('_SPIP_CHMOD')
		? _SPIP_CHMOD
		: _request('chmod');

		$choix_db = defined('_INSTALL_NAME_DB')
		? _INSTALL_NAME_DB
		: _request('choix_db');

		$sel_db = ($choix_db == "new_spip")
		? _request('table_new') : $choix_db;

		$res = install_bases($adresse_db, $login_db, $pass_db,  $server_db, $choix_db, $sel_db, $chmod_db);

		if ($res) {
			$res = info_progression_etape(2,'etape_','install/', true)
				. "<div class='error'><h3>"._T('avis_operation_echec')."</h3>"
			  . $res
			  . "<p>"._T('texte_operation_echec')."</p>"
			  . "</div>";
		}
	
	} else { 
		$res = '';
		list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) = analyse_fichier_connection(_FILE_CONNECT_TMP);
		$GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);
	}

	if (!$res) {
		if (file_exists(_FILE_CONNECT_TMP))
			include(_FILE_CONNECT_TMP);
		else
			redirige_url_ecrire('install');
	
		if (file_exists(_FILE_CHMOD_TMP))
			include(_FILE_CHMOD_TMP);
		else
			redirige_url_ecrire('install');

		$hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db)
		  . (defined('_INSTALL_NAME_DB') ? ''
		     : "\n<input type='hidden' name='sel_db' value='$sel_db' />");

		$auteur_obligatoire = ($ldap_present?0:!sql_countsel('spip_auteurs','','','',$server_db));

		$res =  "<div class='success'><b>"
		. _T('info_base_installee')
		. "</b></div>"
		. install_premier_auteur(_request('email'),
					_request('login'),
					_request('nom'),
					_request('pass'),
					 $hidden, $auteur_obligatoire)
		  . (($ldap_present  OR !function_exists('ldap_connect'))
		     ?  '' : install_propose_ldap());
	}

	echo install_debut_html();
	echo $res;
	echo install_fin_html();
}

?>
index.php000066600000000002152503074610006363 0ustar00X
etape_ldap5.php000066600000006121152503074610007447 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/headers');
include_spip('auth/ldap');

// http://doc.spip.org/@install_etape_ldap5_dist
function install_etape_ldap5_dist()
{
	etape_ldap5_save();
	etape_ldap5_suite();
}

function etape_ldap5_save()
{
	if (!@file_exists(_FILE_CONNECT_TMP))
		redirige_url_ecrire('install');

	ecrire_meta('ldap_statut_import', _request('statut_ldap'));

	lire_fichier(_FILE_CONNECT_TMP, $conn);

	if ($p = strpos($conn, "'');")) {
			ecrire_fichier(_FILE_CONNECT_TMP, 
				       substr($conn, 0, $p+1) 
				       . _FILE_LDAP
				       . substr($conn, $p+1));
	}

	$adresse_ldap = addcslashes(_request('adresse_ldap'),"'\\");
	$login_ldap = addcslashes(_request('login_ldap'),"'\\");
	$pass_ldap = addcslashes(_request('pass_ldap'),"'\\");
	$port_ldap = addcslashes(_request('port_ldap'),"'\\");
	$tls_ldap = addcslashes(_request('tls_ldap'),"'\\");
	$protocole_ldap = addcslashes(_request('protocole_ldap'),"'\\");
	$base_ldap = addcslashes(_request('base_ldap'),"'\\");
	$base_ldap_text = addcslashes(_request('base_ldap_text'),"'\\");

	$conn = "\$GLOBALS['ldap_base'] = '$base_ldap';\n"
		. "\$GLOBALS['ldap_link'] = @ldap_connect('$adresse_ldap','$port_ldap');\n"
		. "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'$protocole_ldap');\n"
		. (($tls_ldap != 'oui') ? '' :
		   "@ldap_start_tls(\$GLOBALS['ldap_link']);\n")
		. "@ldap_bind(\$GLOBALS['ldap_link'],'$login_ldap','$pass_ldap');\n";

	$champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array();
	$res = '';
	foreach ($champs as $champ => $v ) {
		$nom = 'ldap_' . $champ;
		$val = trim(_request($nom));
		if (preg_match('/^\w*$/', $val)) {
			if ($val) $val = _q($val);
		} else $val = "array(" . _q(preg_split('/\W+/', $val)) . ')';;
		if ($val) $res .= "'$champ' => " . $val . ",";
	}
	$conn .= "\$GLOBALS['ldap_champs'] = array($res);\n";
	  
	install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn);
}

function etape_ldap5_suite()
{
	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');

	echo info_etape(_T('info_ldap_ok'), info_progression_etape(5,'etape_ldap','install/'), _T('info_terminer_installation'));

	echo generer_form_ecrire('install', (
		"<input type='hidden' name='etape' value='3' />" .
		"<input type='hidden' name='ldap_present' value='true' />" 
		. bouton_suivant()));

	echo install_fin_html();
}


?>
etape_ldap2.php000066600000006047152503074610007453 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


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

// http://doc.spip.org/@install_etape_ldap2_dist
function install_etape_ldap2_dist()
{
	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');

	$adresse_ldap =  _request('adresse_ldap');

	$port_ldap = _request('port_ldap');

	$tls_ldap =  _request('tls_ldap');

	$protocole_ldap =  _request('protocole_ldap');

	$login_ldap =  _request('login_ldap');

	$pass_ldap =  _request('pass_ldap');

	$port_ldap = intval($port_ldap);

	$tls = false;

	if ($tls_ldap == 'oui') {
		if ($port_ldap==636) {
		  $adresse_ldap = "ldaps://$adresse_ldap";

		} else $tls = true;
	}
	$ldap_link = ldap_connect($adresse_ldap, $port_ldap);
	$erreur = "ldap_connect($adresse_ldap, $port_ldap)";

	if ($ldap_link) {
		if ( !ldap_set_option($ldap_link, LDAP_OPT_PROTOCOL_VERSION, $protocole_ldap) ) {
			$protocole_ldap = 2 ;
			ldap_set_option($ldap_link, LDAP_OPT_PROTOCOL_VERSION, $protocole_ldap);
		}
		if ($tls === true) {
			if (!ldap_start_tls($ldap_link)) {
				$erreur = "ldap_start_tls($ldap_link) $adresse_ldap, $port_ldap";
				$ldap_link = false;
			}
		}
		if ($ldap_link) {
			$ldap_link = ldap_bind($ldap_link, $login_ldap, $pass_ldap);
			$erreur = "ldap_bind('$ldap_link', '$login_ldap', '$pass_ldap'): $adresse_ldap, $port_ldap";
		}
	}

	if ($ldap_link) {
		echo info_etape(_T('titre_connexion_ldap'),info_progression_etape(2,'etape_ldap','install/')), _T('info_connexion_ldap_ok');
		echo generer_form_ecrire('install', (
		  "\n<input type='hidden' name='etape' value='ldap3' />"
		. "\n<input type='hidden' name='adresse_ldap' value=\"$adresse_ldap\" />"
		. "\n<input type='hidden' name='port_ldap' value=\"$port_ldap\" />"
		. "\n<input type='hidden' name='login_ldap' value=\"$login_ldap\" />"
		. "\n<input type='hidden' name='pass_ldap' value=\"$pass_ldap\" />"
		. "\n<input type='hidden' name='protocole_ldap' value=\"$protocole_ldap\" />"
		. "\n<input type='hidden' name='tls_ldap' value=\"$tls_ldap\" />"
		. bouton_suivant()));
	}
	else {
		echo info_etape(_T('titre_connexion_ldap')), info_progression_etape(1,'etape_ldap','install/', true),
			"<div class='error'><p>"._T('avis_connexion_ldap_echec_1')."</p>",
			"<p>"._T('avis_connexion_ldap_echec_2').
			"<br />\n"._T('avis_connexion_ldap_echec_3') .
			'<br /><br />'. $erreur. '<b> ?</b></p></div>'
		;
	}

	echo install_fin_html();
}

?>
etape_1.php000066600000004300152503074610006577 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

// http://doc.spip.org/@install_etape_1_dist
function install_etape_1_dist()
{
	echo install_debut_html();

	// stopper en cas de grosse incompatibilite de l'hebergement
	tester_compatibilite_hebergement();

	// Recuperer les anciennes donnees pour plus de facilite (si presentes)
	$s = !@is_readable(_FILE_CONNECT_TMP) ? ''
	  : analyse_fichier_connection(_FILE_CONNECT_TMP);

	list($adresse_db, $login_db) = $s ? $s : login_hebergeur();

	$chmod = (isset($_GET['chmod']) AND preg_match(',^[0-9]+$,', $_GET['chmod']))? sprintf('%04o', $_GET['chmod']):'0777';

	if(@is_readable(_FILE_CHMOD_TMP)){
		$s = @join('', @file(_FILE_CHMOD_TMP));
		if(preg_match("#define\('_SPIP_CHMOD', (.*)\)#", $s, $regs)) {
			$chmod = $regs[1]; 
		}
	}
	
	

	$db = array($adresse_db, _T('entree_base_donnee_2'));
	$login = array($login_db, _T('entree_login_connexion_2'));
	$pass = array($pass_db, _T('entree_mot_passe_2'));

	$predef = array(defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB:'',
			defined('_INSTALL_HOST_DB'),
			defined('_INSTALL_USER_DB'),
			defined('_INSTALL_PASS_DB'));


	echo info_progression_etape(1,'etape_','install/');

	// ces deux chaines de langues doivent etre reecrites
#	echo info_etape(_T('info_connexion_mysql'), _T('texte_connexion_mysql').aide ("install1", true));
	echo info_etape(_T('info_connexion_base_donnee'));
	echo install_connexion_form($db, $login, $pass, $predef, "\n<input type='hidden' name='chmod' value='$chmod' />", 2);
	echo install_fin_html();
}


?>
etape_ldap3.php000066600000005655152503074610007460 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


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

// http://doc.spip.org/@install_etape_ldap3_dist
function install_etape_ldap3_dist()
{
	$adresse_ldap = _request('adresse_ldap');
	$login_ldap = _request('login_ldap');
	$pass_ldap = _request('pass_ldap');
	$port_ldap = _request('port_ldap');

	$base_ldap_text = defined('_INSTALL_BASE_LDAP')
		? _INSTALL_BASE_LDAP
		: "ou=users, dc=mon-domaine, dc=com";

	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');

	echo info_etape(_T('info_chemin_acces_1'),info_progression_etape(3,'etape_ldap','install/')),_T('info_chemin_acces_2');

	$ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap");
	if ($ldap_link) {
		@ldap_bind($ldap_link, "$login_ldap", "$pass_ldap");
		$result = @ldap_read($ldap_link, "", "objectclass=*", array("namingContexts"));
		$info = @ldap_get_entries($ldap_link, $result);
		@ldap_close($ldap_link);
	}
	
	$checked = false;
	$res = '';
	if (is_array($info) AND $info["count"] > 0) {
		$res .= "<p>"._T('info_selection_chemin_acces')."</p>";
		$res .= "<ul>";
		$n = 0;
		for ($i = 0; $i < $info["count"]; $i++) {
			$names = $info[$i]["namingcontexts"];
			if (is_array($names)) {
				for ($j = 0; $j < $names["count"]; $j++) {
					$n++;
					$res .= "<li><input name=\"base_ldap\" value=\"".spip_htmlspecialchars($names[$j])."\" type='radio' id='tab$n'";
					if (!$checked) {
						$res .= " checked=\"checked\"";
						$checked = true;
					}
					$res .= " />";
					$res .= "<label for='tab$n'>".spip_htmlspecialchars($names[$j])."</label></li>\n";
				}
			}
		}
		$res .= "</ul>";
		$res .= _T('info_ou')." ";
	}
	$res .= "<br />\n<input name=\"base_ldap\" value=\"\" type='radio' id='manuel'";
	if (!$checked) {
		$res .= " checked=\"checked\"";
		$checked = true;
	}

	$res .= " />"
	. "\n<label for='manuel'>"._T('entree_chemin_acces')."</label> "
	. "\n<fieldset>"
	. "<input type='text' name='base_ldap_text' class='text' value=\"$base_ldap_text\" size='40' />"
	. "\n</fieldset>"
	. "\n<input type='hidden' name='etape' value='ldap4' />"
	. install_propager(array('adresse_ldap','port_ldap','login_ldap','pass_ldap','protocole_ldap','tls_ldap'))
	. bouton_suivant();

	echo generer_form_ecrire('install', $res);

	echo install_fin_html();
}


?>
etape_ldap4.php000066600000007351152503074610007454 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

include_spip('auth/ldap');

// http://doc.spip.org/@install_etape_ldap4_dist
function install_etape_ldap4_dist()
{
	$adresse_ldap = _request('adresse_ldap');
	$login_ldap = _request('login_ldap');
	$pass_ldap = _request('pass_ldap');
	$port_ldap = _request('port_ldap');
	$base_ldap = _request('base_ldap');
	$base_ldap_text = _request('base_ldap_text');
	if (!$base_ldap) $base_ldap = $base_ldap_text;

	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');

	$ldap_link = ldap_connect($adresse_ldap, $port_ldap);
	@ldap_bind($ldap_link, $login_ldap, $pass_ldap);

	// Essayer de verifier le chemin fourni
	$r = @ldap_compare($ldap_link, $base_ldap, "objectClass", "");
	$fail = (ldap_errno($ldap_link) == 32);

	if ($fail) {
		echo info_etape(_T('info_chemin_acces_annuaire')),
			info_progression_etape(3,'etape_ldap','install/', true),
			"<div class='error'><p><b>"._T('avis_operation_echec')."</b></p><p>"._T('avis_chemin_invalide_1'),
			" (<tt>".spip_htmlspecialchars($base_ldap)."</tt>) "._T('avis_chemin_invalide_2')."</p></div>";
	}
	else {
		info_etape(_T('info_reglage_ldap'));
		echo info_progression_etape(4,'etape_ldap','install/');

		$statuts = liste_statuts_ldap();
		$statut_ldap = defined('_INSTALL_STATUT_LDAP')
		? _INSTALL_STATUT_LDAP
		  : $GLOBALS['liste_des_statuts']['info_redacteurs'];


		$res = install_propager(array('adresse_ldap','port_ldap','login_ldap','pass_ldap','protocole_ldap','tls_ldap'))
		. "<input type='hidden' name='etape' value='ldap5' />"
		. "<input type='hidden' name='base_ldap' value='" . spip_htmlentities($base_ldap) . "' />"
		. fieldset(_T('info_statut_utilisateurs_1'),
			array(
				'statut_ldap' => array(
					'label' => _T('info_statut_utilisateurs_2').'<br />',
					'valeur' => $statut_ldap,
					'alternatives' => $statuts
					)
				)
			   )
		. install_ldap_correspondances()
		. bouton_suivant();

		echo generer_form_ecrire('install', $res); 
	}

	echo install_fin_html();
}

// http://doc.spip.org/@liste_statuts_ldap
function liste_statuts_ldap() {
	$recom = array("info_administrateurs" => ("<b>" ._T('info_administrateur_1')."</b> "._T('info_administrateur_2')."<br />"),
		       "info_redacteurs" =>  ("<b>"._T('info_redacteur_1')."</b> "._T('info_redacteur_2')."<br />"),
		       "info_visiteurs" => ("<b>"._T('info_visiteur_1')."</b> "._T('info_visiteur_2')."<br />"));
	
	$res = array();
	foreach($GLOBALS['liste_des_statuts'] as $k => $v) {
		if (isset($recom[$k])) $res[$v] = $recom[$k];
	}
	return $res;
}

function install_ldap_correspondances()
{
	$champs = array();
	foreach (is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array() as $champ => $v ) {
			$nom = 'ldap_' . $champ;
			$val = is_array($v) ? join(',', $v) : strval($v);
			$champs[$nom]= array(
				'label' => _T('ldap_correspondance', array('champ' => "<tt>$champ</tt>")).'<br />',
				'valeur' => $val
						  );
	}

	return !$champs ? '' : fieldset(_T('ldap_correspondance_1'), $champs, '', _T('ldap_correspondance_2') . '<br /><br />');
}
?>
etape_3b.php000066600000011272152503074610006751 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

include_spip('inc/headers');

function install_etape_3b_dist()
{
	$login = _request('login');
	$email = _request('email');
	$nom = _request('nom');
	$pass = _request('pass');
	$pass_verif = _request('pass_verif');

	$server_db = defined('_INSTALL_SERVER_DB') ?
		_INSTALL_SERVER_DB
		: _request('server_db');

	if (!defined('_PASS_LONGUEUR_MINI')) define('_PASS_LONGUEUR_MINI', 6);
	if (!defined('_LOGIN_TROP_COURT')) define('_LOGIN_TROP_COURT', 4);

		if($login) {
			$echec = ($pass!=$pass_verif) ?
				_T('info_passes_identiques')
				: ((strlen($pass)<_PASS_LONGUEUR_MINI) ?
					_T('info_passe_trop_court_car_pluriel', array('nb'=>_PASS_LONGUEUR_MINI))
					: ((strlen($login)<_LOGIN_TROP_COURT) ?
						_T('info_login_trop_court')
						: ''));
		include_spip('inc/filtres');
		if (!$echec AND $email AND !email_valide($email))
			$echec = _T('form_email_non_valide');
		if ($echec) {
			echo minipres(
			'AUTO',
			info_progression_etape(3,'etape_','install/', true).
			"<div class='error'><h3>$echec</h3>\n".
			"<p>"._T('avis_connexion_echec_2')."</p>".
			"</div>"
			);
			exit;
		}
	}

	if (@file_exists(_FILE_CHMOD_TMP))
		include(_FILE_CHMOD_TMP);
	else
		redirige_url_ecrire('install');

	if (!@file_exists(_FILE_CONNECT_TMP))
		redirige_url_ecrire('install');

	# maintenant on connait le vrai charset du site s'il est deja configure
	# sinon par defaut lire_meta reglera _DEFAULT_CHARSET
	# (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)

	lire_metas();
	if ($login) {
		include_spip('inc/charsets');

		$nom = (importer_charset($nom, _DEFAULT_CHARSET));
		$login = (importer_charset($login, _DEFAULT_CHARSET));
		$email = (importer_charset($email, _DEFAULT_CHARSET));
		# pour le passwd, bizarrement il faut le convertir comme s'il avait
		# ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
		$pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
		include_spip('auth/sha256.inc');
		include_spip('inc/acces');
		$htpass = generer_htpass($pass);
		$alea_actuel = creer_uniqid();
		$alea_futur = creer_uniqid();
		$shapass = _nano_sha256($alea_actuel.$pass);
		// prelablement, creer le champ webmestre si il n'existe pas (install neuve
		// sur une vieille base
		$t = sql_showtable("spip_auteurs", true);
		if (!isset($t['field']['webmestre']))
			@sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");

		$id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login=" . sql_quote($login));
		if ($id_auteur !== NULL) {
			sql_updateq('spip_auteurs', array("nom"=> $nom, 'email'=> $email, 'login'=>$login, 'pass'=>$shapass, 'alea_actuel'=>$alea_actuel, 'alea_futur'=> $alea_futur, 'htpass'=>$htpass, 'statut'=>'0minirezo'), "id_auteur=$id_auteur");
		}
		else {
			$id_auteur = sql_insertq('spip_auteurs', array(
				'nom' => $nom,
				'email' => $email,
				'login' => $login,
				'pass' => $shapass,
				'htpass' => $htpass,
				'alea_actuel' => $alea_actuel,
				'alea_futur' => $alea_futur,
				'statut' =>'0minirezo'));
		}
		// le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
		@sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur=$id_auteur");

		// inserer email comme email webmaster principal
		// (sauf s'il est vide: cas de la re-installation)
		if ($email)
			ecrire_meta('email_webmaster', $email);

		// Connecter directement celui qui vient de (re)donner son login
		// mais sans cookie d'admin ni connexion longue
		include_spip('inc/auth');
		if (!$auteur = auth_identifier_login($login, $pass)
		OR !auth_loger($auteur, true))
			spip_log("login automatique impossible $auth_spip $session" . count($row));
	}

	// installer les metas
	$config = charger_fonction('config', 'inc');
	$config();

	// activer les plugins
	// leur installation ne peut pas se faire sur le meme hit, il faudra donc
	// poursuivre au hit suivant
	include_spip('inc/plugin');
	actualise_plugins_actifs();


	include_spip('inc/distant');
	redirige_par_entete(parametre_url(self(),'etape','4','&'));
	
}

?>
etape_chmod.php000066600000010205152503074610007532 0ustar00<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2014                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

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

if (defined('_TEST_DIRS')) return;
define('_TEST_DIRS', "1");

include_spip('inc/minipres');
utiliser_langue_visiteur();

//
// Tente d'ecrire
//
// http://doc.spip.org/@test_ecrire
function test_ecrire($my_dir) {
	static $chmod = 0;
	
	$ok = false;
	$script = @file_exists('spip_loader.php') ? 'spip_loader.php' : $_SERVER['PHP_SELF'];
	$self = basename($script);
	$uid = @fileowner('.');
	$uid2 = @fileowner($self);
	$gid = @filegroup('.');
	$gid2 = @filegroup($self);
	$perms = @fileperms($self);

	// Comparer l'appartenance d'un fichier cree par PHP
	// avec celle du script et du repertoire courant
	if(!$chmod) {
		@rmdir('test');
		spip_unlink('test'); // effacer au cas ou
		@touch('test');
		if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid)
			$chmod = 0700;
		else if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid)
			$chmod = 0770;
		else
			$chmod = 0777;
		// Appliquer de plus les droits d'acces du script
		if ($perms > 0) {
			$perms = ($perms & 0777) | (($perms & 0444) >> 2);
			$chmod |= $perms;
		}
		spip_unlink('test');
	}
	// Verifier que les valeurs sont correctes
	$f = @fopen($my_dir.'test.php', 'w');
	if ($f) {
		@fputs($f, '<'.'?php $ok = true; ?'.'>');
		@fclose($f);
		@chmod($my_dir.'test.php', $chmod);
		include($my_dir.'test.php');
	}
	spip_unlink($my_dir.'test.php');
	return $ok?$chmod:false;
}

//
// tester les droits en ecriture sur les repertoires
// rajouter celui passe dans l'url ou celui du source (a l'installation)
//

// http://doc.spip.org/@install_etape_chmod_dist
function install_etape_chmod_dist()
{
	global $test_dirs;
	$test_dir =  _request('test_dir');
	$chmod = 0;

	if ($test_dir) {
		if (substr($test_dir,-1)!=='/') $test_dir .= '/';
		if (!in_array($test_dir, $test_dirs)) $test_dirs[] = _DIR_RACINE  . $test_dir;
	} else {
		if (!_FILE_CONNECT) {
			$test_dirs[] = _DIR_CONNECT;
			$test_dirs[] = _DIR_CHMOD;
		}
	}

	$bad_dirs = array();
	$absent_dirs  = array();;

	while (list(, $my_dir) = each($test_dirs)) {
		$test = test_ecrire($my_dir);
		if (!$test) {
			$m = preg_replace(',^' . _DIR_RACINE . ',', '',$my_dir);
			if (@file_exists($my_dir)) {
				$bad_dirs["<li>".$m."</li>"] = 1;
			} else
				$absent_dirs["<li>".$m."</li>"] = 1;
		} else $chmod = max($chmod, $test);
	}

	if ($bad_dirs OR $absent_dirs) {

	if (!_FILE_CONNECT) {
		$titre = _T('dirs_preliminaire');
		$continuer = ' '._T('dirs_commencer') . '.';
	} else
		$titre = _T('dirs_probleme_droits');


	$res = "<div align='right'>". menu_langues('var_lang_ecrire')."</div>\n";

	if ($bad_dirs) {
		$res .=
		  _T('dirs_repertoires_suivants',
		     array('bad_dirs' => join("\n", array_keys($bad_dirs)))) .
		  	"<b>". _T('login_recharger')."</b>.";
	}

	if ($absent_dirs) {
	  	$res .=
			_T('dirs_repertoires_absents',
			   array('bad_dirs' => join("\n", array_keys($absent_dirs)))) .
			"<b>". _T('login_recharger')."</b>.";
	}
	$res = "<p>" . $continuer  . $res . aide ("install0", true) . "</p>";

	$t = _T('login_recharger');
	$t = (!$test_dir ? "" : 
		 "<input type='hidden' name='test_dir' value='$test_dir' />")
	. "<input type='hidden' name='etape' value='chmod' />"
	. "<div style='text-align: right'><input type='submit' value='$t' /></div>"; 

	echo minipres($titre, $res . generer_form_ecrire('install',  $t));

	} else {
		$deja = (_FILE_CONNECT AND analyse_fichier_connection(_FILE_CONNECT));
		if (!$deja)
			redirige_url_ecrire("install", "etape=1&chmod=".$chmod);
		else	redirige_url_ecrire();
	}
}
?>