diff --git a/.gitattributes b/.gitattributes index 51286f25dcfb9f1248aa44b505642c0a6b373365..01cb9d8b5b538e08f738018adcf82550e2660c69 100644 --- a/.gitattributes +++ b/.gitattributes @@ -282,6 +282,7 @@ ecrire/inc_controle_petition.php -text ecrire/inc_cookie.php -text ecrire/inc_forum_admin.php -text ecrire/inc_headers.php -text +ecrire/inc_install.php -text ecrire/inc_js_menu_rubriques.php -text ecrire/inc_lang_liste.php -text ecrire/inc_lang_raccourcis.php3 -text diff --git a/ecrire/inc_install.php b/ecrire/inc_install.php new file mode 100644 index 0000000000000000000000000000000000000000..433c5b7c538aea4d1ccafb025cabab28b7427667 --- /dev/null +++ b/ecrire/inc_install.php @@ -0,0 +1,745 @@ +<?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_INC_VERSION")) return; + +include_ecrire ("inc_minipres.php"); +include_ecrire ("inc_base.php3"); +include_ecrire ("inc_install.php"); +define('_FILE_TMP', '_install'); + +function install() +{ + global $etape; + 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; + } + $fonc = 'install_' . $etape; + if (function_exists($fonc)) + $fonc(); + else spip_log("install: etape '$etape' inconnue"); +} + + +// +// 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); +} + + +function install_6() +{ + global $email,$login,$nom,$pass,$spip_lang_right; + + install_debut_html(); + + + 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(); + + 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(); +} + +function install_5() +{ + global $email, $ldap_present, $login, $nom, $pass, $spip_lang_right; + + install_debut_html(); + + 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 (function_exists('ldap_connect') 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(); +} + +function install_4() +{ + global $adresse_db, $choix_db, $login_db, $pass_db, $spip_lang_right, $spip_version, $table_new; + + install_debut_html(); + + // 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 INTO 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 INTO 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(); +} + +function install_3() +{ + global $adresse_db, $login_db, $pass_db, $spip_lang_right; + + install_debut_html(); + + 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='fondl' 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(); +} + +function install_2() +{ + global $adresse_db, $login_db, $pass_db, $spip_lang_right; + + install_debut_html(); + + + + 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(); +} + +function install_1() +{ + global $spip_lang_right; + + install_debut_html(); + + // 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(); +} + +function install_() +{ + global $spip_lang_right; + + $menu_langues = menu_langues('var_lang_ecrire'); + if (!$menu_langues) + redirige_par_entete("../spip_test_dirs.php3"); + else { + install_debut_html(); + + 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='../spip_test_dirs.php3' METHOD='get'>"; + echo "<DIV align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondl' VALUE='"._T('bouton_suivant')." >>'>"; + echo "</FORM>"; + install_fin_html(); + } +} + +function install_ldap5() +{ + global $spip_lang_right, $statut_ldap; + + install_debut_html(); + + 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>"; +} + +function install_ldap4() +{ + global $adresse_ldap, $base_ldap, $base_ldap_text, $login_ldap, $pass_ldap, $port_ldap, $spip_lang_right; + + install_debut_html(); + + 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(); +} + +function install_ldap3() +{ + global $adresse_ldap, $login_ldap, $pass_ldap, $port_ldap, $spip_lang_right; + + install_debut_html(); + + 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(); +} + +function install_ldap2() +{ + global $adresse_ldap, $login_ldap, $pass_ldap, $port_ldap, $spip_lang_right; + + install_debut_html(); + + 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(); +} + +function install_ldap1() +{ + global $spip_lang_right; + + install_debut_html(); + + 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(); +} +?> diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3 index acef62d2367c8de49017e6dd0fa89b5b14fc191a..35b559dfd706ab9c5b9cfc4c6ee6f9e9f6234d13 100644 --- a/ecrire/inc_lang.php3 +++ b/ecrire/inc_lang.php3 @@ -13,7 +13,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; - // // Charger un fichier langue // @@ -274,10 +273,11 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $her if (!_DIR_RESTREINT) { $cible = _DIR_RESTREINT_ABS . (is_object($lien) ? $lien->getUrl() : $lien); - include_ecrire('inc_session.php3'); $lien = "$site/spip_cookie.php3"; - if (FILE_CONNECT) + if (_FILE_CONNECT) { + include_ecrire('inc_session.php3'); $lien .= "?id_auteur=$connect_id_auteur&valeur=".calculer_action_auteur('var_lang_ecrire', $connect_id_auteur); + } } else { $cible = $lien->getUrl(); $lien = "$site/spip_cookie.php3"; diff --git a/ecrire/install.php3 b/ecrire/install.php3 index a78b16f30e233479dbd6097994ef94abb6cc70b0..522ae2874308842852aaf9250297dd2ac4cb6539 100644 --- a/ecrire/install.php3 +++ b/ecrire/install.php3 @@ -10,752 +10,8 @@ * 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_minipres.php"); - - -// -// 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(); - - 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 (function_exists('ldap_connect') 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 INTO 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 INTO 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='fondl' 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') { - redirige_par_entete("../spip_test_dirs.php3"); -} -else if (!$etape) { - $menu_langues = menu_langues('var_lang_ecrire'); - - if (!$menu_langues) - redirige_par_entete("../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(); - -} - - +$var_f = include_fonction(basename($SCRIPT_NAME, _EXTENSION_PHP)); +$var_f(); ?>