59708a43ead398fd58f0e1cfa1bc134327ee0165
[lhc/web/www.git] / www / ecrire / install / etape_ldap5.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) {
14 return;
15 }
16 include_spip('inc/headers');
17 include_spip('auth/ldap');
18
19 // http://code.spip.net/@install_etape_ldap5_dist
20 function install_etape_ldap5_dist() {
21 etape_ldap5_save();
22 etape_ldap5_suite();
23 }
24
25 function etape_ldap5_save() {
26 if (!@file_exists(_FILE_CONNECT_TMP)) {
27 redirige_url_ecrire('install');
28 }
29
30 ecrire_meta('ldap_statut_import', _request('statut_ldap'));
31
32 lire_fichier(_FILE_CONNECT_TMP, $conn);
33
34 if ($p = strpos($conn, "'');")) {
35 ecrire_fichier(
36 _FILE_CONNECT_TMP,
37 substr($conn, 0, $p + 1)
38 . _FILE_LDAP
39 . substr($conn, $p + 1)
40 );
41 }
42
43 $adresse_ldap = addcslashes(_request('adresse_ldap'), "'\\");
44 $login_ldap = addcslashes(_request('login_ldap'), "'\\");
45 $pass_ldap = addcslashes(_request('pass_ldap'), "'\\");
46 $port_ldap = addcslashes(_request('port_ldap'), "'\\");
47 $tls_ldap = addcslashes(_request('tls_ldap'), "'\\");
48 $protocole_ldap = addcslashes(_request('protocole_ldap'), "'\\");
49 $base_ldap = addcslashes(_request('base_ldap'), "'\\");
50 $base_ldap_text = addcslashes(_request('base_ldap_text'), "'\\");
51
52 $conn = "\$GLOBALS['ldap_base'] = '$base_ldap';\n"
53 . "\$GLOBALS['ldap_link'] = @ldap_connect('$adresse_ldap','$port_ldap');\n"
54 . "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'$protocole_ldap');\n"
55 . (($tls_ldap != 'oui') ? '' :
56 "@ldap_start_tls(\$GLOBALS['ldap_link']);\n")
57 . "@ldap_bind(\$GLOBALS['ldap_link'],'$login_ldap','$pass_ldap');\n";
58
59 $champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array();
60 $res = '';
61 foreach ($champs as $champ => $v) {
62 $nom = 'ldap_' . $champ;
63 $val = trim(_request($nom));
64 if (preg_match('/^\w*$/', $val)) {
65 if ($val) {
66 $val = _q($val);
67 }
68 } else {
69 $val = 'array(' . _q(preg_split('/\W+/', $val)) . ')';
70 };
71 if ($val) {
72 $res .= "'$champ' => " . $val . ',';
73 }
74 }
75 $conn .= "\$GLOBALS['ldap_champs'] = array($res);\n";
76
77 install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn);
78 }
79
80 function etape_ldap5_suite() {
81 echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
82
83 echo info_etape(
84 _T('info_ldap_ok'),
85 info_progression_etape(5, 'etape_ldap', 'install/'),
86 _T('info_terminer_installation')
87 );
88
89 echo generer_form_ecrire('install', (
90 "<input type='hidden' name='etape' value='3' />" .
91 "<input type='hidden' name='ldap_present' value='true' />"
92 . bouton_suivant()));
93
94 echo install_fin_html();
95 }