Subversion Repositories ALCASAR

Rev

Rev 2714 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2714 Rev 2718
Line 1... Line 1...
1
<?php
1
<?php
2
# $Id: ldap.php 2714 2019-03-10 23:43:22Z tom.houdayer $
2
# $Id: ldap.php 2718 2019-03-11 21:25:44Z tom.houdayer $
3
 
3
 
4
/* written by steweb57, Rexy & Tom HOUDAYER */
4
/* written by steweb57, Rexy & Tom HOUDAYER */
5
/****************************************************************
5
/****************************************************************
6
*                       GLOBAL FILE PATHS                       *
6
*                       GLOBAL FILE PATHS                       *
7
*****************************************************************/
7
*****************************************************************/
Line 67... Line 67...
67
        $l_ldap_ssl_text                = "Utiliser une connexion chiffré avec SSL (LDAPS)";
67
        $l_ldap_ssl_text                = "Utiliser une connexion chiffré avec SSL (LDAPS)";
68
        $l_ldap_cert_required_label     = "Vérifier le certificat SSL";
68
        $l_ldap_cert_required_label     = "Vérifier le certificat SSL";
69
        $l_ldap_cert_required_text      = "Vérifier que le serveur LDAP utilise un certificat connu";
69
        $l_ldap_cert_required_text      = "Vérifier que le serveur LDAP utilise un certificat connu";
70
        $l_ldap_cert_label              = "Certificat SSL (CA)";
70
        $l_ldap_cert_label              = "Certificat SSL (CA)";
71
        $l_ldap_cert_text               = "Certificat de l'authorité de certification signant celui du serveur LDAP";
71
        $l_ldap_cert_text               = "Certificat de l'authorité de certification signant celui du serveur LDAP";
-
 
72
        $l_ad_dns_domain_label          = "Nom de domaine interne";
-
 
73
        $l_ad_dns_domain_text           = "Nom de domaine qui sera redirigé vers le serveur DNS de l'annuaire LDAP (vide pour désactivé)";
72
        $l_ldap_cert_status_cur         = "Certificat actuel : ";
74
        $l_ldap_cert_status_cur         = "Certificat actuel : ";
73
        $l_ldap_cert_status_no          = "Aucun certificat installé";
75
        $l_ldap_cert_status_no          = "Aucun certificat installé";
74
        $l_ldap_submit                  = "Enregistrer";
76
        $l_ldap_submit                  = "Enregistrer";
75
        $l_ldap_test_service_failed     = "Service LDAP injoignable sur ce serveur (vérifiez l'@IP).";
77
        $l_ldap_test_service_failed     = "Service LDAP injoignable sur ce serveur (vérifiez l'@IP).";
76
        $l_ldap_test_service_ok         = "Un port 389 (636 avec SSL) est actif sur ce serveur";
78
        $l_ldap_test_service_ok         = "Un port 389 (636 avec SSL) est actif sur ce serveur";
Line 108... Line 110...
108
        $l_ldap_ssl_text                = "Use an encrypted connection with SSL (LDAPS)";
110
        $l_ldap_ssl_text                = "Use an encrypted connection with SSL (LDAPS)";
109
        $l_ldap_cert_required_label     = "Check the SSL certificate";
111
        $l_ldap_cert_required_label     = "Check the SSL certificate";
110
        $l_ldap_cert_required_text      = "Verify that the LDAP server uses a trusted certificate";
112
        $l_ldap_cert_required_text      = "Verify that the LDAP server uses a trusted certificate";
111
        $l_ldap_cert_label              = "SSL certificate (CA)";
113
        $l_ldap_cert_label              = "SSL certificate (CA)";
112
        $l_ldap_cert_text               = "Certificate of the certification authority that signed the LDAP server certificate";
114
        $l_ldap_cert_text               = "Certificate of the certification authority that signed the LDAP server certificate";
-
 
115
        $l_ad_dns_domain_label          = "Internal domain name";
-
 
116
        $l_ad_dns_domain_text           = "Domain name that will be forwarded to the DNS server of the LDAP directory (empty for disabled)";
113
        $l_ldap_cert_status_cur         = "Current certificate:";
117
        $l_ldap_cert_status_cur         = "Current certificate:";
114
        $l_ldap_cert_status_no          = "No certificate imported";
118
        $l_ldap_cert_status_no          = "No certificate imported";
115
        $l_ldap_submit                  = "Save";
119
        $l_ldap_submit                  = "Save";
116
        $l_ldap_test_service_failed     = "LDAP service is not reachable on that server (check IP)";
120
        $l_ldap_test_service_failed     = "LDAP service is not reachable on that server (check IP)";
117
        $l_ldap_test_service_ok         = "A port 389 (636 with SSL) is open on this server";
121
        $l_ldap_test_service_ok         = "A port 389 (636 with SSL) is open on this server";
Line 124... Line 128...
124
        $l_ldap_cert_cn_diff_dn         = "Certificate CommonName (§cert_domainName§) is different from the server domain name";
128
        $l_ldap_cert_cn_diff_dn         = "Certificate CommonName (§cert_domainName§) is different from the server domain name";
125
        $l_ldap_error                   = "LDAP error";
129
        $l_ldap_error                   = "LDAP error";
126
        $l_ldap_entries                 = "entries in the base";
130
        $l_ldap_entries                 = "entries in the base";
127
        $l_check                        = "Check this config";
131
        $l_check                        = "Check this config";
128
        $l_checkingConf                 = "Checking this configuration...";
132
        $l_checkingConf                 = "Checking this configuration...";
-
 
133
}
-
 
134
 
-
 
135
// AJAX LDAP assitant
-
 
136
if (isset($_GET['assistant'])) {
-
 
137
        $response = [
-
 
138
                'values' => []
-
 
139
        ];
-
 
140
        if (!isset($_POST['ldap_server'])) exit();
-
 
141
        $ldap_server = $_POST['ldap_server'];
-
 
142
 
-
 
143
        // Check port 389 & 636
-
 
144
        if (!$sock = @fsockopen($ldap_server, 389, $num, $error, 2)) {
-
 
145
                $ldap_port_389 = false;
-
 
146
                $ldap_srv_389  = false;
-
 
147
        } else {
-
 
148
                $ldap_port_389 = true;
-
 
149
                fclose($sock);
-
 
150
        }
-
 
151
        if (!$sock = @fsockopen($ldap_server, 636, $num, $error, 2)) {
-
 
152
                $ldap_port_636 = false;
-
 
153
                $ldap_srv_636  = false;
-
 
154
                $ldap_ssl      = false;
-
 
155
        } else {
-
 
156
                $ldap_port_636 = true;
-
 
157
                $ldap_ssl      = true;
-
 
158
                fclose($sock);
-
 
159
        }
-
 
160
 
-
 
161
        if (!$ldap_port_389 && !$ldap_port_636) {
-
 
162
                $response['result'] = -2;
-
 
163
 
-
 
164
                header('Content-Type: application/json');
-
 
165
                echo json_encode($response);
-
 
166
                exit();
-
 
167
        }
-
 
168
 
-
 
169
        // Check LDAP service
-
 
170
        if ($ldap_port_636) {
-
 
171
if (PHP_VERSION_ID >= 70100):
-
 
172
                // Set LDAP SSL options
-
 
173
                ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);
-
 
174
endif;
-
 
175
                $ldapconn = @ldap_connect('ldaps://'.$ldap_server);
-
 
176
                if (!$ldapconn) {
-
 
177
                        $ldap_srv_636 = false;
-
 
178
                } else {
-
 
179
                        ldap_set_option($ldapconn, LDAP_OPT_TIMELIMIT, 2);
-
 
180
 
-
 
181
                        // Bind anonymous
-
 
182
                        $ldap_srv_636 = true;
-
 
183
                        if (!@ldap_bind($ldapconn, '', '')) {
-
 
184
                                ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
-
 
185
                                if (!@ldap_bind($ldapconn, '', '')) {
-
 
186
                                        $ldap_srv_636 = false;
-
 
187
                                }
-
 
188
                        }
-
 
189
                }
-
 
190
 
-
 
191
                if ($ldap_srv_636) {
-
 
192
                        $ldap_data    = @ldap_read($ldapconn, '', 'objectClass=*', ['dnsHostName','rootDomainNamingContext','supportedCapabilities']);
-
 
193
                        $ldap_rootDSE = @ldap_get_entries($ldapconn, $ldap_data);
-
 
194
 
-
 
195
                        try {
-
 
196
                                $response['values']['isAD'] = in_array('1.2.840.113556.1.4.800', $ldap_rootDSE[0]['supportedcapabilities']);
-
 
197
                        } catch (Exception $e) {
-
 
198
                                $response['values']['isAD'] = false;
-
 
199
                        }
-
 
200
 
-
 
201
                        if ($response['values']['isAD']) {
-
 
202
                                try {
-
 
203
                                        $response['values']['ldap_base_dn'] = $ldap_rootDSE[0]['rootdomainnamingcontext'][0];
-
 
204
 
-
 
205
                                        if ($response['values']['ldap_base_dn']) {
-
 
206
                                                $response['values']['int_dns_domain'] = str_replace('DC=', '', str_replace(',DC=', '.', $response['values']['ldap_base_dn']));
-
 
207
                                        }
-
 
208
 
-
 
209
                                        $response['values']['ldap_base_dn'] = 'CN=Users,'.$response['values']['ldap_base_dn'];
-
 
210
                                } catch (Exception $e) { }
-
 
211
 
-
 
212
                                try {
-
 
213
                                        $response['values']['ldap_server_domain'] = $ldap_rootDSE[0]['dnshostname'][0];
-
 
214
                                } catch (Exception $e) { }
-
 
215
                        }
-
 
216
                }
-
 
217
        }
-
 
218
        $response['values']['ldap_srv_636'] = $ldap_srv_636;
-
 
219
 
-
 
220
        if (!$ldap_srv_636) {
-
 
221
                $ldapconn = @ldap_connect('ldap://'.$ldap_server);
-
 
222
                if (!$ldapconn) {
-
 
223
                        $ldap_srv_389 = false;
-
 
224
                } else {
-
 
225
                        ldap_set_option($ldapconn, LDAP_OPT_TIMELIMIT, 2);
-
 
226
 
-
 
227
                        // Bind anonymous
-
 
228
                        $ldap_srv_389 = true;
-
 
229
                        if (!@ldap_bind($ldapconn, '', '')) {
-
 
230
                                ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
-
 
231
                                if (!@ldap_bind($ldapconn, '', '')) {
-
 
232
                                        $ldap_srv_389 = false;
-
 
233
                                }
-
 
234
                        }
-
 
235
                }
-
 
236
 
-
 
237
                if ($ldap_srv_389) {
-
 
238
                        $ldap_data    = @ldap_read($ldapconn, '', 'objectClass=*', ['dnsHostName','rootDomainNamingContext','supportedCapabilities']);
-
 
239
                        $ldap_rootDSE = @ldap_get_entries($ldapconn, $ldap_data);
-
 
240
 
-
 
241
                        try {
-
 
242
                                $response['values']['isAD'] = in_array('1.2.840.113556.1.4.800', $ldap_rootDSE[0]['supportedcapabilities']);
-
 
243
                        } catch (Exception $e) {
-
 
244
                                $response['values']['isAD'] = false;
-
 
245
                        }
-
 
246
 
-
 
247
                        if ($response['values']['isAD']) {
-
 
248
                                try {
-
 
249
                                        $response['values']['ldap_base_dn'] = $ldap_rootDSE[0]['rootdomainnamingcontext'][0];
-
 
250
 
-
 
251
                                        if ($response['values']['ldap_base_dn']) {
-
 
252
                                                $response['values']['int_dns_domain'] = str_replace('DC=', '', str_replace(',DC=', '.', $response['values']['ldap_base_dn']));
-
 
253
                                        }
-
 
254
 
-
 
255
                                        $response['values']['ldap_base_dn'] = 'CN=Users,'.$response['values']['ldap_base_dn'];
-
 
256
                                } catch (Exception $e) { }
-
 
257
 
-
 
258
                                try {
-
 
259
                                        $response['values']['ldap_server_domain'] = $ldap_rootDSE[0]['dnshostname'][0];
-
 
260
                                } catch (Exception $e) { }
-
 
261
                        }
-
 
262
                }
-
 
263
                $response['values']['ldap_srv_389'] = $ldap_srv_389;
-
 
264
        }
-
 
265
 
-
 
266
        if (!$ldap_srv_636 && !$ldap_srv_389) {
-
 
267
                $response['result'] = -1;
-
 
268
 
-
 
269
                header('Content-Type: application/json');
-
 
270
                echo json_encode($response);
-
 
271
                exit();
-
 
272
        }
-
 
273
 
-
 
274
        $response['result'] = 0;
-
 
275
        header('Content-Type: application/json');
-
 
276
        echo json_encode($response);
-
 
277
        exit();
129
}
278
}
130
 
279
 
131
function ldap_checkServerConfig($f_ldap_server, $f_ldap_identity, $f_ldap_password, $f_ldap_basedn, $f_ldap_base_filter, $f_ldap_uid, $f_ldap_ssl, $f_ldap_cert, $f_ldap_cert_required) {
280
function ldap_checkServerConfig($f_ldap_server, $f_ldap_identity, $f_ldap_password, $f_ldap_basedn, $f_ldap_base_filter, $f_ldap_uid, $f_ldap_ssl, $f_ldap_cert, $f_ldap_cert_required) {
132
        // Socket to the LDAP port of the server
281
        // Socket to the LDAP port of the server
133
        if (!$sock = @fsockopen($f_ldap_server, (($f_ldap_ssl) ? 636 : 389), $num, $error, 2)) {
282
        if (!$sock = @fsockopen($f_ldap_server, (($f_ldap_ssl) ? 636 : 389), $num, $error, 2)) {
134
                // no network connection
283
                // no network connection
135
                return -2;
284
                return -2;
136
        }
285
        }
137
        fclose($sock);
286
        fclose($sock);
138
 
287
 
-
 
288
if (PHP_VERSION_ID >= 70100):
139
        // Set LDAP SSL options
289
        // Set LDAP SSL options
140
        if ($f_ldap_ssl) {
290
        if ($f_ldap_ssl) {
141
                if ($f_ldap_cert_required) {
291
                if ($f_ldap_cert_required) {
142
                        if ($f_ldap_cert) {
292
                        if ($f_ldap_cert) {
143
                                ldap_set_option(NULL, LDAP_OPT_X_TLS_CACERTFILE, $f_ldap_cert);
293
                                ldap_set_option(null, LDAP_OPT_X_TLS_CACERTFILE, $f_ldap_cert);
144
                        }
294
                        }
145
                        ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_DEMAND);
295
                        ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_DEMAND);
146
 
296
 
147
                } else {
297
                } else {
148
                        ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);
298
                        ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);
149
                }
299
                }
150
        }
300
        }
-
 
301
endif;
151
 
302
 
152
        // if ok, Test LDAP connection
303
        // if ok, Test LDAP connection
153
        $ldapconn = @ldap_connect((($f_ldap_ssl)?'ldaps':'ldap').'://'.$f_ldap_server);
304
        $ldapconn = @ldap_connect((($f_ldap_ssl)?'ldaps':'ldap').'://'.$f_ldap_server);
154
        if (!$ldapconn) {
305
        if (!$ldapconn) {
155
                // LDAP connection failed
306
                // LDAP connection failed
Line 222... Line 373...
222
                        exec('sed -i '.escapeshellarg("s/^LDAP_UID=.*/LDAP_UID=$ldap_uid/g").' '.CONF_FILE);
373
                        exec('sed -i '.escapeshellarg("s/^LDAP_UID=.*/LDAP_UID=$ldap_uid/g").' '.CONF_FILE);
223
                        exec('sed -i '.escapeshellarg("s/^LDAP_FILTER=.*/LDAP_FILTER=$ldap_base_filter/g").' '.CONF_FILE);
374
                        exec('sed -i '.escapeshellarg("s/^LDAP_FILTER=.*/LDAP_FILTER=$ldap_base_filter/g").' '.CONF_FILE);
224
                        exec('sed -i '.escapeshellarg("s/^LDAP_USER=.*/LDAP_USER=$ldap_user/g").' '.CONF_FILE);
375
                        exec('sed -i '.escapeshellarg("s/^LDAP_USER=.*/LDAP_USER=$ldap_user/g").' '.CONF_FILE);
225
                        exec('sed -i '.escapeshellarg("s/^LDAP_PASSWORD=.*/LDAP_PASSWORD=$ldap_password/g").' '.CONF_FILE);
376
                        exec('sed -i '.escapeshellarg("s/^LDAP_PASSWORD=.*/LDAP_PASSWORD=$ldap_password/g").' '.CONF_FILE);
226
                        exec('sed -i '.escapeshellarg("s/^LDAP_SSL=.*/LDAP_SSL=$ldap_ssl/g").' '.CONF_FILE);
377
                        exec('sed -i '.escapeshellarg("s/^LDAP_SSL=.*/LDAP_SSL=$ldap_ssl/g").' '.CONF_FILE);
-
 
378
                        if (isset($ldap_cert_required)) {
227
                        exec('sed -i '.escapeshellarg("s/^LDAP_CERT_REQUIRED=.*/LDAP_CERT_REQUIRED=$ldap_cert_required/g").' '.CONF_FILE);
379
                                exec('sed -i '.escapeshellarg("s/^LDAP_CERT_REQUIRED=.*/LDAP_CERT_REQUIRED=$ldap_cert_required/g").' '.CONF_FILE);
-
 
380
                        }
228
                        exec('sed -i \'s/^LDAP=.*/LDAP=on/g\' '.CONF_FILE);
381
                        exec('sed -i \'s/^LDAP=.*/LDAP=on/g\' '.CONF_FILE);
229
                        if (isset($ldap_cert) && ($ldap_cert['error'] === UPLOAD_ERR_OK)) {
382
                        if (isset($ldap_cert) && ($ldap_cert['error'] === UPLOAD_ERR_OK)) {
230
                                exec('sudo /usr/local/bin/alcasar-ldap.sh --import-cert '.escapeshellarg($ldap_cert['tmp_name']));
383
                                exec('sudo /usr/local/bin/alcasar-ldap.sh --import-cert '.escapeshellarg($ldap_cert['tmp_name']));
231
                        }
384
                        }
232
                        exec('sudo /usr/local/bin/alcasar-ldap.sh --on');
385
                        exec('sudo /usr/local/bin/alcasar-ldap.sh --on');
233
                        $messages .= '<span style="font-weight: bold; color: green;">'.$l_ldap_update.'</span><br>';
386
                        $messages .= '<span style="font-weight: bold; color: green;">'.$l_ldap_update.'</span><br>';
-
 
387
 
-
 
388
                        if ((isset($_POST['ad_dns_domain'])) && ($_POST['ad_dns_domain'] !== $conf['INT_DNS_DOMAIN'])) {
-
 
389
                                if (filter_var($ldap_server, FILTER_VALIDATE_IP) !== false) {
-
 
390
                                        $ldap_server_ip = $ldap_server;
-
 
391
                                } else {
-
 
392
                                        $ldap_server_ip = gethostbyname($ldap_server);
-
 
393
                                }
-
 
394
                                if (filter_var($ldap_server_ip, FILTER_VALIDATE_IP) !== false) {
-
 
395
                                        file_put_contents(CONF_FILE, str_replace('INT_DNS_IP='.$conf['INT_DNS_IP'],         'INT_DNS_IP='.$ldap_server_ip,             file_get_contents(CONF_FILE)));
-
 
396
                                        file_put_contents(CONF_FILE, str_replace('INT_DNS_DOMAIN='.$conf['INT_DNS_DOMAIN'], 'INT_DNS_DOMAIN='.$_POST['ad_dns_domain'], file_get_contents(CONF_FILE)));
-
 
397
                                        if (!empty($_POST['ad_dns_domain'])) {
-
 
398
                                                exec('sudo /usr/local/bin/alcasar-dns-local.sh --on');
-
 
399
                                        } else {
-
 
400
                                                exec('sudo /usr/local/bin/alcasar-dns-local.sh --off');
-
 
401
                                        }
-
 
402
                                }
-
 
403
                        }
234
                }
404
                }
235
        } else {
405
        } else {
236
                exec('sed -i "s/^LDAP=.*/LDAP=off/g" '.CONF_FILE);
406
                exec('sed -i "s/^LDAP=.*/LDAP=off/g" '.CONF_FILE);
237
                exec('sudo /usr/local/bin/alcasar-ldap.sh --off');
407
                exec('sudo /usr/local/bin/alcasar-ldap.sh --off');
238
                $messages .= '<span style="font-weight: bold; color: green;">'.$l_ldap_update.'</span><br>';
408
                $messages .= '<span style="font-weight: bold; color: green;">'.$l_ldap_update.'</span><br>';
-
 
409
 
-
 
410
                if ((isset($_POST['ad_dns_domain'])) && (empty($_POST['ad_dns_domain']))) {
-
 
411
                        exec('sudo /usr/local/bin/alcasar-dns-local.sh --off');
-
 
412
                }
239
        }
413
        }
240
 
414
 
241
        // Reload configuration
415
        // Reload configuration
242
        $file_conf = fopen(CONF_FILE, 'r');
416
        $file_conf = fopen(CONF_FILE, 'r');
243
        if (!$file_conf) {
417
        if (!$file_conf) {
Line 262... Line 436...
262
$ldap_uid           = $conf['LDAP_UID'];
436
$ldap_uid           = $conf['LDAP_UID'];
263
$ldap_base_filter   = $conf['LDAP_FILTER'];
437
$ldap_base_filter   = $conf['LDAP_FILTER'];
264
$ldap_ssl           = ($conf['LDAP_SSL'] === 'on');
438
$ldap_ssl           = ($conf['LDAP_SSL'] === 'on');
265
$ldap_cert_required = ($conf['LDAP_CERT_REQUIRED'] === 'on');
439
$ldap_cert_required = ($conf['LDAP_CERT_REQUIRED'] === 'on');
266
 
440
 
267
$ldap_cert_subject = NULL;
441
$ldap_cert_subject = null;
268
if (file_exists($LDAPS_CERT_LOC)) {
442
if (file_exists($LDAPS_CERT_LOC)) {
269
        $certificateInfos = openssl_x509_parse(file_get_contents($LDAPS_CERT_LOC));
443
        $certificateInfos = openssl_x509_parse(file_get_contents($LDAPS_CERT_LOC));
270
        if (preg_match_all('@/[a-zA-Z]+=([^/]+)@', $certificateInfos['name'], $matches)) {
444
        if (preg_match_all('@/[a-zA-Z]+=([^/]+)@', $certificateInfos['name'], $matches)) {
271
                $ldap_cert_subject = implode('.', array_reverse($matches[1]));
445
                $ldap_cert_subject = implode('.', array_reverse($matches[1]));
272
        }
446
        }
Line 293... Line 467...
293
                }
467
                }
294
 
468
 
295
                if (($ldap_cert_required) && isset($ldap_cert) && ($ldap_cert['error'] === UPLOAD_ERR_OK)) {
469
                if (($ldap_cert_required) && isset($ldap_cert) && ($ldap_cert['error'] === UPLOAD_ERR_OK)) {
296
                        $ldap_cert_tmpFilename = $ldap_cert['tmp_name'];
470
                        $ldap_cert_tmpFilename = $ldap_cert['tmp_name'];
297
                } else {
471
                } else {
298
                        $ldap_cert_tmpFilename = NULL;
472
                        $ldap_cert_tmpFilename = null;
299
                }
473
                }
300
 
474
 
301
                if (!empty($varErrors)) {
475
                if (!empty($varErrors)) {
302
                        $response['errors'] = $varErrors;
476
                        $response['errors'] = $varErrors;
303
                } else {
477
                } else {
Line 445... Line 619...
445
                                        messagesElem.innerHTML = 'server error';
619
                                        messagesElem.innerHTML = 'server error';
446
                                }
620
                                }
447
                        }
621
                        }
448
                };
622
                };
449
                xhr.open('POST', 'ldap.php?conf_check', true);
623
                xhr.open('POST', 'ldap.php?conf_check', true);
-
 
624
                xhr.send(post_data);
-
 
625
        }
-
 
626
 
-
 
627
        function launchAssistant() {
-
 
628
                var messagesElem = document.querySelector('fieldset > legend > div');
-
 
629
                var dom_ldap_server        = document.getElementById('ldap_server');
-
 
630
                var dom_ldap_ssl           = document.getElementById('ldap_ssl');
-
 
631
                var dom_ldap_cert_required = document.getElementById('ldap_cert_required');
-
 
632
                var dom_ldap_dn            = document.getElementById('ldap_dn');
-
 
633
                var dom_ldap_uid           = document.getElementById('ldap_uid');
-
 
634
                var dom_ad_dns_domain      = document.getElementById('ad_dns_domain');
-
 
635
                post_data = 'ldap_server='+dom_ldap_server.value;
-
 
636
 
-
 
637
                var xhr = new XMLHttpRequest();
-
 
638
                xhr.onreadystatechange = function() {
-
 
639
                        if (this.readyState == 4) {
-
 
640
                                if (this.status == 200) {
-
 
641
                                        var data = JSON.parse(this.responseText);
-
 
642
                                        var messages = '';
-
 
643
 
-
 
644
                                        if (typeof data.result !== 'undefined') {
-
 
645
                                                if (data.result === -2) {
-
 
646
                                                        messages += "<span style=\"color: red\"><?= $l_ldap_test_service_failed ?></span>";
-
 
647
                                                } else if (data.result === -1) {
-
 
648
                                                        messages += "<br><span style=\"color: red\"><?= $l_ldap_test_connection_failed ?></span>";
-
 
649
                                                } else if (data.result === 0) {
-
 
650
                                                        if ((typeof data.values.int_dns_domain !== 'undefined') && (dom_ad_dns_domain.value === '')) {
-
 
651
                                                                dom_ad_dns_domain.value = data.values.int_dns_domain
-
 
652
                                                        }
-
 
653
                                                        if ((typeof data.values.ldap_base_dn !== 'undefined') && (dom_ldap_dn.value === '')) {
-
 
654
                                                                dom_ldap_dn.value = data.values.ldap_base_dn
-
 
655
                                                        }
-
 
656
                                                        if (dom_ldap_uid.value === '') {
-
 
657
                                                                if (data.values.isAD === true) {
-
 
658
                                                                        dom_ldap_uid.value = 'sAMAccountName';
-
 
659
                                                                } else {
-
 
660
                                                                        dom_ldap_uid.value = 'uid';
-
 
661
                                                                }
-
 
662
                                                        }
-
 
663
                                                        if (data.values.ldap_srv_636 === true) {
-
 
664
                                                                dom_ldap_ssl.value = 'on'
-
 
665
                                                                if ((typeof data.values.ldap_server_domain !== 'undefined') && (dom_ldap_cert_required.value === 'on')) {
-
 
666
                                                                        dom_ldap_server.value = data.values.ldap_server_domain
-
 
667
                                                                }
-
 
668
                                                        } else {
-
 
669
                                                                if (dom_ldap_ssl.value === 'on') {
-
 
670
                                                                        dom_ldap_ssl.value = 'off';
-
 
671
                                                                }
-
 
672
                                                        }
-
 
673
                                                        onLdapStatusChange();
-
 
674
                                                }
-
 
675
                                        }
-
 
676
 
-
 
677
                                        messagesElem.innerHTML = messages;
-
 
678
                                } else {
-
 
679
                                        messagesElem.innerHTML = 'server error';
-
 
680
                                }
-
 
681
                        }
-
 
682
                };
-
 
683
                xhr.open('POST', 'ldap.php?assistant', true);
-
 
684
                xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
450
                xhr.send(post_data);
685
                xhr.send(post_data);
451
        }
686
        }
452
        </script>
687
        </script>
453
</head>
688
</head>
454
<body onLoad="onLdapStatusChange();">
689
<body onLoad="onLdapStatusChange();">
Line 480... Line 715...
480
                                                <dt>
715
                                                <dt>
481
                                                        <label for="ldap_server"><?= $l_ldap_server_label ?></label><br>
716
                                                        <label for="ldap_server"><?= $l_ldap_server_label ?></label><br>
482
                                                        <?= $l_ldap_server_text ?>
717
                                                        <?= $l_ldap_server_text ?>
483
                                                </dt>
718
                                                </dt>
484
                                                <dd>
719
                                                <dd>
485
                                                        <input type="text" id="ldap_server" size="40" name="ldap_server" value="<?= htmlspecialchars($ldap_server) ?>" oninput="onLdapStatusChange();">
720
                                                        <input type="text" id="ldap_server" size="40" name="ldap_server" value="<?= htmlspecialchars($ldap_server) ?>" oninput="onLdapStatusChange();"> <button onclick="launchAssistant(); return false;"><?= 'Assistant' ?></button>
486
                                                </dd>
721
                                                </dd>
487
                                        </dl>
722
                                        </dl>
488
                                        <dl>
723
                                        <dl>
489
                                                <dt>
724
                                                <dt>
490
                                                        <label for="ldap_dn"><?= $l_ldap_base_dn_label ?></label><br>
725
                                                        <label for="ldap_ssl"><?= $l_ldap_ssl_label ?></label><br>
491
                                                        <?= $l_ldap_base_dn_text ?>
726
                                                        <?= $l_ldap_ssl_text ?><br>
492
                                                </dt>
727
                                                </dt>
493
                                                <dd>
728
                                                <dd>
494
                                                        <input type="text" id="ldap_dn" size="40" name="ldap_base_dn" value="<?= htmlspecialchars($ldap_base_dn) ?>" oninput="onLdapStatusChange();">
729
                                                        <select id="ldap_ssl" name="ldap_ssl" onchange="onLdapStatusChange();">
-
 
730
                                                                <option value="on"<?= ($ldap_ssl)  ? ' selected="selected"' : '' ?>><?= $l_ldap_YES ?></option>
-
 
731
                                                                <option value="off"<?= (!$ldap_ssl) ? ' selected="selected"' : '' ?>><?= $l_ldap_NO ?></option>
-
 
732
                                                        </select>
495
                                                </dd>
733
                                                </dd>
496
                                        </dl>
734
                                        </dl>
497
                                        <dl>
735
                                        <dl>
498
                                                <dt>
736
                                                <dt>
499
                                                        <label for="ldap_uid"><?= $l_ldap_uid_label ?></label><br>
737
                                                        <label for="ldap_cert_required"><?= $l_ldap_cert_required_label ?></label><br>
500
                                                        <?= $l_ldap_uid_text ?>
738
                                                        <?= $l_ldap_cert_required_text ?><br>
501
                                                </dt>
739
                                                </dt>
502
                                                <dd>
740
                                                <dd>
503
                                                        <input type="text" id="ldap_uid" size="40" name="ldap_uid" value="<?= htmlspecialchars($ldap_uid) ?>" oninput="onLdapStatusChange();">
741
                                                        <select id="ldap_cert_required" name="ldap_cert_required" onchange="onLdapStatusChange();">
-
 
742
                                                                <option value="on"<?= ($ldap_cert_required)  ? ' selected="selected"' : '' ?>><?= $l_ldap_YES ?></option>
-
 
743
                                                                <option value="off"<?= (!$ldap_cert_required) ? ' selected="selected"' : '' ?>><?= $l_ldap_NO ?></option>
-
 
744
                                                        </select>
504
                                                </dd>
745
                                                </dd>
505
                                        </dl>
746
                                        </dl>
506
                                        <dl>
747
                                        <dl>
507
                                                <dt>
748
                                                <dt>
508
                                                        <label for="ldap_base_filter"><?= $l_ldap_base_filter_label ?></label><br>
749
                                                        <label for="ldap_cert"><?= $l_ldap_cert_label ?></label><br>
509
                                                        <?= $l_ldap_base_filter_text ?>
750
                                                        <?= $l_ldap_cert_text ?><br>
-
 
751
                                                        <?= (($ldap_cert_subject) ? "$l_ldap_cert_status_cur $ldap_cert_subject" : $l_ldap_cert_status_no ) ?>
510
                                                </dt>
752
                                                </dt>
511
                                                <dd>
753
                                                <dd>
512
                                                        <input type="text" id="ldap_base_filter" size="40" name="ldap_base_filter" value="<?= htmlspecialchars($ldap_base_filter) ?>" oninput="onLdapStatusChange();">
754
                                                        <input type="file" id="ldap_cert" name="ldap_cert" oninput="onLdapStatusChange();">
513
                                                </dd>
755
                                                </dd>
514
                                        </dl>
756
                                        </dl>
515
                                        <dl>
757
                                        <dl>
516
                                                <dt>
758
                                                <dt>
517
                                                        <label for="ldap_user"><?= $l_ldap_user_label ?></label><br>
759
                                                        <label for="ldap_user"><?= $l_ldap_user_label ?></label><br>
Line 530... Line 772...
530
                                                        <input type="password" id="ldap_password" size="40" name="ldap_password" value="<?= htmlspecialchars($ldap_password) ?>" oninput="onLdapStatusChange();">
772
                                                        <input type="password" id="ldap_password" size="40" name="ldap_password" value="<?= htmlspecialchars($ldap_password) ?>" oninput="onLdapStatusChange();">
531
                                                </dd>
773
                                                </dd>
532
                                        </dl>
774
                                        </dl>
533
                                        <dl>
775
                                        <dl>
534
                                                <dt>
776
                                                <dt>
535
                                                        <label for="ldap_ssl"><?= $l_ldap_ssl_label ?></label><br>
777
                                                        <label for="ldap_dn"><?= $l_ldap_base_dn_label ?></label><br>
536
                                                        <?= $l_ldap_ssl_text ?><br>
778
                                                        <?= $l_ldap_base_dn_text ?>
537
                                                </dt>
779
                                                </dt>
538
                                                <dd>
780
                                                <dd>
539
                                                        <select id="ldap_ssl" name="ldap_ssl" onchange="onLdapStatusChange();">
781
                                                        <input type="text" id="ldap_dn" size="40" name="ldap_base_dn" value="<?= htmlspecialchars($ldap_base_dn) ?>" oninput="onLdapStatusChange();">
540
                                                                <option value="on"<?= ($ldap_ssl)  ? ' selected="selected"' : '' ?>><?= $l_ldap_YES ?></option>
-
 
541
                                                                <option value="off"<?= (!$ldap_ssl) ? ' selected="selected"' : '' ?>><?= $l_ldap_NO ?></option>
-
 
542
                                                        </select>
-
 
543
                                                </dd>
782
                                                </dd>
544
                                        </dl>
783
                                        </dl>
545
                                        <dl>
784
                                        <dl>
546
                                                <dt>
785
                                                <dt>
547
                                                        <label for="ldap_cert_required"><?= $l_ldap_cert_required_label ?></label><br>
786
                                                        <label for="ldap_uid"><?= $l_ldap_uid_label ?></label><br>
548
                                                        <?= $l_ldap_cert_required_text ?><br>
787
                                                        <?= $l_ldap_uid_text ?>
549
                                                </dt>
788
                                                </dt>
550
                                                <dd>
789
                                                <dd>
551
                                                        <select id="ldap_cert_required" name="ldap_cert_required" onchange="onLdapStatusChange();">
790
                                                        <input type="text" id="ldap_uid" size="40" name="ldap_uid" value="<?= htmlspecialchars($ldap_uid) ?>" oninput="onLdapStatusChange();">
552
                                                                <option value="on"<?= ($ldap_cert_required)  ? ' selected="selected"' : '' ?>><?= $l_ldap_YES ?></option>
-
 
553
                                                                <option value="off"<?= (!$ldap_cert_required) ? ' selected="selected"' : '' ?>><?= $l_ldap_NO ?></option>
-
 
554
                                                        </select>
-
 
555
                                                </dd>
791
                                                </dd>
556
                                        </dl>
792
                                        </dl>
557
                                        <dl>
793
                                        <dl>
558
                                                <dt>
794
                                                <dt>
559
                                                        <label for="ldap_cert"><?= $l_ldap_cert_label ?></label><br>
795
                                                        <label for="ldap_base_filter"><?= $l_ldap_base_filter_label ?></label><br>
560
                                                        <?= $l_ldap_cert_text ?><br>
796
                                                        <?= $l_ldap_base_filter_text ?>
561
                                                        <?= (($ldap_cert_subject) ? "$l_ldap_cert_status_cur $ldap_cert_subject" : $l_ldap_cert_status_no ) ?>
-
 
562
                                                </dt>
797
                                                </dt>
563
                                                <dd>
798
                                                <dd>
564
                                                        <input type="file" id="ldap_cert" name="ldap_cert" oninput="onLdapStatusChange();">
799
                                                        <input type="text" id="ldap_base_filter" size="40" name="ldap_base_filter" value="<?= htmlspecialchars($ldap_base_filter) ?>" oninput="onLdapStatusChange();">
-
 
800
                                                </dd>
-
 
801
                                        </dl>
-
 
802
                                        <dl>
-
 
803
                                                <dt>
-
 
804
                                                        <label for="ad_dns_domain"><?= $l_ad_dns_domain_label ?></label><br>
-
 
805
                                                        <?= $l_ad_dns_domain_text ?>
-
 
806
                                                </dt>
-
 
807
                                                <dd>
-
 
808
                                                        <input type="text" id="ad_dns_domain" size="40" name="ad_dns_domain" value="<?= htmlspecialchars($conf['INT_DNS_DOMAIN']) ?>" oninput="onLdapStatusChange();">
565
                                                </dd>
809
                                                </dd>
566
                                        </dl>
810
                                        </dl>
567
                                        <p>
811
                                        <p>
568
                                                <button id="btn-checkconf" onclick="checkConfig(); return false;"><?= $l_check ?></button>
812
                                                <button id="btn-checkconf" onclick="checkConfig(); return false;"><?= $l_check ?></button>
569
                                                <input id="submit" type="submit" value="<?= $l_ldap_submit ?>" name="submit">
813
                                                <input id="submit" type="submit" value="<?= $l_ldap_submit ?>" name="submit">