| Current Path : /home/etiennec/www/f1f54/ |
| Current File : /home/etiennec/www/f1f54/install.tar |
etape_.php 0000666 00000002647 15250307461 0006532 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
// http://doc.spip.org/@install_etape__dist
function install_etape__dist()
{
utiliser_langue_visiteur();
$menu_langues = menu_langues('var_lang_ecrire');
if (!$menu_langues) {
redirige_url_ecrire('install', "etape=chmod");
} else {
include_spip('inc/presentation'); // pour info_copyright
$res = "<div class='petit-centre'><img alt='SPIP' src='" . chemin_image('logo-spip2.gif') . "' />\n" .
"<p class='small'>" .info_copyright() ."</p></div>\n" .
"<p>" ._T('install_select_langue') ."</p>" .
"<div>" .$menu_langues ."</div>\n" .
generer_form_ecrire('install', "<input type='hidden' name='etape' value='chmod' />" . bouton_suivant());
echo minipres('AUTO', $res);
}
}
?>
etape_2.php 0000666 00000013327 15250307461 0006611 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('base/abstract_sql');
// http://doc.spip.org/@install_etape_2_dist
function install_etape_2_dist()
{
$adresse_db = defined('_INSTALL_HOST_DB')
? _INSTALL_HOST_DB
: _request('adresse_db');
$login_db = defined('_INSTALL_USER_DB')
? _INSTALL_USER_DB
: _request('login_db');
$pass_db = defined('_INSTALL_PASS_DB')
? _INSTALL_PASS_DB
: _request('pass_db');
$server_db = defined('_INSTALL_SERVER_DB')
? _INSTALL_SERVER_DB
: _request('server_db');
$name_db = defined('_INSTALL_NAME_DB')
? _INSTALL_NAME_DB
: '';
$chmod = _request('chmod');
$link = spip_connect_db($adresse_db, 0, $login_db, $pass_db, $name_db, $server_db);
$GLOBALS['connexions'][$server_db] = $link;
$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
= $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];
echo install_debut_html();
// prenons toutes les dispositions possibles pour que rien ne s'affiche !
/*
* /!\ sqlite3/PDO : erreur sur join(', ', $link)
* L'objet PDO ne peut pas etre transformee en chaine
* Un echo $link ne fonctionne pas non plus
* Il faut utiliser par exemple print_r($link)
*/
//echo "\n<!--\n", join(', ', $link), " $login_db ";
$db_connect = 0; // revoirfunction_exists($ferrno) ? $ferrno() : 0;
//echo join(', ', $GLOBALS['connexions'][$server_db]);
//echo "\n-->\n";
if (($db_connect=="0") && $link) {
echo "<div class='success'><b>"._T('info_connexion_ok')."</b></div>";
echo info_progression_etape(2,'etape_','install/');
echo info_etape(_T('menu_aide_installation_choix_base').aide ("install2", true));
spip_connect_db($adresse_db, 0, $login_db, $pass_db, '',$server_db);
echo "\n", '<!-- ', sql_version($server_db), ' -->' ;
list($checked, $res) = install_etape_2_bases($login_db, $server_db);
$hidden = (defined('_SPIP_CHMOD')
? ''
: ("\n<input type='hidden' name='chmod' value='".spip_htmlspecialchars($chmod)."' />"))
. predef_ou_cache($adresse_db,$login_db,$pass_db, $server_db);
echo install_etape_2_form($hidden, $checked, $res, 3);
} else {
echo info_progression_etape(1,'etape_','install/',true);
echo "<div class='error'>";
echo info_etape(_T('info_connexion_base'));
echo "<h3>" . _T('avis_connexion_echec_1') . "</h3>";
echo "<p>"._T('avis_connexion_echec_2')."</p>";
echo "<p style='font-size: small;'>",
_T('avis_connexion_echec_3'),
"</p></div>";
}
echo install_fin_html();
}
// Liste les bases accessibles,
// avec une heuristique pour preselectionner la plus probable
// http://doc.spip.org/@install_etape_2_bases
function install_etape_2_bases($login_db, $server_db)
{
$res = install_etape_liste_bases($server_db, $login_db);
if ($res) {
list($checked, $bases) = $res;
return array($checked,
"<label for='choix_db'><b>"
._T('texte_choix_base_2')
."</b><br />"
._T('texte_choix_base_3')
."</label>"
. "<ul>\n<li>"
. join("</li>\n<li>",$bases)
. "</li>\n</ul><p>"
. _T('info_ou')
. " "
);
}
$res = "<b>"._T('avis_lecture_noms_bases_1')."</b>
"._T('avis_lecture_noms_bases_2')."<p>";
if ($login_db) {
// Si un login comporte un point, le nom de la base est plus
// probablement le login sans le point -- testons pour savoir
$test_base = $login_db;
$ok = sql_selectdb($test_base, $server_db);
$test_base2 = str_replace('.', '_', $test_base);
if (sql_selectdb($test_base2, $server_db)) {
$test_base = $test_base2;
$ok = true;
}
if ($ok) {
$res .= _T('avis_lecture_noms_bases_3')
. "<ul>"
. "<li><input name=\"choix_db\" value=\"".$test_base."\" type='radio' id='stand' checked='checked' />"
. "<label for='stand'>".$test_base."</label></li>\n"
. "</ul>"
. "<p>"._T('info_ou')." ";
$checked = true;
}
}
return array($checked, $res);
}
// http://doc.spip.org/@install_etape_2_form
function install_etape_2_form($hidden, $checked, $res, $etape)
{
return generer_form_ecrire('install', (
"\n<input type='hidden' name='etape' value='$etape' />"
. $hidden
. (defined('_INSTALL_NAME_DB')
? '<h3>'._T('install_nom_base_hebergeur'). ' <tt>'._INSTALL_NAME_DB.'</tt>'.'</h3>'
: "\n<fieldset><legend>"._T('texte_choix_base_1')."</legend>\n"
. $res
. "\n<input name=\"choix_db\" value=\"new_spip\" type='radio' id='nou'"
. ($checked ? '' : " checked='checked'")
. " />\n<label for='nou'>"._T('info_creer_base')."</label></p>\n<p>"
. "\n<input type='text' name='table_new' class='text' value=\"spip\" size='20' /></p></fieldset>\n"
)
. ((defined('_INSTALL_TABLE_PREFIX')
OR $GLOBALS['table_prefix'] != 'spip')
? '<h3>'._T('install_table_prefix_hebergeur').' <tt>'.$GLOBALS['table_prefix'].'</tt>'.'</h3>'
: "<fieldset><legend>"._T('texte_choix_table_prefix')."</legend>\n"
. "<p><label for='table_prefix'>"._T('info_table_prefix')."</label></p><p>"
. "\n<input type='text' id='tprefix' name='tprefix' class='text' value='"
. 'spip' # valeur par defaut
. "' size='20' /></p></fieldset>"
)
. bouton_suivant()));
}
?>
etape_fin.php 0000666 00000004720 15250307461 0007221 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/headers');
include_spip('inc/acces');
// Mise en place des fichiers de configuration si ce n'est fait
// http://doc.spip.org/@install_etape_fin_dist
function install_etape_fin_dist()
{
ecrire_acces();
$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CHMOD_TMP);
if (file_exists(_FILE_CHMOD_TMP)) {
if (!@rename(_FILE_CHMOD_TMP, $f)) {
if (@copy(_FILE_CHMOD_TMP, $f))
spip_unlink(_FILE_CHMOD_TMP);
}
}
$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CONNECT_TMP);
if (file_exists(_FILE_CONNECT_TMP)) {
spip_log("renomme $f");
if (!@rename(_FILE_CONNECT_TMP, $f)) {
if (@copy(_FILE_CONNECT_TMP, $f))
@spip_unlink(_FILE_CONNECT_TMP);
}
}
// creer le repertoire cache, qui sert partout !
// deja fait en etape 4 en principe, on garde au cas ou
if(!@file_exists(_DIR_CACHE)) {
$rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE);
$rep = sous_repertoire(_DIR_TMP, $rep, true,true);
}
// Verifier la securite des htaccess
// Si elle ne fonctionne pas, prevenir
$msg = install_verifier_htaccess();
if ($msg) {
$cible = _T('public:accueil_site');
$cible = generer_form_ecrire('accueil', '','', $cible);
echo minipres('AUTO', $msg . $cible);
// ok, deboucher dans l'espace prive
} else redirige_url_ecrire('accueil');
}
function install_verifier_htaccess()
{
if (verifier_htaccess(_DIR_TMP, true)
AND verifier_htaccess(_DIR_CONNECT, true))
return '';
$titre = _T('htaccess_inoperant');
$averti = _T('htaccess_a_simuler',
array('htaccess' => '<tt>' . _ACCESS_FILE_NAME . '</tt>',
'constantes' => '<tt>_DIR_TMP & _DIR_CONNECT</tt>',
'document_root' => '<tt>' . $_SERVER['DOCUMENT_ROOT'] . '</tt>'));
return "<div class='error'><h3>$titre</h3><p>$averti</p></div>";
}
?>
etape_ldap1.php 0000666 00000005246 15250307461 0007452 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
// http://doc.spip.org/@install_etape_ldap1_dist
function install_etape_ldap1_dist()
{
$adresse_ldap = defined('_INSTALL_HOST_LDAP')
? _INSTALL_HOST_LDAP
: 'localhost';
$port_ldap = defined('_INSTALL_PORT_LDAP')
? _INSTALL_PORT_LDAP
: 389;
$tls_ldap = defined('_INSTALL_TLS_LDAP')
? _INSTALL_TLS_LDAP
: 'non';
$protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP')
? _INSTALL_PROTOCOLE_LDAP
: 3 ; // on essaie 2 en cas d'echec
$login_ldap = defined('_INSTALL_USER_LDAP')
? _INSTALL_USER_LDAP
: '';
$pass_ldap = defined('_INSTALL_PASS_LDAP')
? _INSTALL_PASS_LDAP
: '';
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_etape(_T('titre_connexion_ldap'),info_progression_etape(1,'etape_ldap','install/'), _T('entree_informations_connexion_ldap'));
echo generer_form_ecrire('install', (
"\n<input type='hidden' name='etape' value='ldap2' />"
. fieldset(_T('entree_adresse_annuaire'),
array(
'adresse_ldap' => array(
'label' => _T('texte_adresse_annuaire_1'),
'valeur' => $adresse_ldap
),
'port_ldap' => array(
'label' => _T('entree_port_annuaire').'<br />'._T('texte_port_annuaire'),
'valeur' => $port_ldap
),
'tls_ldap' => array(
'label' => '<b>'._T('tls_ldap').'</b>',
'valeur' => $tls_ldap,
'alternatives' => array(
'non' => _T('item_non'),
'oui' => _T('item_oui')
)
),
'protocole_ldap' => array(
'label' => _T('protocole_ldap'),
'valeur' => $protocole_ldap,
'alternatives' => array(
'3' => '3',
'2' => '2'
)
)
)
)
. "\n<p>"._T('texte_acces_ldap_anonyme_1').'</p>'
. fieldset(_T('connexion_ldap'),
array(
'login_ldap' => array(
'label' => _T('texte_login_ldap_1'),
'valeur' => $login_ldap
),
'pass_ldap' => array(
'label' => _T('entree_passe_ldap'),
'valeur' => $pass_ldap
)
)
)
. bouton_suivant()));
echo install_fin_html();
}
?>
etape_4.php 0000666 00000004150 15250307461 0006605 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/headers');
// http://doc.spip.org/@install_etape_4_dist
function install_etape_4_dist()
{
// creer le repertoire cache, qui sert partout !
if(!@file_exists(_DIR_CACHE)) {
$rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE);
$rep = sous_repertoire(_DIR_TMP, $rep, true,true);
}
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_progression_etape(4,'etape_','install/');
echo "<div class='success'><b>"
. _T('info_derniere_etape')
. "</b><p>"
. _T('info_utilisation_spip')
. "</p></div>";
echo "<p>"
._T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>".joli_repertoire(_DIR_PLUGINS_DIST)."</tt>"))
."</p>";
// installer les extensions
include_spip('inc/plugin');
$afficher = charger_fonction("afficher_liste",'plugins');
echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST),array(), array(), _DIR_PLUGINS_DIST,'afficher_nom_plugin');
plugin_installes_meta();
// mettre a jour si necessaire l'adresse du site
// securite si on arrive plus a se loger
include_spip('inc/config');
appliquer_adresse_site('');
// aller a la derniere etape qui clos l'install et redirige
$suite = "\n<input type='hidden' name='etape' value='fin' />"
. bouton_suivant(_T('login_espace_prive'));
echo generer_form_ecrire('install', $suite); echo install_fin_html();
}
?>
etape_3.php 0000666 00000025217 15250307461 0006613 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/headers');
include_spip('base/abstract_sql');
// http://doc.spip.org/@install_bases
function install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db){
global $spip_version_base;
// Prefix des tables :
// contrairement a ce qui est dit dans le message (trop strict mais c'est
// pour notre bien), on va tolerer les chiffres en plus des minuscules
// S'il n'est pas defini par mes_options/inc/mutualiser, on va le creer
// a partir de ce qui est envoye a l'installation
if (!defined('_INSTALL_TABLE_PREFIX')) {
$table_prefix = ($GLOBALS['table_prefix'] != 'spip')
? $GLOBALS['table_prefix']
: trim(preg_replace(',[^a-z0-9],','',strtolower(_request('tprefix'))));
// S'il est vide on remet spip
if (!$table_prefix)
$table_prefix = 'spip';
} else {
$table_prefix = _INSTALL_TABLE_PREFIX;
}
$GLOBALS['connexions'][$server_db]
= spip_connect_db($adresse_db, 0, $login_db, $pass_db, '', $server_db);
$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
= $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];
$fquery = sql_serveur('query', $server_db);
if ($choix_db == "new_spip") {
$re = ',^[a-z_][a-z_0-9-]*$,i';
if (preg_match($re, $sel_db))
sql_create_base($sel_db, $server_db);
else {
$re = "Le nom de la base doit correspondre a $re";
spip_log($re);
return "<p>"._T("avis_connexion_erreur_nom_base")."</p><!--\n$re\n-->";
}
}
// on rejoue la connexion apres avoir teste si il faut lui indiquer
// un sql_mode
install_mode_appel($server_db, false);
$GLOBALS['connexions'][$server_db]
= spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);
$GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
= $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];
// Completer le tableau decrivant la connexion
$GLOBALS['connexions'][$server_db]['prefixe'] = $table_prefix;
$GLOBALS['connexions'][$server_db]['db'] = $sel_db;
$old = sql_showbase($table_prefix . "_meta", $server_db);
if ($old) $old = sql_fetch($old, $server_db);
if (!$old) {
// Si possible, demander au serveur d'envoyer les textes
// dans le codage std de SPIP,
$charset = sql_get_charset(_DEFAULT_CHARSET, $server_db);
if ($charset) {
sql_set_charset($charset['charset'], $server_db);
$GLOBALS['meta']['charset_sql_base'] =
$charset['charset'];
$GLOBALS['meta']['charset_collation_sql_base'] =
$charset['collation'];
$GLOBALS['meta']['charset_sql_connexion'] =
$charset['charset'];
$charsetbase = $charset['charset'];
} else {
spip_log(_DEFAULT_CHARSET . " inconnu du serveur SQL");
$charsetbase = 'standard';
}
spip_log("Creation des tables. Codage $charsetbase");
creer_base($server_db); // AT LAST
// memoriser avec quel charset on l'a creee
if ($charset) {
$t = array('nom' => 'charset_sql_base',
'valeur' => $charset['charset'],
'impt' => 'non');
@sql_insertq('spip_meta', $t, '', $server_db);
$t['nom'] = 'charset_collation_sql_base';
$t['valeur'] = $charset['collation'];
@sql_insertq('spip_meta', $t, '', $server_db);
$t['nom'] = 'charset_sql_connexion';
$t['valeur'] = $charset['charset'];
@sql_insertq('spip_meta', $t, '', $server_db);
}
$t = array('nom' => 'version_installee',
'valeur' => $spip_version_base,
'impt' => 'non');
@sql_insertq('spip_meta', $t, '', $server_db);
$t['nom'] = 'nouvelle_install';
$t['valeur'] = 1;
@sql_insertq('spip_meta', $t, '', $server_db);
// positionner la langue par defaut du site si un cookie de lang a ete mis
if (isset($_COOKIE['spip_lang_ecrire'])){
@sql_insertq('spip_meta', array('nom'=>'langue_site','valeur'=>$_COOKIE['spip_lang_ecrire']), '', $server_db);
}
} else {
// pour recreer les tables disparues au besoin
spip_log("Table des Meta deja la. Verification des autres.");
creer_base($server_db);
$fupdateq = sql_serveur('updateq', $server_db);
$r = $fquery("SELECT valeur FROM spip_meta WHERE nom='version_installee'", $server_db);
if ($r) $r = sql_fetch($r, $server_db);
$version_installee = !$r ? 0 : (double) $r['valeur'];
if (!$version_installee OR ($spip_version_base < $version_installee)) {
$fupdateq('spip_meta', array('valeur'=>$spip_version_base, 'impt'=>'non'), "nom='version_installee'",'', $server_db);
spip_log("nouvelle version installee: $spip_version_base");
}
// eliminer la derniere operation d'admin mal terminee
// notamment la mise a jour
@$fquery("DELETE FROM spip_meta WHERE nom='import_all' OR nom='admin'", $server_db);
}
$ligne_rappel = install_mode_appel($server_db);
$result_ok = @$fquery("SELECT COUNT(*) FROM spip_meta", $server_db);
if (!$result_ok) return "<!--\nvielle = $old rappel= $ligne_rappel\n-->";
if ($chmod_db) {
install_fichier_connexion(_FILE_CHMOD_TMP, "if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod_db).");\n");
}
if (preg_match(',(.*):(.*),', $adresse_db, $r))
list(,$adresse_db, $port) = $r;
else $port = '';
// si ce fichier existe a cette etape c'est qu'il provient
// d'une installation qui ne l'a pas cree correctement.
// Le supprimer pour que _FILE_CONNECT_TMP prime.
if (_FILE_CONNECT AND file_exists(_FILE_CONNECT))
spip_unlink(_FILE_CONNECT);
install_fichier_connexion(_FILE_CONNECT_TMP,
$ligne_rappel
. install_connexion($adresse_db,
$port,
$login_db,
$pass_db,
$sel_db,
$server_db,
$table_prefix));
return '';
}
// http://doc.spip.org/@install_propose_ldap
function install_propose_ldap()
{
return generer_form_ecrire('install', (
fieldset(_T('info_authentification_externe'),
array(
'etape' => array(
'label' => _T('texte_annuaire_ldap_1'),
'valeur' => 'ldap1',
'hidden' => true
)),
bouton_suivant(_T('bouton_acces_ldap'))
)));
}
// http://doc.spip.org/@install_premier_auteur
function install_premier_auteur($email, $login, $nom, $pass, $hidden, $auteur_obligatoire)
{
return info_progression_etape(3,'etape_','install/') .
info_etape(_T('info_informations_personnelles'),
"<b>"._T('texte_informations_personnelles_1')."</b>" .
aide ("install5", true) .
"<p>" .
($auteur_obligatoire?
''
:
_T('texte_informations_personnelles_2') . " " . _T('info_laisser_champs_vides')
))
. generer_form_ecrire('install', (
"\n<input type='hidden' name='etape' value='3b' />"
. $hidden
. fieldset(_T('info_identification_publique'),
array(
'nom' => array(
'label' => "<b>"._T('entree_signature')."</b><br />\n"._T('entree_nom_pseudo_1')."\n",
'valeur' => $nom,
'required' => $auteur_obligatoire,
),
'email' => array(
'label' => "<b>"._T('entree_adresse_email')."</b>\n",
'valeur' => $email,
)
)
)
. fieldset(_T('entree_identifiants_connexion'),
array(
'login' => array(
'label' => "<b>"._T('entree_login')."</b><br />\n"._T('info_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT))."\n",
'valeur' => $login,
'required' => $auteur_obligatoire,
),
'pass' => array(
'label' => "<b>"._T('entree_mot_passe')."</b><br />\n"._T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI))."\n",
'valeur' => $pass,
'required' => $auteur_obligatoire,
),
'pass_verif' => array(
'label' => "<b>"._T('info_confirmer_passe')."</b><br />\n",
'valeur' => $pass,
'required' => $auteur_obligatoire,
)
)
)
. bouton_suivant()));
}
// http://doc.spip.org/@install_etape_3_dist
function install_etape_3_dist()
{
$ldap_present = _request('ldap_present');
if (!$ldap_present) {
$adresse_db = defined('_INSTALL_HOST_DB')
? _INSTALL_HOST_DB
: _request('adresse_db');
$login_db = defined('_INSTALL_USER_DB')
? _INSTALL_USER_DB
: _request('login_db');
$pass_db = defined('_INSTALL_PASS_DB')
? _INSTALL_PASS_DB
: _request('pass_db');
$server_db = defined('_INSTALL_SERVER_DB')
? _INSTALL_SERVER_DB
: _request('server_db');
$chmod_db = defined('_SPIP_CHMOD')
? _SPIP_CHMOD
: _request('chmod');
$choix_db = defined('_INSTALL_NAME_DB')
? _INSTALL_NAME_DB
: _request('choix_db');
$sel_db = ($choix_db == "new_spip")
? _request('table_new') : $choix_db;
$res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db);
if ($res) {
$res = info_progression_etape(2,'etape_','install/', true)
. "<div class='error'><h3>"._T('avis_operation_echec')."</h3>"
. $res
. "<p>"._T('texte_operation_echec')."</p>"
. "</div>";
}
} else {
$res = '';
list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) = analyse_fichier_connection(_FILE_CONNECT_TMP);
$GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);
}
if (!$res) {
if (file_exists(_FILE_CONNECT_TMP))
include(_FILE_CONNECT_TMP);
else
redirige_url_ecrire('install');
if (file_exists(_FILE_CHMOD_TMP))
include(_FILE_CHMOD_TMP);
else
redirige_url_ecrire('install');
$hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db)
. (defined('_INSTALL_NAME_DB') ? ''
: "\n<input type='hidden' name='sel_db' value='$sel_db' />");
$auteur_obligatoire = ($ldap_present?0:!sql_countsel('spip_auteurs','','','',$server_db));
$res = "<div class='success'><b>"
. _T('info_base_installee')
. "</b></div>"
. install_premier_auteur(_request('email'),
_request('login'),
_request('nom'),
_request('pass'),
$hidden, $auteur_obligatoire)
. (($ldap_present OR !function_exists('ldap_connect'))
? '' : install_propose_ldap());
}
echo install_debut_html();
echo $res;
echo install_fin_html();
}
?>
index.php 0000666 00000000002 15250307461 0006363 0 ustar 00 X
etape_ldap5.php 0000666 00000006121 15250307461 0007447 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/headers');
include_spip('auth/ldap');
// http://doc.spip.org/@install_etape_ldap5_dist
function install_etape_ldap5_dist()
{
etape_ldap5_save();
etape_ldap5_suite();
}
function etape_ldap5_save()
{
if (!@file_exists(_FILE_CONNECT_TMP))
redirige_url_ecrire('install');
ecrire_meta('ldap_statut_import', _request('statut_ldap'));
lire_fichier(_FILE_CONNECT_TMP, $conn);
if ($p = strpos($conn, "'');")) {
ecrire_fichier(_FILE_CONNECT_TMP,
substr($conn, 0, $p+1)
. _FILE_LDAP
. substr($conn, $p+1));
}
$adresse_ldap = addcslashes(_request('adresse_ldap'),"'\\");
$login_ldap = addcslashes(_request('login_ldap'),"'\\");
$pass_ldap = addcslashes(_request('pass_ldap'),"'\\");
$port_ldap = addcslashes(_request('port_ldap'),"'\\");
$tls_ldap = addcslashes(_request('tls_ldap'),"'\\");
$protocole_ldap = addcslashes(_request('protocole_ldap'),"'\\");
$base_ldap = addcslashes(_request('base_ldap'),"'\\");
$base_ldap_text = addcslashes(_request('base_ldap_text'),"'\\");
$conn = "\$GLOBALS['ldap_base'] = '$base_ldap';\n"
. "\$GLOBALS['ldap_link'] = @ldap_connect('$adresse_ldap','$port_ldap');\n"
. "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'$protocole_ldap');\n"
. (($tls_ldap != 'oui') ? '' :
"@ldap_start_tls(\$GLOBALS['ldap_link']);\n")
. "@ldap_bind(\$GLOBALS['ldap_link'],'$login_ldap','$pass_ldap');\n";
$champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array();
$res = '';
foreach ($champs as $champ => $v ) {
$nom = 'ldap_' . $champ;
$val = trim(_request($nom));
if (preg_match('/^\w*$/', $val)) {
if ($val) $val = _q($val);
} else $val = "array(" . _q(preg_split('/\W+/', $val)) . ')';;
if ($val) $res .= "'$champ' => " . $val . ",";
}
$conn .= "\$GLOBALS['ldap_champs'] = array($res);\n";
install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn);
}
function etape_ldap5_suite()
{
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_etape(_T('info_ldap_ok'), info_progression_etape(5,'etape_ldap','install/'), _T('info_terminer_installation'));
echo generer_form_ecrire('install', (
"<input type='hidden' name='etape' value='3' />" .
"<input type='hidden' name='ldap_present' value='true' />"
. bouton_suivant()));
echo install_fin_html();
}
?>
etape_ldap2.php 0000666 00000006047 15250307461 0007453 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
// http://doc.spip.org/@install_etape_ldap2_dist
function install_etape_ldap2_dist()
{
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
$adresse_ldap = _request('adresse_ldap');
$port_ldap = _request('port_ldap');
$tls_ldap = _request('tls_ldap');
$protocole_ldap = _request('protocole_ldap');
$login_ldap = _request('login_ldap');
$pass_ldap = _request('pass_ldap');
$port_ldap = intval($port_ldap);
$tls = false;
if ($tls_ldap == 'oui') {
if ($port_ldap==636) {
$adresse_ldap = "ldaps://$adresse_ldap";
} else $tls = true;
}
$ldap_link = ldap_connect($adresse_ldap, $port_ldap);
$erreur = "ldap_connect($adresse_ldap, $port_ldap)";
if ($ldap_link) {
if ( !ldap_set_option($ldap_link, LDAP_OPT_PROTOCOL_VERSION, $protocole_ldap) ) {
$protocole_ldap = 2 ;
ldap_set_option($ldap_link, LDAP_OPT_PROTOCOL_VERSION, $protocole_ldap);
}
if ($tls === true) {
if (!ldap_start_tls($ldap_link)) {
$erreur = "ldap_start_tls($ldap_link) $adresse_ldap, $port_ldap";
$ldap_link = false;
}
}
if ($ldap_link) {
$ldap_link = ldap_bind($ldap_link, $login_ldap, $pass_ldap);
$erreur = "ldap_bind('$ldap_link', '$login_ldap', '$pass_ldap'): $adresse_ldap, $port_ldap";
}
}
if ($ldap_link) {
echo info_etape(_T('titre_connexion_ldap'),info_progression_etape(2,'etape_ldap','install/')), _T('info_connexion_ldap_ok');
echo generer_form_ecrire('install', (
"\n<input type='hidden' name='etape' value='ldap3' />"
. "\n<input type='hidden' name='adresse_ldap' value=\"$adresse_ldap\" />"
. "\n<input type='hidden' name='port_ldap' value=\"$port_ldap\" />"
. "\n<input type='hidden' name='login_ldap' value=\"$login_ldap\" />"
. "\n<input type='hidden' name='pass_ldap' value=\"$pass_ldap\" />"
. "\n<input type='hidden' name='protocole_ldap' value=\"$protocole_ldap\" />"
. "\n<input type='hidden' name='tls_ldap' value=\"$tls_ldap\" />"
. bouton_suivant()));
}
else {
echo info_etape(_T('titre_connexion_ldap')), info_progression_etape(1,'etape_ldap','install/', true),
"<div class='error'><p>"._T('avis_connexion_ldap_echec_1')."</p>",
"<p>"._T('avis_connexion_ldap_echec_2').
"<br />\n"._T('avis_connexion_ldap_echec_3') .
'<br /><br />'. $erreur. '<b> ?</b></p></div>'
;
}
echo install_fin_html();
}
?>
etape_1.php 0000666 00000004300 15250307461 0006577 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
// http://doc.spip.org/@install_etape_1_dist
function install_etape_1_dist()
{
echo install_debut_html();
// stopper en cas de grosse incompatibilite de l'hebergement
tester_compatibilite_hebergement();
// Recuperer les anciennes donnees pour plus de facilite (si presentes)
$s = !@is_readable(_FILE_CONNECT_TMP) ? ''
: analyse_fichier_connection(_FILE_CONNECT_TMP);
list($adresse_db, $login_db) = $s ? $s : login_hebergeur();
$chmod = (isset($_GET['chmod']) AND preg_match(',^[0-9]+$,', $_GET['chmod']))? sprintf('%04o', $_GET['chmod']):'0777';
if(@is_readable(_FILE_CHMOD_TMP)){
$s = @join('', @file(_FILE_CHMOD_TMP));
if(preg_match("#define\('_SPIP_CHMOD', (.*)\)#", $s, $regs)) {
$chmod = $regs[1];
}
}
$db = array($adresse_db, _T('entree_base_donnee_2'));
$login = array($login_db, _T('entree_login_connexion_2'));
$pass = array($pass_db, _T('entree_mot_passe_2'));
$predef = array(defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB:'',
defined('_INSTALL_HOST_DB'),
defined('_INSTALL_USER_DB'),
defined('_INSTALL_PASS_DB'));
echo info_progression_etape(1,'etape_','install/');
// ces deux chaines de langues doivent etre reecrites
# echo info_etape(_T('info_connexion_mysql'), _T('texte_connexion_mysql').aide ("install1", true));
echo info_etape(_T('info_connexion_base_donnee'));
echo install_connexion_form($db, $login, $pass, $predef, "\n<input type='hidden' name='chmod' value='$chmod' />", 2);
echo install_fin_html();
}
?>
etape_ldap3.php 0000666 00000005655 15250307461 0007460 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
// http://doc.spip.org/@install_etape_ldap3_dist
function install_etape_ldap3_dist()
{
$adresse_ldap = _request('adresse_ldap');
$login_ldap = _request('login_ldap');
$pass_ldap = _request('pass_ldap');
$port_ldap = _request('port_ldap');
$base_ldap_text = defined('_INSTALL_BASE_LDAP')
? _INSTALL_BASE_LDAP
: "ou=users, dc=mon-domaine, dc=com";
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_etape(_T('info_chemin_acces_1'),info_progression_etape(3,'etape_ldap','install/')),_T('info_chemin_acces_2');
$ldap_link = @ldap_connect("$adresse_ldap", "$port_ldap");
if ($ldap_link) {
@ldap_bind($ldap_link, "$login_ldap", "$pass_ldap");
$result = @ldap_read($ldap_link, "", "objectclass=*", array("namingContexts"));
$info = @ldap_get_entries($ldap_link, $result);
@ldap_close($ldap_link);
}
$checked = false;
$res = '';
if (is_array($info) AND $info["count"] > 0) {
$res .= "<p>"._T('info_selection_chemin_acces')."</p>";
$res .= "<ul>";
$n = 0;
for ($i = 0; $i < $info["count"]; $i++) {
$names = $info[$i]["namingcontexts"];
if (is_array($names)) {
for ($j = 0; $j < $names["count"]; $j++) {
$n++;
$res .= "<li><input name=\"base_ldap\" value=\"".spip_htmlspecialchars($names[$j])."\" type='radio' id='tab$n'";
if (!$checked) {
$res .= " checked=\"checked\"";
$checked = true;
}
$res .= " />";
$res .= "<label for='tab$n'>".spip_htmlspecialchars($names[$j])."</label></li>\n";
}
}
}
$res .= "</ul>";
$res .= _T('info_ou')." ";
}
$res .= "<br />\n<input name=\"base_ldap\" value=\"\" type='radio' id='manuel'";
if (!$checked) {
$res .= " checked=\"checked\"";
$checked = true;
}
$res .= " />"
. "\n<label for='manuel'>"._T('entree_chemin_acces')."</label> "
. "\n<fieldset>"
. "<input type='text' name='base_ldap_text' class='text' value=\"$base_ldap_text\" size='40' />"
. "\n</fieldset>"
. "\n<input type='hidden' name='etape' value='ldap4' />"
. install_propager(array('adresse_ldap','port_ldap','login_ldap','pass_ldap','protocole_ldap','tls_ldap'))
. bouton_suivant();
echo generer_form_ecrire('install', $res);
echo install_fin_html();
}
?>
etape_ldap4.php 0000666 00000007351 15250307461 0007454 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('auth/ldap');
// http://doc.spip.org/@install_etape_ldap4_dist
function install_etape_ldap4_dist()
{
$adresse_ldap = _request('adresse_ldap');
$login_ldap = _request('login_ldap');
$pass_ldap = _request('pass_ldap');
$port_ldap = _request('port_ldap');
$base_ldap = _request('base_ldap');
$base_ldap_text = _request('base_ldap_text');
if (!$base_ldap) $base_ldap = $base_ldap_text;
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
$ldap_link = ldap_connect($adresse_ldap, $port_ldap);
@ldap_bind($ldap_link, $login_ldap, $pass_ldap);
// Essayer de verifier le chemin fourni
$r = @ldap_compare($ldap_link, $base_ldap, "objectClass", "");
$fail = (ldap_errno($ldap_link) == 32);
if ($fail) {
echo info_etape(_T('info_chemin_acces_annuaire')),
info_progression_etape(3,'etape_ldap','install/', true),
"<div class='error'><p><b>"._T('avis_operation_echec')."</b></p><p>"._T('avis_chemin_invalide_1'),
" (<tt>".spip_htmlspecialchars($base_ldap)."</tt>) "._T('avis_chemin_invalide_2')."</p></div>";
}
else {
info_etape(_T('info_reglage_ldap'));
echo info_progression_etape(4,'etape_ldap','install/');
$statuts = liste_statuts_ldap();
$statut_ldap = defined('_INSTALL_STATUT_LDAP')
? _INSTALL_STATUT_LDAP
: $GLOBALS['liste_des_statuts']['info_redacteurs'];
$res = install_propager(array('adresse_ldap','port_ldap','login_ldap','pass_ldap','protocole_ldap','tls_ldap'))
. "<input type='hidden' name='etape' value='ldap5' />"
. "<input type='hidden' name='base_ldap' value='" . spip_htmlentities($base_ldap) . "' />"
. fieldset(_T('info_statut_utilisateurs_1'),
array(
'statut_ldap' => array(
'label' => _T('info_statut_utilisateurs_2').'<br />',
'valeur' => $statut_ldap,
'alternatives' => $statuts
)
)
)
. install_ldap_correspondances()
. bouton_suivant();
echo generer_form_ecrire('install', $res);
}
echo install_fin_html();
}
// http://doc.spip.org/@liste_statuts_ldap
function liste_statuts_ldap() {
$recom = array("info_administrateurs" => ("<b>" ._T('info_administrateur_1')."</b> "._T('info_administrateur_2')."<br />"),
"info_redacteurs" => ("<b>"._T('info_redacteur_1')."</b> "._T('info_redacteur_2')."<br />"),
"info_visiteurs" => ("<b>"._T('info_visiteur_1')."</b> "._T('info_visiteur_2')."<br />"));
$res = array();
foreach($GLOBALS['liste_des_statuts'] as $k => $v) {
if (isset($recom[$k])) $res[$v] = $recom[$k];
}
return $res;
}
function install_ldap_correspondances()
{
$champs = array();
foreach (is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array() as $champ => $v ) {
$nom = 'ldap_' . $champ;
$val = is_array($v) ? join(',', $v) : strval($v);
$champs[$nom]= array(
'label' => _T('ldap_correspondance', array('champ' => "<tt>$champ</tt>")).'<br />',
'valeur' => $val
);
}
return !$champs ? '' : fieldset(_T('ldap_correspondance_1'), $champs, '', _T('ldap_correspondance_2') . '<br /><br />');
}
?>
etape_3b.php 0000666 00000011272 15250307461 0006751 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/headers');
function install_etape_3b_dist()
{
$login = _request('login');
$email = _request('email');
$nom = _request('nom');
$pass = _request('pass');
$pass_verif = _request('pass_verif');
$server_db = defined('_INSTALL_SERVER_DB') ?
_INSTALL_SERVER_DB
: _request('server_db');
if (!defined('_PASS_LONGUEUR_MINI')) define('_PASS_LONGUEUR_MINI', 6);
if (!defined('_LOGIN_TROP_COURT')) define('_LOGIN_TROP_COURT', 4);
if($login) {
$echec = ($pass!=$pass_verif) ?
_T('info_passes_identiques')
: ((strlen($pass)<_PASS_LONGUEUR_MINI) ?
_T('info_passe_trop_court_car_pluriel', array('nb'=>_PASS_LONGUEUR_MINI))
: ((strlen($login)<_LOGIN_TROP_COURT) ?
_T('info_login_trop_court')
: ''));
include_spip('inc/filtres');
if (!$echec AND $email AND !email_valide($email))
$echec = _T('form_email_non_valide');
if ($echec) {
echo minipres(
'AUTO',
info_progression_etape(3,'etape_','install/', true).
"<div class='error'><h3>$echec</h3>\n".
"<p>"._T('avis_connexion_echec_2')."</p>".
"</div>"
);
exit;
}
}
if (@file_exists(_FILE_CHMOD_TMP))
include(_FILE_CHMOD_TMP);
else
redirige_url_ecrire('install');
if (!@file_exists(_FILE_CONNECT_TMP))
redirige_url_ecrire('install');
# maintenant on connait le vrai charset du site s'il est deja configure
# sinon par defaut lire_meta reglera _DEFAULT_CHARSET
# (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
lire_metas();
if ($login) {
include_spip('inc/charsets');
$nom = (importer_charset($nom, _DEFAULT_CHARSET));
$login = (importer_charset($login, _DEFAULT_CHARSET));
$email = (importer_charset($email, _DEFAULT_CHARSET));
# pour le passwd, bizarrement il faut le convertir comme s'il avait
# ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
$pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
include_spip('auth/sha256.inc');
include_spip('inc/acces');
$htpass = generer_htpass($pass);
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$shapass = _nano_sha256($alea_actuel.$pass);
// prelablement, creer le champ webmestre si il n'existe pas (install neuve
// sur une vieille base
$t = sql_showtable("spip_auteurs", true);
if (!isset($t['field']['webmestre']))
@sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL");
$id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login=" . sql_quote($login));
if ($id_auteur !== NULL) {
sql_updateq('spip_auteurs', array("nom"=> $nom, 'email'=> $email, 'login'=>$login, 'pass'=>$shapass, 'alea_actuel'=>$alea_actuel, 'alea_futur'=> $alea_futur, 'htpass'=>$htpass, 'statut'=>'0minirezo'), "id_auteur=$id_auteur");
}
else {
$id_auteur = sql_insertq('spip_auteurs', array(
'nom' => $nom,
'email' => $email,
'login' => $login,
'pass' => $shapass,
'htpass' => $htpass,
'alea_actuel' => $alea_actuel,
'alea_futur' => $alea_futur,
'statut' =>'0minirezo'));
}
// le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
@sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur=$id_auteur");
// inserer email comme email webmaster principal
// (sauf s'il est vide: cas de la re-installation)
if ($email)
ecrire_meta('email_webmaster', $email);
// Connecter directement celui qui vient de (re)donner son login
// mais sans cookie d'admin ni connexion longue
include_spip('inc/auth');
if (!$auteur = auth_identifier_login($login, $pass)
OR !auth_loger($auteur, true))
spip_log("login automatique impossible $auth_spip $session" . count($row));
}
// installer les metas
$config = charger_fonction('config', 'inc');
$config();
// activer les plugins
// leur installation ne peut pas se faire sur le meme hit, il faudra donc
// poursuivre au hit suivant
include_spip('inc/plugin');
actualise_plugins_actifs();
include_spip('inc/distant');
redirige_par_entete(parametre_url(self(),'etape','4','&'));
}
?>
etape_chmod.php 0000666 00000010205 15250307461 0007532 0 ustar 00 <?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (defined('_TEST_DIRS')) return;
define('_TEST_DIRS', "1");
include_spip('inc/minipres');
utiliser_langue_visiteur();
//
// Tente d'ecrire
//
// http://doc.spip.org/@test_ecrire
function test_ecrire($my_dir) {
static $chmod = 0;
$ok = false;
$script = @file_exists('spip_loader.php') ? 'spip_loader.php' : $_SERVER['PHP_SELF'];
$self = basename($script);
$uid = @fileowner('.');
$uid2 = @fileowner($self);
$gid = @filegroup('.');
$gid2 = @filegroup($self);
$perms = @fileperms($self);
// Comparer l'appartenance d'un fichier cree par PHP
// avec celle du script et du repertoire courant
if(!$chmod) {
@rmdir('test');
spip_unlink('test'); // effacer au cas ou
@touch('test');
if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid)
$chmod = 0700;
else if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid)
$chmod = 0770;
else
$chmod = 0777;
// Appliquer de plus les droits d'acces du script
if ($perms > 0) {
$perms = ($perms & 0777) | (($perms & 0444) >> 2);
$chmod |= $perms;
}
spip_unlink('test');
}
// Verifier que les valeurs sont correctes
$f = @fopen($my_dir.'test.php', 'w');
if ($f) {
@fputs($f, '<'.'?php $ok = true; ?'.'>');
@fclose($f);
@chmod($my_dir.'test.php', $chmod);
include($my_dir.'test.php');
}
spip_unlink($my_dir.'test.php');
return $ok?$chmod:false;
}
//
// tester les droits en ecriture sur les repertoires
// rajouter celui passe dans l'url ou celui du source (a l'installation)
//
// http://doc.spip.org/@install_etape_chmod_dist
function install_etape_chmod_dist()
{
global $test_dirs;
$test_dir = _request('test_dir');
$chmod = 0;
if ($test_dir) {
if (substr($test_dir,-1)!=='/') $test_dir .= '/';
if (!in_array($test_dir, $test_dirs)) $test_dirs[] = _DIR_RACINE . $test_dir;
} else {
if (!_FILE_CONNECT) {
$test_dirs[] = _DIR_CONNECT;
$test_dirs[] = _DIR_CHMOD;
}
}
$bad_dirs = array();
$absent_dirs = array();;
while (list(, $my_dir) = each($test_dirs)) {
$test = test_ecrire($my_dir);
if (!$test) {
$m = preg_replace(',^' . _DIR_RACINE . ',', '',$my_dir);
if (@file_exists($my_dir)) {
$bad_dirs["<li>".$m."</li>"] = 1;
} else
$absent_dirs["<li>".$m."</li>"] = 1;
} else $chmod = max($chmod, $test);
}
if ($bad_dirs OR $absent_dirs) {
if (!_FILE_CONNECT) {
$titre = _T('dirs_preliminaire');
$continuer = ' '._T('dirs_commencer') . '.';
} else
$titre = _T('dirs_probleme_droits');
$res = "<div align='right'>". menu_langues('var_lang_ecrire')."</div>\n";
if ($bad_dirs) {
$res .=
_T('dirs_repertoires_suivants',
array('bad_dirs' => join("\n", array_keys($bad_dirs)))) .
"<b>". _T('login_recharger')."</b>.";
}
if ($absent_dirs) {
$res .=
_T('dirs_repertoires_absents',
array('bad_dirs' => join("\n", array_keys($absent_dirs)))) .
"<b>". _T('login_recharger')."</b>.";
}
$res = "<p>" . $continuer . $res . aide ("install0", true) . "</p>";
$t = _T('login_recharger');
$t = (!$test_dir ? "" :
"<input type='hidden' name='test_dir' value='$test_dir' />")
. "<input type='hidden' name='etape' value='chmod' />"
. "<div style='text-align: right'><input type='submit' value='$t' /></div>";
echo minipres($titre, $res . generer_form_ecrire('install', $t));
} else {
$deja = (_FILE_CONNECT AND analyse_fichier_connection(_FILE_CONNECT));
if (!$deja)
redirige_url_ecrire("install", "etape=1&chmod=".$chmod);
else redirige_url_ecrire();
}
}
?>