Projet

Général

Profil

Paste
Télécharger (5,67 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / ldap / ldap_help / ldap_test_script / test.php @ bc175c27

1
<?php
2

    
3

    
4
/**
5
 * @file
6
 * test script functions for testing ldap functionality outside of Drupal
7
 * see README.txt for instructions
8
 */
9

    
10
require_once('functions.inc');
11

    
12
$config = ldap_help_config();
13

    
14
ldap_help_display(NULL, "------------------------------------------\n");
15
ldap_help_display(NULL, LDAP_SCRIPTS_COMMAND_LINE_WARNING . "\n");
16

    
17
ldap_help_display(NULL, "------------------------------------------\nldap extension test\n------------------------------------------");
18
ldap_help_display("PHP Version", phpversion());
19
ldap_help_display('LDAP Extension Loaded', (extension_loaded('ldap')) ? 'yes' : 'no');
20
ldap_help_display(NULL, ldap_help_parsePHPModules());
21

    
22
if (!extension_loaded('ldap')) {
23
  die('PHP LDAP extension not loaded.  Can not run tests.  Check your php.ini and make sure ldap extension is avaialable.');
24
}
25

    
26
foreach ($config['servers'] as $sid => $server) {
27

    
28
  /**
29
   * Test LDAP Connect
30
   */
31
  $results = ldap_help_connect($server['server_address'], $server['server_port'], $server['server_tls'], TRUE);
32
  $test_name = "\"" . $sid . "\"";
33

    
34
  ldap_help_display(NULL, "------------------------------------------\n$test_name connect\n------------------------------------------");
35
  $tls = ($server['server_tls']) ? 'yes' : 'no';
36
  ldap_help_display('tls', $tls);
37

    
38
  $anon_bind = ($server['server_bind_method'] == LDAP_SERVERS_BIND_METHOD_ANON);
39
  $anon_bind_text = ($anon_bind) ? 'yes' : 'no';
40
  ldap_help_display('anonymous bind', $anon_bind_text);
41

    
42
  ldap_help_display('connect result', $results[1]);
43
  ldap_help_display('connect context', join("", array("server: ", $server['server_address'], ", port: ", $server['server_port'], ", tls= $tls")));
44
  $con = FALSE;
45
  if ($results[0] == LDAP_SUCCESS) {
46
    $con = $results[2];
47
  }
48
  elseif ($results[0] == LDAP_OTHER) {
49
    $con = $results[2];
50
  }
51
  else {
52
    ldap_help_disconnect($con);
53
    continue;
54
  }
55

    
56
  /**
57
   * Test LDAP Bind
58
   */
59

    
60
  ldap_help_display(NULL, "------------------------------------------\n$test_name bind\n------------------------------------------");
61

    
62
  if ($anon_bind) {
63
    if (@!ldap_bind($con)) {
64
      $results = array(ldap_errno($con), "LDAP anonymous bind error." . ldap_help_show_error($con));
65
    }
66
  }
67
  else {
68
    $bind_result = @ldap_bind($con, $server['server_bind_dn'], $server['server_bind_pw']);
69
    if (!$bind_result) {
70
      $results = array(ldap_errno($con), "LDAP bind failure for user " . $server['server_bind_dn'] . "." . ldap_help_show_error($con));
71
    }
72
    else {
73
      $results = array(LDAP_SUCCESS, "LDAP bind success.");
74
    }
75
  }
76

    
77
  ldap_help_display('bind result', $results[1]);
78
  ldap_help_display('bind dn', $server['server_bind_dn']);
79
  if ($results[0] != LDAP_SUCCESS) {
80
    continue;
81
  }
82

    
83
  /**
84
   * Test LDAP Queries
85
   */
86
  foreach ($server['test_queries'] as $query_id => $query) {
87
    ldap_help_display(NULL, "------------------------------------------\n$test_name query \"$query_id\" \n------------------------------------------");
88

    
89
    $filter = $query['filter'];
90
    ldap_help_display('search base_dn', $server['server_base_dn']);
91
    ldap_help_display('search filter', $filter);
92
    ldap_help_display('server_address', $server['server_address']);
93
    ldap_help_display('server_port', $server['server_port']);
94
    ldap_help_display('tls', $tls);
95

    
96
    $query_result = @ldap_search($con, $server['server_base_dn'], $filter);
97
    if (!$query_result) {
98
      ldap_help_display(ldap_errno($con), "LDAP search failure for user $filter." . ldap_help_show_error($con));
99
    }
100
    else {// display results
101
      $entries = ldap_get_entries($con, $query_result);
102
     // print_r($entries);
103
      ldap_help_display('search result');
104
      if (is_array($entries)) {
105
        $entry_count = $entries['count'];
106
        if ($entry_count == 0) {
107
          ldap_help_display('no entries found');
108
        }
109
        else {
110
          for ($j = 0; $j < $entry_count; $j++) {
111
            $entry = $entries[$j];
112
            $attr_count = $entry['count'];
113
            ldap_help_display(NULL, "\nsearch results, entry[$j]:");
114
            ldap_help_display('  dn[' . $j . ']', $entry['dn']);
115
            for ($i = 0; $i < $attr_count; $i++) {
116
              $attr_name = $entry[$i];
117
              if (in_array($attr_name, $query['show_attr'])) {
118
                $values_count = $entry[$attr_name]['count'];
119
                for ($k = 0; $k < $values_count; $k++) {
120
                  ldap_help_display('  ' . $attr_name . '[' . $k . ']', $entry[$attr_name][$k]);
121
                }
122
              }
123
            }
124
          }
125
        }
126
      }
127
    }
128
  }
129

    
130
   /**
131
   * Test LDAP Provisioning
132
   */
133
  foreach ($server['test_provisions'] as $provision_id => $provision) {
134
    ldap_help_display(NULL, "------------------------------------------\n$test_name provision \"$provision_id\"\n------------------------------------------");
135

    
136
    $dn = $provision['dn'];
137

    
138
    ldap_help_display(NULL, "\nprovision, entry[$dn]:");
139
    if ($provision['delete_if_exists']) {
140
      $query_result = @ldap_search($con, $server['server_base_dn'], $provision['find_filter']);
141
      if ($query_result) {
142
        $entries = ldap_get_entries($con, $query_result);
143
        if ($entries['count'] == 1) {
144
          $result = @ldap_delete($con, $dn);
145
          if ($result) {
146
            ldap_help_display('deleted existing entry', $dn);
147
          }
148
          else {
149
            ldap_help_display('failed to delete existing entry in provision', $dn);
150
            continue;
151
          }
152
        }
153
        else {
154
          // no entry exists
155
        }
156
      }
157
    }
158

    
159

    
160
    $result = @ldap_add($con, $dn, $provision['attr']);
161
    $show_result = $result ? 'success' : 'fail';
162
    ldap_help_display('provision result', $show_result);
163
    if (!$result) {
164
      ldap_help_display('provision error', ldap_help_show_error($con));
165
    }
166
  }
167

    
168
}