New file |
0,0 → 1,762 |
<?php |
|
/***************************************************************************\ |
* SPIP, Systeme de publication pour l'internet * |
* * |
* Copyright (c) 2001-2005 * |
* 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_INSTALL")) return; |
define("_ECRIRE_INSTALL", "1"); |
|
include ("inc_version.php3"); |
include_ecrire ("inc_presentation.php3"); |
|
|
// |
// Verifier que l'hebergement est compatible SPIP ... ou l'inverse :-) |
// (sert a l'etape 1 de l'installation) |
function tester_compatibilite_hebergement() { |
$err = array(); |
|
$p = phpversion(); |
if (ereg('^([0-9]+)\.([0-9]+)\.([0-9]+)', $p, $regs)) { |
$php = array($regs[1], $regs[2], $regs[3]); |
$m = '4.0.8'; |
$min = explode('.', $m); |
if ($php[0]<$min[0] |
OR ($php[0]==$min[0] AND $php[1]<$min[1]) |
OR ($php[0]==$min[0] AND $php[1]==$min[1] AND $php[2]<$min[2])) |
$err[] = _L("PHP version $p insuffisant (minimum = $m)"); |
} |
|
if (!function_exists('mysql_query')) |
$err[] = _T('install_extension_php_obligatoire') |
. " <a href='http://se.php.net/mysql'>MYSQL</a>"; |
|
if (!function_exists('preg_match_all')) |
$err[] = _T('install_extension_php_obligatoire') |
. " <a href='http://se.php.net/pcre'>PCRE</a>"; |
|
if ($a = @ini_get('mbstring.func_overload')) |
$err[] = _T('install_extension_mbstring') |
. "mbstring.func_overload=$a - <a href='http://se.php.net/mb_string'>mb_string</a>.<br /><small>"; |
|
if ($err) { |
echo "<P><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=4><b>"._T('avis_attention').'</b> <p>'._T('install_echec_annonce')."</p></FONT>"; |
while (list(,$e) = each ($err)) |
echo "<li>$e</li>\n"; |
|
# a priori ici on pourrait die(), mais il faut laisser la possibilite |
# de forcer malgre tout (pour tester, ou si bug de detection) |
echo "<p /><hr />\n"; |
} |
} |
|
|
// Une fonction pour faciliter la recherche du login (superflu ?) |
function login_hebergeur() { |
global $HTTP_X_HOST, $REQUEST_URI, $SERVER_NAME, $HTTP_HOST; |
|
$base_hebergeur = 'localhost'; # par defaut |
|
// Lycos (ex-Multimachin) |
if ($HTTP_X_HOST == 'membres.lycos.fr') { |
ereg('^/([^/]*)', $REQUEST_URI, $regs); |
$login_hebergeur = $regs[1]; |
} |
// Altern |
else if (ereg('altern\.com$', $SERVER_NAME)) { |
ereg('([^.]*\.[^.]*)$', $HTTP_HOST, $regs); |
$login_hebergeur = ereg_replace('[^a-zA-Z0-9]', '_', $regs[1]); |
} |
// Free |
else if (ereg('(.*)\.free\.fr$', $SERVER_NAME, $regs)) { |
$base_hebergeur = 'sql.free.fr'; |
$login_hebergeur = $regs[1]; |
} |
|
return array($base_hebergeur, $login_hebergeur); |
} |
|
|
|
if (_FILE_CONNECT) { |
install_debut_html(); |
echo "<P><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=4>"._T('avis_espace_interdit')."</FONT>"; |
|
install_fin_html(); |
exit; |
} |
|
include_ecrire ("inc_base.php3"); |
define('_FILE_TMP', '_install'); |
|
|
// Sur tous les formulaires on peut cliquer "return" pour passer a la suite |
define ('_VALIDE_CLAVIER', ''); |
/* |
define ('_VALIDE_CLAVIER', "<script><!-- |
window.onkeypress = enterSubmit; |
function enterSubmit(){ |
// si on appuie sur enter ou return |
if ((event.keyCode==13) || (event.keyCode==3)) { |
// a l'etape 1 ne pas valider formulaire var_lang |
a = 0; |
if ((document.forms(0).action != 'install.php3') |
&& (document.forms(0).action != 'index.php3')) |
a = 1; |
document.forms(a).submit(); |
} |
} |
// --></script>\n"); |
*/ |
|
// |
// Etapes de l'installation standard |
// |
|
if ($etape == 6) { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_derniere_etape')."</B></FONT>"; |
echo "<P>"; |
echo "<B>"._T('info_code_acces')."</B>"; |
echo "<P>"._T('info_utilisation_spip'); |
|
include(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP); |
include_ecrire ("inc_meta.php3"); |
|
if ($login) { |
$nom = addslashes($nom); |
$login = addslashes($login); |
$query = "SELECT id_auteur FROM spip_auteurs WHERE login='$login'"; |
$result = spip_query($query); |
unset($id_auteur); |
while ($row = spip_fetch_array($result)) $id_auteur = $row['id_auteur']; |
|
$mdpass = md5($pass); |
$htpass = generer_htpass($pass); |
|
if ($id_auteur) { |
$query = "UPDATE spip_auteurs SET nom='$nom', email='$email', login='$login', pass='$mdpass', alea_actuel='', alea_futur=FLOOR(32000*RAND()), htpass='$htpass', statut='0minirezo' WHERE id_auteur=$id_auteur"; |
} |
else { |
$query = "INSERT INTO spip_auteurs (nom, email, login, pass, htpass, alea_futur, statut) VALUES('$nom','$email','$login','$mdpass','$htpass',FLOOR(32000*RAND()),'0minirezo')"; |
} |
spip_query($query); |
|
// inserer email comme email webmaster principal |
spip_query("REPLACE spip_meta (nom, valeur) |
VALUES ('email_webmaster', '".addslashes($email)."')"); |
} |
|
include_ecrire("inc_config.php3"); |
init_config(); |
init_langues(); |
|
include_ecrire ("inc_acces.php3"); |
ecrire_acces(); |
|
@unlink(_DIR_SESSIONS . 'inc_meta_cache.php3'); |
@unlink(_DIR_SESSIONS . 'meta_cache.php3'); |
if (!@rename(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, |
_FILE_CONNECT_INS . _EXTENSION_PHP)) { |
copy(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, |
_FILE_CONNECT_INS . _EXTENSION_PHP); |
@unlink(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP); |
} |
|
echo "<FORM ACTION='index.php3' METHOD='post'>"; |
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
echo "</FORM>"; |
|
ecrire_metas(); |
|
install_fin_html(); |
} |
|
else if ($etape == 5) { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
include(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP); |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_informations_personnelles')."</FONT>"; |
echo "<P>\n"; |
|
echo "<b>"._T('texte_informations_personnelles_1')."</b>"; |
echo aide ("install5"); |
echo "<p>\n"._T('texte_informations_personnelles_2')." "; |
echo _T('info_laisser_champs_vides'); |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='6'>"; |
|
echo "<fieldset><label><B>"._T('info_identification_publique')."</B><BR />\n</label>"; |
echo "<B>"._T('entree_signature')."</B><BR />\n"; |
echo _T('entree_nom_pseudo_1')."<BR />\n"; |
echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"$nom\" SIZE='40'><P>\n"; |
|
echo "<B>"._T('entree_adresse_email')."</B><BR />\n"; |
echo "<INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"$email\" SIZE='40'></fieldset><P>\n"; |
|
echo "<fieldset><label><B>"._T('entree_identifiants_connexion')."</B><BR />\n</label>"; |
echo "<B>"._T('entree_login')."</B><BR />\n"; |
echo _T('info_plus_trois_car')."<BR />\n"; |
echo "<INPUT TYPE='text' NAME='login' CLASS='formo' VALUE=\"$login\" SIZE='40'><P>\n"; |
|
echo "<B>"._T('entree_mot_passe')."</B> <BR />\n"; |
echo _T('info_plus_cinq_car_2')."<BR />\n"; |
echo "<INPUT TYPE='password' NAME='pass' CLASS='formo' VALUE=\"$pass\" SIZE='40'></fieldset><P>\n"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
echo "</FORM>"; |
echo "<p>\n"; |
|
if ($flag_ldap AND !$ldap_present) { |
echo "<div style='border: 1px solid #404040; padding: 10px; text-align: left;'>"; |
echo "<b>"._T('info_authentification_externe')."</b>"; |
echo "<p>\n"._T('texte_annuaire_ldap_1'); |
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap1'>"; |
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE=\""._T('bouton_acces_ldap')."\">"; |
echo "</FORM>"; |
} |
|
install_fin_html(); |
|
} |
|
else if ($etape == 4) { |
|
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
// Necessaire pour appeler les fonctions SQL wrappees |
include_ecrire("inc_db_mysql.php3"); |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_creation_tables')."</FONT>"; |
echo "<P>\n"; |
|
$link = mysql_connect("$adresse_db", "$login_db", "$pass_db"); |
|
echo "<"."!-- $link "; |
|
if ($choix_db == "new_spip") { |
$sel_db = $table_new; |
mysql_query("CREATE DATABASE $sel_db"); |
} |
else { |
$sel_db = $choix_db; |
} |
echo "$sel_db "; |
mysql_select_db($sel_db); |
|
// Message pour spip_query : tout va bien ! |
$GLOBALS['db_ok'] = true; |
$GLOBALS['spip_connect_version'] = 0.2; # cf. inc_version |
|
// Test si SPIP deja installe |
spip_query("SELECT COUNT(*) FROM spip_meta"); |
$nouvelle = spip_sql_errno(); |
creer_base(); |
|
$maj_ok = maj_base(); |
|
// Tester $mysql_rappel_nom_base |
$GLOBALS['mysql_rappel_nom_base'] = true; |
$GLOBALS['spip_mysql_db'] = $sel_db; |
$ok_rappel_nom = spip_query("INSERT spip_meta (nom,valeur) |
VALUES ('mysql_rappel_nom_base', 'test')"); |
if ($ok_rappel_nom) { |
echo " (ok rappel nom base `$sel_db`.spip_meta) "; |
$ligne_rappel = ''; |
spip_query("DELETE FROM spip_meta WHERE nom='mysql_rappel_nom_base'"); |
} else { |
echo " (erreur rappel nom base `$sel_db`.spip_meta) "; |
$GLOBALS['mysql_rappel_nom_base'] = false; |
$ligne_rappel = "\$GLOBALS['mysql_rappel_nom_base'] = false; ". |
"/* echec du test sur `$sel_db`.spip_meta lors de l'installation. */\n"; |
} |
|
if ($nouvelle) { |
spip_query("INSERT spip_meta (nom, valeur) VALUES ('nouvelle_install', 'oui')"); |
$result_ok = !spip_sql_errno(); |
} else { |
$result = spip_query("SELECT COUNT(*) FROM spip_articles"); |
$result_ok = (spip_num_rows($result) > 0); |
} |
echo "($result_ok && $maj_ok) -->"; |
|
|
if ($result_ok && $maj_ok) { |
$conn = "<"."?php\n"; |
$conn .= "if (defined(\"_ECRIRE_INC_CONNECT\")) return;\n"; |
$conn .= "define(\"_ECRIRE_INC_CONNECT\", \"1\");\n"; |
$conn .= "\$GLOBALS['spip_connect_version'] = 0.2;\n"; |
$conn .= "include_ecrire('inc_db_mysql.php3');\n"; |
$conn .= $ligne_rappel; |
$conn .= "spip_connect_db('$adresse_db','','$login_db','$pass_db','$sel_db');\n"; |
# $conn .= "\$GLOBALS['db_ok'] = !!@spip_num_rows(@spip_query_db('SELECT COUNT(*) FROM spip_meta'));\n"; |
$conn .= "?".">"; |
$myFile = fopen(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, "wb"); |
fputs($myFile, $conn); |
fclose($myFile); |
|
echo "<B>"._T('info_base_installee')."</B><P>\n"._T('info_etape_suivante_1'); |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='5'>"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
|
echo "</FORM>"; |
} |
else if ($result_ok) { |
echo _T('alerte_maj_impossible', array('version' => $spip_version)); |
} |
else { |
echo "<B>"._T('avis_operation_echec')."</B> "._T('texte_operation_echec'); |
} |
|
install_fin_html(); |
|
} |
|
else if ($etape == 3) { |
|
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_choix_base')." <B>"._T('menu_aide_installation_choix_base')."</B></FONT>"; |
|
echo aide ("install2"); |
echo "<P>\n"; |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='4'>"; |
echo "<INPUT TYPE='hidden' NAME='adresse_db' VALUE=\"$adresse_db\" SIZE='40'>"; |
echo "<INPUT TYPE='hidden' NAME='login_db' VALUE=\"$login_db\">"; |
echo "<INPUT TYPE='hidden' NAME='pass_db' VALUE=\"$pass_db\"><P>\n"; |
|
$link = mysql_connect("$adresse_db","$login_db","$pass_db"); |
$result = @mysql_list_dbs(); |
|
echo "<fieldset><label><B>"._T('texte_choix_base_1')."</B><BR />\n</label>"; |
|
if ($result AND (($n = @mysql_num_rows($result)) > 0)) { |
echo "<B>"._T('texte_choix_base_2')."</B><P> "._T('texte_choix_base_3'); |
echo "<UL>"; |
$bases = ""; |
for ($i = 0; $i < $n; $i++) { |
$table_nom = mysql_dbname($result, $i); |
$base = "<INPUT NAME=\"choix_db\" VALUE=\"".$table_nom."\" TYPE=Radio id='tab$i'"; |
$base_fin = "><label for='tab$i'>".$table_nom."</label><BR />\n\n"; |
if ($table_nom == $login_db) { |
$bases = "$base CHECKED$base_fin".$bases; |
$checked = true; |
} |
else { |
$bases .= "$base$base_fin\n"; |
} |
} |
echo $bases."</UL>"; |
echo _T('info_ou')." "; |
} |
else { |
echo "<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 = @mysql_select_db($test_base); |
$test_base2 = str_replace('.', '_', $test_base); |
if (@mysql_select_db($test_base2)) { |
$test_base = $test_base2; |
$ok = true; |
} |
|
if ($ok) { |
echo _T('avis_lecture_noms_bases_3'); |
echo "<UL>"; |
echo "<INPUT NAME=\"choix_db\" VALUE=\"".$test_base."\" TYPE=Radio id='stand' CHECKED>"; |
echo "<label for='stand'>".$test_base."</label><BR />\n"; |
echo "</UL>"; |
echo _T('info_ou')." "; |
$checked = true; |
} |
} |
} |
echo "<INPUT NAME=\"choix_db\" VALUE=\"new_spip\" TYPE=Radio id='nou'"; |
if (!$checked) echo " CHECKED"; |
echo "> <label for='nou'>"._T('info_creer_base')."</label> "; |
echo "<INPUT TYPE='text' NAME='table_new' CLASS='fondo' VALUE=\"spip\" SIZE='20'></fieldset><P>"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
|
|
echo "</FORM>"; |
|
install_fin_html(); |
|
} |
|
else if ($etape == 2) { |
|
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
|
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_connexion_base')."</FONT>"; |
|
echo "<!--"; |
$link = mysql_connect("$adresse_db","$login_db","$pass_db"); |
$db_connect = mysql_errno(); |
echo "-->"; |
|
echo "<P>"; |
|
if (($db_connect=="0") && $link){ |
echo "<B>"._T('info_connexion_ok')."</B><P> "._T('info_etape_suivante_2'); |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='3'>"; |
echo "<INPUT TYPE='hidden' NAME='adresse_db' VALUE=\"$adresse_db\" SIZE='40'>"; |
echo "<INPUT TYPE='hidden' NAME='login_db' VALUE=\"$login_db\">"; |
echo "<INPUT TYPE='hidden' NAME='pass_db' VALUE=\"$pass_db\"><P>"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
echo "</FORM>"; |
} |
else { |
echo "<B>"._T('avis_connexion_echec_1')."</B>"; |
echo "<P>"._T('avis_connexion_echec_2'); |
echo "<P><FONT SIZE=2>"._T('avis_connexion_echec_3')."</FONT>"; |
} |
|
install_fin_html(); |
|
} |
else if ($etape == 1) { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
// stopper en cas de grosse incompatibilite de l'hebergement |
tester_compatibilite_hebergement(); |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_connexion_mysql')."</FONT>"; |
|
echo "<P>"._T('texte_connexion_mysql'); |
|
echo aide ("install1"); |
|
list($adresse_db, $login_db) = login_hebergeur(); |
$pass_db = ''; |
|
// Recuperer les anciennes donnees pour plus de facilite (si presentes) |
if (@file_exists(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)) { |
$s = @join('', @file(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)); |
if (ereg("mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)", $s, $regs)) { |
$adresse_db = $regs[1]; |
$login_db = $regs[2]; |
} |
else if (ereg("spip_connect_db\('(.*)','(.*)','(.*)','(.*)','(.*)'\)", $s, $regs)) { |
$adresse_db = $regs[1]; |
if ($port_db = $regs[2]) $adresse_db .= ':'.$port_db; |
$login_db = $regs[3]; |
} |
} |
|
echo "<p><FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='2'>"; |
echo "<fieldset><label><B>"._T('entree_base_donnee_1')."</B><BR />\n</label>"; |
echo _T('entree_base_donnee_2')."<BR />\n"; |
echo "<INPUT TYPE='text' NAME='adresse_db' CLASS='formo' VALUE=\"$adresse_db\" SIZE='40'></fieldset><P>"; |
|
echo "<fieldset><label><B>"._T('entree_login_connexion_1')."</B><BR />\n</label>"; |
echo _T('entree_login_connexion_2')."<BR />\n"; |
echo "<INPUT TYPE='text' NAME='login_db' CLASS='formo' VALUE=\"$login_db\" SIZE='40'></fieldset><P>"; |
|
echo "<fieldset><label><B>"._T('entree_mot_passe_1')."</B><BR />\n</label>"; |
echo _T('entree_mot_passe_2')."<BR />\n"; |
echo "<INPUT TYPE='password' NAME='pass_db' CLASS='formo' VALUE=\"$pass_db\" SIZE='40'></fieldset><P>"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
|
|
echo "</FORM>"; |
|
install_fin_html(); |
|
} |
else if ($etape == 'dirs') { |
header("Location: ../spip_test_dirs.php3"); |
} |
else if (!$etape) { |
$menu_langues = menu_langues('var_lang_ecrire'); |
|
if (!$menu_langues) |
header("Location: ../spip_test_dirs.php3"); |
else { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
echo "<p align='center'><img src='" . _DIR_IMG_PACK . "logo-spip.gif'></p>"; |
|
echo "<p style='text-align: center; font-family: Verdana,Arial,Sans,sans-serif; font-size: 10px;'>"; |
echo info_copyright(); |
echo "</p>"; |
|
echo "<p>" . _T('install_select_langue'); |
|
echo "<p><div align='center'>".$menu_langues."</div>"; |
|
echo "<p><FORM ACTION='install.php3' METHOD='get'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='dirs'>"; |
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
echo "</FORM>"; |
install_fin_html(); |
} |
} |
|
|
// |
// Etapes de l'installation LDAP |
// |
|
else if ($etape == 'ldap5') { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
include_local(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP); |
include_ecrire('inc_meta.php3'); |
ecrire_meta("ldap_statut_import", $statut_ldap); |
ecrire_metas(); |
|
echo "<B>"._T('info_ldap_ok')."</B>"; |
echo "<P>"._T('info_terminer_installation'); |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='5'>"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
|
echo "</FORM>"; |
} |
|
else if ($etape == 'ldap4') { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
if (!$base_ldap) $base_ldap = $base_ldap_text; |
|
$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 "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_chemin_acces_annuaire')."</B></FONT>"; |
echo "<P>"; |
|
echo "<B>"._T('avis_operation_echec')."</B> "._T('avis_chemin_invalide_1')." (<tt>".htmlspecialchars($base_ldap); |
echo "</tt>) "._T('avis_chemin_invalide_2'); |
} |
else { |
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_reglage_ldap')."</FONT>"; |
echo "<P>"; |
|
$conn = join('', file(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)); |
if ($p = strpos($conn, '?'.'>')) |
$conn = substr($conn, 0, $p); |
if (!strpos($conn, 'spip_connect_ldap')) { |
$conn .= "function spip_connect_ldap() {\n"; |
$conn .= "\t\$GLOBALS['ldap_link'] = @ldap_connect(\"$adresse_ldap\",\"$port_ldap\");\n"; |
$conn .= "\t@ldap_bind(\$GLOBALS['ldap_link'],\"$login_ldap\",\"$pass_ldap\");\n"; |
$conn .= "\treturn \$GLOBALS['ldap_link'];\n"; |
$conn .= "}\n"; |
$conn .= "\$GLOBALS['ldap_base'] = \"$base_ldap\";\n"; |
$conn .= "\$GLOBALS['ldap_present'] = true;\n"; |
} |
$conn .= "?".">"; |
$myFile = fopen(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP, "wb"); |
fputs($myFile, $conn); |
fclose($myFile); |
|
echo "<p><FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap5'>"; |
echo "<fieldset><label><B>"._T('info_statut_utilisateurs_1')."</B></label><BR />\n"; |
echo _T('info_statut_utilisateurs_2')." "; |
echo "<p>"; |
echo "<INPUT TYPE='Radio' NAME='statut_ldap' VALUE=\"6forum\" id='visit'>"; |
echo "<label for='visit'><b>"._T('info_visiteur_1')."</b></label> "._T('info_visiteur_2')."<br />\n"; |
echo "<INPUT TYPE='Radio' NAME='statut_ldap' VALUE=\"1comite\" id='redac' CHECKED>"; |
echo "<label for='redac'><b>"._T('info_redacteur_1')."</b></label> "._T('info_redacteur_2')."<br />\n"; |
echo "<INPUT TYPE='Radio' NAME='statut_ldap' VALUE=\"0minirezo\" id='admin'>"; |
echo "<label for='admin'><b>"._T('info_administrateur_1')."</b></label> "._T('info_administrateur_2')."<br />\n"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
|
echo "</FORM>"; |
} |
|
install_fin_html(); |
} |
|
else if ($etape == 'ldap3') { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('info_chemin_acces_1')."</FONT>"; |
|
echo "<P>"._T('info_chemin_acces_2'); |
|
$ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap"); |
@ldap_bind($ldap_link, "$login_ldap", "$pass_ldap"); |
|
$result = @ldap_read($ldap_link, "", "objectclass=*", array("namingContexts")); |
$info = @ldap_get_entries($ldap_link, $result); |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap4'>"; |
echo "<INPUT TYPE='hidden' NAME='adresse_ldap' VALUE=\"$adresse_ldap\">"; |
echo "<INPUT TYPE='hidden' NAME='port_ldap' VALUE=\"$port_ldap\">"; |
echo "<INPUT TYPE='hidden' NAME='login_ldap' VALUE=\"$login_ldap\">"; |
echo "<INPUT TYPE='hidden' NAME='pass_ldap' VALUE=\"$pass_ldap\">"; |
|
echo "<fieldset>"; |
|
$checked = false; |
|
if (is_array($info) AND $info["count"] > 0) { |
echo "<P>"._T('info_selection_chemin_acces'); |
echo "<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++; |
echo "<INPUT NAME=\"base_ldap\" VALUE=\"".htmlspecialchars($names[$j])."\" TYPE='Radio' id='tab$n'"; |
if (!$checked) { |
echo " CHECKED"; |
$checked = true; |
} |
echo ">"; |
echo "<label for='tab$n'>".htmlspecialchars($names[$j])."</label><BR />\n\n"; |
} |
} |
} |
echo "</UL>"; |
echo _T('info_ou')." "; |
} |
echo "<INPUT NAME=\"base_ldap\" VALUE=\"\" TYPE='Radio' id='manuel'"; |
if (!$checked) { |
echo " CHECKED"; |
$checked = true; |
} |
echo ">"; |
echo "<label for='manuel'>"._T('entree_chemin_acces')."</label> "; |
echo "<INPUT TYPE='text' NAME='base_ldap_text' CLASS='formo' VALUE=\"ou=users, dc=mon-domaine, dc=com\" SIZE='40'></fieldset><P>"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
echo "</FORM>"; |
|
install_fin_html(); |
|
} |
|
else if ($etape == 'ldap2') { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('titre_connexion_ldap')."</FONT>"; |
|
echo "<P>"; |
|
$ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap"); |
$r = @ldap_bind($ldap_link, "$login_ldap", "$pass_ldap"); |
|
if ($ldap_link && ($r || !$login_ldap)) { |
echo "<B>"._T('info_connexion_ldap_ok'); |
|
echo "<FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap3'>"; |
echo "<INPUT TYPE='hidden' NAME='adresse_ldap' VALUE=\"$adresse_ldap\">"; |
echo "<INPUT TYPE='hidden' NAME='port_ldap' VALUE=\"$port_ldap\">"; |
echo "<INPUT TYPE='hidden' NAME='login_ldap' VALUE=\"$login_ldap\">"; |
echo "<INPUT TYPE='hidden' NAME='pass_ldap' VALUE=\"$pass_ldap\">"; |
|
echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
echo "</FORM>"; |
} |
else { |
echo "<B>"._T('avis_connexion_ldap_echec_1')."</B>"; |
echo "<P>"._T('avis_connexion_ldap_echec_2'); |
echo "<br />\n"._T('avis_connexion_ldap_echec_3'); |
} |
|
install_fin_html(); |
|
} |
|
else if ($etape == 'ldap1') { |
install_debut_html(); |
echo _VALIDE_CLAVIER; |
|
echo "<BR />\n<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3>"._T('titre_connexion_ldap')."</FONT>"; |
|
echo "<P>"._T('entree_informations_connexion_ldap'); |
|
$adresse_ldap = 'localhost'; |
$port_ldap = 389; |
|
// Recuperer les anciennes donnees (si presentes) |
if (@file_exists(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)) { |
$s = @join('', @file(_FILE_CONNECT_INS . _FILE_TMP . _EXTENSION_PHP)); |
if (ereg('ldap_connect\("(.*)","(.*)"\)', $s, $regs)) { |
$adresse_ldap = $regs[1]; |
$port_ldap = $regs[2]; |
} |
} |
|
echo "<p><FORM ACTION='install.php3' METHOD='post'>"; |
echo "<INPUT TYPE='hidden' NAME='etape' VALUE='ldap2'>"; |
echo "<fieldset><label><B>"._T('entree_adresse_annuaire')."</B><BR />\n</label>"; |
echo _T('texte_adresse_annuaire_1')."<BR />\n"; |
echo "<INPUT TYPE='text' NAME='adresse_ldap' CLASS='formo' VALUE=\"$adresse_ldap\" SIZE='20'><P>"; |
|
echo "<label><B>"._T('entree_port_annuaire')."</B><BR />\n</label>"; |
echo _T('texte_port_annuaire')."<BR />\n"; |
echo "<INPUT TYPE='text' NAME='port_ldap' CLASS='formo' VALUE=\"$port_ldap\" SIZE='20'><P></fieldset>"; |
|
echo "<p><fieldset>"; |
echo _T('texte_acces_ldap_anonyme_1')." "; |
echo "<label><B>"._T('entree_login_ldap')."</B><BR />\n</label>"; |
echo _T('texte_login_ldap_1')."<br />\n"; |
echo "<INPUT TYPE='text' NAME='login_ldap' CLASS='formo' VALUE=\"\" SIZE='40'><P>"; |
|
echo "<label><B>"._T('entree_passe_ldap')."</B><BR />\n</label>"; |
echo "<INPUT TYPE='password' NAME='pass_ldap' CLASS='formo' VALUE=\"\" SIZE='40'></fieldset>"; |
|
echo "<p><DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; |
|
echo "</FORM>"; |
|
install_fin_html(); |
|
} |
|
|
?> |