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(); }
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(); }
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(); $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>" . 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='" . 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(); }
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'); // si la base de SPIP est up, on peut installer les plugins, sinon on passe cette etape // car les plugins supposent que la base de SPIP est dans son etat normal (mise a jour) // au premier passage dans l'espace prive on aura une demande d'upgrade qui se poursuit sur la page plugin // et procede alors a l'installation if (!isset($GLOBALS['meta']['version_installee']) or $GLOBALS['spip_version_base'] == str_replace(',', '.', $GLOBALS['meta']['version_installee'])) { 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(); }
/** * Affiche l'étape 0 d'installation : écran d'accueil. * * @uses info_copyright() **/ 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); } }
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(); 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(); }
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(); }
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(); }
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 "<p>" ._L('Les extensions ci-dessous sont chargées et activées dans le répertoire @extensions@.', array('extensions' => joli_repertoire(_DIR_EXTENSIONS))) ."</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste",'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_EXTENSIONS),array(), _DIR_EXTENSIONS,'afficher_nom_plugin'); installe_plugins(); echo info_etape(_T('info_derniere_etape'), _T('info_utilisation_spip') ); // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); $_POST['adresse_site'] = ''; appliquer_modifs_config(); // 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(); }
function install_premier_auteur($email, $login, $nom, $pass, $hidden) { return info_progression_etape(3,'etape_','install/') . info_etape(_T('info_informations_personnelles'), "<b>"._T('texte_informations_personnelles_1')."</b>" . aide ("install5") . "<p>" . _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 ), '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_plus_trois_car')."\n", 'valeur' => $login ), 'pass' => array( 'label' => "<b>"._T('entree_mot_passe')."</b><br />\n"._T('info_plus_cinq_car_2')."\n", 'valeur' => $pass ), 'pass_verif' => array( 'label' => "<b>"._T('info_confirmer_passe')."</b><br />\n", 'valeur' => $pass ) ) ) . bouton_suivant())); }
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()); }
function install_connexion_form($db, $login, $pass, $predef, $hidden, $etape) { $server_db = (is_string($predef[0])) ? $predef[0] : ''; return generer_form_ecrire('install', ( "\n<input type='hidden' name='etape' value='$etape' />" . $hidden . (_request('echec')? ("<p><b>"._T('avis_connexion_echec_1'). "</b></p><p>"._T('avis_connexion_echec_2')."</p><p style='font-size: small;'>"._T('avis_connexion_echec_3')."</p>") :"") . http_script('', 'jquery.js') . http_script(' $(document).ready(function() { $("input[type=hidden][name=server_db]").each(function(){ if ($(this).attr("value").match("sqlite*")){ $("#install_adresse_base_hebergeur").hide(); $("#install_login_base_hebergeur").hide(); $("#install_pass_base_hebergeur").hide(); } }); $("#sql_serveur_db").change(function(){ if ($(this).find("option:selected").attr("value").match("sqlite*")){ $("#install_adresse_base_hebergeur").hide(); $("#install_login_base_hebergeur").hide(); $("#install_pass_base_hebergeur").hide(); } else { $("#install_adresse_base_hebergeur").show(); $("#install_login_base_hebergeur").show(); $("#install_pass_base_hebergeur").show(); } }); });') . ($server_db ? '<input type="hidden" name="server_db" value="'.$server_db.'" />' . (($predef[0]) ?('<h3>'._T('install_serveur_hebergeur').'</h3>') :'') : ('<fieldset><legend>' ._T('install_select_type_db') . "</legend>" .'<label for="sql_serveur_db">' . _T('install_types_db_connus') // Passer l'avertissement SQLIte en commentaire, on pourra facilement le supprimer par la suite sans changer les traductions. . "<br /><small>(". _T('install_types_db_connus_avertissement') .')</small>' .'</label>' . "\n<div style='text-align: center;'><select name='server_db' id='sql_serveur_db' >\n" . join("\n", install_select_serveur()) . "\n</select></div></fieldset>") ) . '<div id="install_adresse_base_hebergeur">' . ($predef[1] ? '<h3>'._T('install_adresse_base_hebergeur').'</h3>' : fieldset(_T('entree_base_donnee_1'), array( 'adresse_db' => array( 'label' => $db[1], 'valeur' => $db[0] ), ) ) ) . '</div>' . '<div id="install_login_base_hebergeur">' . ($predef[2] ? '<h3>'._T('install_login_base_hebergeur').'</h3>' : fieldset(_T('entree_login_connexion_1'), array( 'login_db' => array( 'label' => $login[1], 'valeur' => $login[0] ), ) ) ) . '</div>' . '<div id="install_pass_base_hebergeur">' . ($predef[3] ? '<h3>'._T('install_pass_base_hebergeur').'</h3>' : fieldset(_T('entree_mot_passe_1'), array( 'pass_db' => array( 'label' => $pass[1], 'valeur' => $pass[0] ), ) ) ) . '</div>' . bouton_suivant())); }
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())); }
function install_etape_sup1_form($hidden, $checked, $bases, $etape) { if ($bases) { $bases = "\n<fieldset><legend>" . _T('config_titre_base_sup_choix') . "</legend>\n" . "<ul>\n<li>" . join("</li>\n<li>",$bases) . "</li>\n</ul><p>" . _T('info_ou'); $type = " type='radio'" . ($checked ? '' : " checked='checked'"); } else { $bases = _T('config_erreur_base_sup') . '<br /><br >'; $type = " type='hidden'"; } return generer_form_ecrire('install', ( "\n<input type='hidden' name='etape' value='$etape' />" . $hidden . $bases . "\n<input name=\"choix_db\" value='-1' id='nou'" . $type . " />\n" . "<label for='nou'><b>" ._T('config_choix_base_sup') ."</b></label></p>\n" . "\n<input type='text' name='table_new' class='text' size='20' /></p></fieldset>\n" . bouton_suivant())); }
function install_connexion_form($db, $login, $pass, $predef, $hidden, $etape, $jquery = true) { $server_db = is_string($predef[0]) ? $predef[0] : ''; return generer_form_ecrire('install', "\n<input type='hidden' name='etape' value='{$etape}' />" . $hidden . (_request('echec') ? "<p><b>" . _T('avis_connexion_echec_1') . "</b></p><p>" . _T('avis_connexion_echec_2') . "</p><p style='font-size: small;'>" . _T('avis_connexion_echec_3') . "</p>" : "") . ($jquery ? http_script('', 'jquery.js') : '') . http_script(' $(document).ready(function() { $("input[type=hidden][name=server_db]").each(function(){ if ($(this).attr("value").match("sqlite*")){ $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").hide(); } }); if ($("#sql_serveur_db").length) { if ($("#sql_serveur_db").attr("value").match("sqlite*")) $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").hide(); else $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").show(); $("#sql_serveur_db").change(function(){ if ($(this).find("option:selected").attr("value").match("sqlite*")) $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").hide(); else $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").show(); }); } });') . ($server_db ? '<input type="hidden" name="server_db" value="' . $server_db . '" />' . ($predef[0] ? '<h3>' . _T('install_serveur_hebergeur') . '</h3>' : '') : '<fieldset><legend>' . _T('install_select_type_db') . "</legend>" . '<label for="sql_serveur_db" class="p">' . _T('install_types_db_connus') . "<br /><small>(" . _T('install_types_db_connus_avertissement') . ')</small>' . '</label>' . "\n<div class='p center'><select name='server_db' id='sql_serveur_db' >\n" . join("\n", install_select_serveur()) . "\n</select></div></fieldset>") . '<div id="install_adresse_base_hebergeur">' . '<p>' . _T('texte_connexion_mysql') . '</p>' . ($predef[1] ? '<h3>' . _T('install_adresse_base_hebergeur') . '</h3>' : fieldset(_T('entree_base_donnee_1'), array('adresse_db' => array('label' => $db[1], 'valeur' => $db[0])))) . '</div>' . '<div id="install_login_base_hebergeur">' . ($predef[2] ? '<h3>' . _T('install_login_base_hebergeur') . '</h3>' : fieldset(_T('entree_login_connexion_1'), array('login_db' => array('label' => $login[1], 'valeur' => $login[0])))) . '</div>' . '<div id="install_pass_base_hebergeur">' . ($predef[3] ? '<h3>' . _T('install_pass_base_hebergeur') . '</h3>' : fieldset(_T('entree_mot_passe_1'), array('pass_db' => array('label' => $pass[1], 'valeur' => $pass[0])))) . '</div>' . bouton_suivant()); }
function action_charger_plugin_dist() { global $spip_lang_left; $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); include_spip('inc/minipres'); include_spip('inc/charger_plugin'); // droits : il faut avoir le droit de choisir les plugins, // mais aussi d'en ajouter -- a voir include_spip('inc/autoriser'); if (!autoriser('configurer', 'plugins')) { echo minipres(); exit; } if ($arg == 'update_flux') { if (is_array($syndic_plug = @unserialize($GLOBALS['meta']['syndic_plug']))) foreach ($syndic_plug as $url => $c) essaie_ajouter_liste_plugins($url); } elseif ($arg == 'supprimer_flux' AND $url = _request('supprimer_flux')) { $syndic_plug = @unserialize($GLOBALS['meta']['syndic_plug']); unset($syndic_plug[$url]); ecrire_meta('syndic_plug', serialize($syndic_plug)); } elseif (in_array($arg,array('charger_zip','lib','plugins'))) { // la verification que c'est bien un zip sera faite apres $zip = _request('url_zip_plugin'); } elseif (strlen($arg)) { // la verification que c'est bien un zip sera faite apres $zip = $arg; } else { // indetermine : c'est un zip ou une liste $arg = 'charger_liste_ou_zip'; $zip = _request('url_zip_plugin2'); } # si premiere lecture, destination temporaire des fichiers $tmp = sous_repertoire(_DIR_CACHE, 'chargeur'); # on ne se contenten pas du basename qui peut etre un simple v1 # exemple de l'url http://nodeload.github.com/kbjr/Git.php/zipball/v0.1.1-rc $fichier = (_request('fichier')? _request('fichier') :"h".substr(md5($zip),0,8)."-".basename($zip) ); # basename par securite notamment dans le cas ou $fichier viens de l'exterieur $fichier = $tmp.basename($fichier); $extension = ""; // a verifier # au second tour, le zip designe directement le fichier au lieu de l'url # initiale if (!file_exists($fichier)) { # si on ne dispose pas encore du fichier # verifier que le zip en est bien un (sans se fier a son extension) # en chargeant son entete car l'url initiale peut etre une simple # redirection et ne pas comporter d'extension .zip include_spip('inc/distant'); $head = recuperer_page($zip, false, true, 0); if (preg_match(",^Content-Type:\s*application/zip$,Uims",$head)) $extension = "zip"; elseif (preg_match(',^Content-Disposition:\s*attachment;\s*filename="?([^"]+)"?$,Uims',$head,$m)){ $f = $m[1]; if (pathinfo($f, PATHINFO_EXTENSION)=="zip"){ $fichier = (_request('fichier')? _request('fichier') :"h".substr(md5($zip),0,8)."-".basename($f) ); $fichier = $tmp.basename($fichier); $extension = "zip"; } } // au cas ou, si le content-type n'est pas la // mais que l'extension est explicite elseif(pathinfo($zip, PATHINFO_EXTENSION)=="zip") $extension = "zip"; # si ce n'est pas un zip dans un format connu, # c'est sans doute une liste de plugins # si on est dans le bon scenario if (!$extension) { if ($arg == 'charger_liste_ou_zip') { essaie_ajouter_liste_plugins($zip); } } } else { $extension = pathinfo($fichier, PATHINFO_EXTENSION); if (!$extension) $extension = pathinfo($zip, PATHINFO_EXTENSION); } # format de fichier inconnu if (!$extension) { spip_log("Extension inconnue pour le paquet $fichier venant de $zip"); include_spip('inc/headers'); redirige_url_ecrire('charger_plugin'); } # Si definie a '', le chargeur est interdit ; mais on n'aurait de toutes # facons jamais pu venir ici avec toutes les securisations faites :^) if (!_DIR_PLUGINS_AUTO) die('jamais'); # dispose-t-on du fichier ? $status = null; # forcer l'extension du fichier par securite $fichier = $tmp.basename($fichier,".$extension").".$extension"; if (!@file_exists($fichier)) { include_spip('inc/distant'); $contenu = recuperer_page($zip, $fichier, false,_COPIE_LOCALE_MAX_SIZE); if (!$contenu) { spip_log('charger_decompresser impossible de charger '.$zip); $status = -1; } } if ($status === null) { $status = chargeur_charger_zip( array( 'zip' => $zip, 'arg' => $arg, 'fichier' => $fichier, 'tmp' => $tmp, 'extract' => _request('extract') ) ); if (_request('extract')) { spip_unlink($fichier); } } // Vers quoi pointe le bouton "suite" $suite = ''; // le fichier .zip est la et bien forme if (is_array($status)) { // Reconnaitre un plugin par son fichier xml $get_infos = charger_fonction('get_infos','plugins'); $infos = $get_infos($status['tmpname'], true, ''); if ($infos) { $nom = $infos['nom']; $image = $infos['icon']; $description = $infos['description']; $type = 'plugin'; $dest = _DIR_PLUGINS_AUTO; } else { $type = 'lib'; $dest = _DIR_RACINE.'lib/'; } // Fixer son emplacement final $status['dirname'] = $dest . basename($status['tmpname']) . '/'; // repertoire parent accessible en ecriture ? if (!@is_dir($dest) OR !@is_writeable($dest)) { $retour = _T("erreur"); $texte = "<p>"._T('plugin_erreur_droit1',array('dest'=>$dest))."</p>" . "<p>"._T('plugin_erreur_droit2').aide('install0')."</p>"; } else // C'est un plugin ? if ($type == 'plugin') { $retour = typo($nom); // l'icone ne peut pas etre dans tmp/ (lecture http oblige) // on la copie donc dans local/chargeur/ if ($image) { $dir = sous_repertoire(_DIR_VAR,'chargeur'); @copy($status['tmpname'].'/'.$image, $image2 = $dir.basename($image)); $retour = "<img src='".$image2."' style='float:right;' />" . $retour; } else $retour = "<img src='".find_in_path('images/plugin-24.gif')."' style='float:right;' />" . $retour; if (_request('extract')) { $afficher = charger_fonction('afficher_plugin','plugins'); // pour plugin_propre $texte = plugin_propre($description) . '<p>'._T('plugin_zip_installe_finie',array('zip'=>$zip)).'</p>' . "<h2 style='text-align:center;'>"._T('plugin_zip_active')."</h2>"; } else { $texte = '<p>'._T('plugin_zip_telecharge',array('zip'=>$zip)).'</p>'; $texte .= liste_fichiers_pclzip($status); $texte .= "<h2 style='text-align:center;'>"._T('plugin_zip_installer')."</h2>"; $suite = 'plugins'; } } // C'est un paquet quelconque else { $retour = _T('plugin_charge_paquet',array('name' => basename($status['tmpname']))); if (_request('extract')) { $texte = '<p>'._T('plugin_zip_installe_rep_finie', array('zip'=>$zip, 'rep'=>$status['dirname'])).'</p>'; } else { $texte = "<p>"._T('plugin_zip_telecharge',array('zip'=>$zip))."</p>\n"; $texte .= liste_fichiers_pclzip($status); $suite = 'lib'; } } } // fichier absent else if ($status == -1) { $retour = _T('erreur'); $texte = _T('plugin_erreur_charger', array('zip'=>$zip)); } // fichier la mais pas bien dezippe else { $retour = _T('erreur'); $texte = _T('plugin_erreur_zip',array('status'=>$status)); } include_spip('inc/install'); // pour bouton_suivant() $texte = "<div style='text-align:$spip_lang_left;'>$texte</div>\n"; $redirect = rawurldecode(_request('redirect')); // par defaut on revient sur la page admin_plugin if($redirect == _DIR_RESTREINT OR $redirect == "./"){ $redirect_annul = generer_url_ecrire('admin_plugin'); $redirect_form = 'admin_plugin&voir=recents&'.$type.'='.preg_replace(',^[^/]+/|/$,', '', $status['dirname']); $redirect_action = ''; } else{ $redirect_annul = $redirect; $redirect_form = preg_replace(',^.*exec\=,', '', $redirect); if (!$suite) $texte .= form_hidden(parametre_url(generer_url_ecrire($redirect_form), $type,preg_replace(',^[^/]+/|/$,', '', $status['dirname']))); $redirect_action = $redirect_form; } echo minipres($retour." ", $suite ? redirige_action_post(_request('action'), $suite, $redirect_action, '', form_hidden('?url_zip_plugin='.urlencode($zip).'&extract=oui&fichier='.urlencode($fichier)) .$texte ."<a class='suivant' href='" .$redirect_annul ."'>"._T('bouton_annuler')."</a>" .bouton_suivant()) : generer_form_ecrire($redirect_form, $texte . bouton_suivant()) ); exit; // 0 = rien, pas charge // liste de fichiers = retour gagnant // < 0 = erreur pclzip // ----- Error codes // -1 : Unable to open file in binary write mode // -2 : Unable to open file in binary read mode // -3 : Invalid parameters // -4 : File does not exist // -5 : Filename is too long (max. 255) // -6 : Not a valid zip file // -7 : Invalid extracted file size // -8 : Unable to create directory // -9 : Invalid archive extension // -10 : Invalid archive format // -11 : Unable to delete file (unlink) // -12 : Unable to rename file (rename) // -13 : Invalid header checksum // -14 : Invalid archive size # redirige_par_entete($url_retour); }
function install_etape_sup2_dist() { $adresse_db = _request('adresse_db'); if (!$adresse_db AND defined('_INSTALL_HOST_DB')) $adresse_db =_INSTALL_HOST_DB; $login_db = _request('login_db'); if (!$login_db AND defined('_INSTALL_USER_DB')) $login_db = _INSTALL_USER_DB; $pass_db = _request('pass_db'); if (!$pass_db AND defined('_INSTALL_PASS_DB')) $pass_db = _INSTALL_PASS_DB; $server_db =_request('server_db'); if (!$server_db AND defined('_INSTALL_SERVER_DB')) $server_db = _INSTALL_SERVER_DB; // Ceci indique la base principale (passe en hidden) // pour qu'on la refuse comme choix de base secondaire a chaque tour. $sel_db =_request('sel_db'); if (!$sel_db AND defined('_INSTALL_NAME_DB')) $sel_db = _INSTALL_NAME_DB; // le choix $choix_db = _request('choix_db'); if (is_numeric($choix_db)) $choix_db = _request('table_new'); if (!$choix_db) $res = "<!-- il ne sait pas ce qu'il veut -->"; else { $res = install_bases_sup($adresse_db, $login_db, $pass_db, $server_db, $choix_db); if ($res[1]=='!') $res .= "<p class='resultat'><b>"._T('avis_operation_echec')."</b></p>"; else { $res = "<p class='resultat'><b>" . _T('install_base_ok', array('base' => $choix_db)) . "</b></p>" . $res; } } $res .= generer_form_ecrire('admin_declarer', (defined('_INSTALL_NAME_DB') ? '' : ("\n<input type='hidden' name='sel_db' value='" . $sel_db . "' />")) . predef_ou_cache($adresse_db,$login_db,$pass_db, $server_db) . bouton_suivant()); echo install_debut_html(_T('config_titre_base_sup')); echo $res; echo install_fin_html(); }