Umfragen
testUsers_LDAP.php
Go to the documentation of this file.
1 <?php
2 /*
3  * ldif.php
4  *
5  * Copyright 2013 Johannes <jojo@jojo-42>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20  * MA 02110-1301, USA.
21  *
22  *
23  */
24 /*
25 # LDIF Export for ou=accounts,dc=jojo,dc=local
26 # Server: My LDAP Server (127.0.0.1)
27 # Search Scope: sub
28 # Search Filter: (objectClass=*)
29 # Total Entries: 18
30 #
31 # Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on January 25, 2013 8:17 am
32 # Version: 1.2.2
33 
34 version: 1
35 
36 # Entry 1: ou=accounts,dc=jojo,dc=local
37 dn: ou=accounts,dc=jojo,dc=local
38 objectclass: top
39 objectclass: organizationalUnit
40 ou: accounts
41 
42 # Entry 2: cn=admin2,ou=accounts,dc=jojo,dc=local
43 dn: cn=admin2,ou=accounts,dc=jojo,dc=local
44 cn: admin2
45 gidnumber: 502
46 homedirectory: /home/users/admin2
47 objectclass: inetOrgPerson
48 objectclass: posixAccount
49 objectclass: top
50 sn: admin2
51 uid: admin2
52 uidnumber: 1006
53 userpassword: {MD5}4galTpdpDM5QzIct1w7olg==
54 *
55 * # Entry 3: cn=jojo,ou=accounts,dc=jojo,dc=local
56 dn: cn=jojo,ou=accounts,dc=jojo,dc=local
57 cn: jojo
58 gidnumber: 502
59 givenname: Johannes
60 homedirectory: /home/users/jojo
61 homephone: 0761123456
62 loginshell: /bin/sh
63 mail: psicho66@yahoo.de
64 objectclass: inetOrgPerson
65 objectclass: posixAccount
66 objectclass: top
67 sn: jojo
68 uid: jojo
69 uidnumber: 1002
70 userpassword: {MD5}R1cGfKExq/Icfe3qfv0MgA==
71 *
72 * # Entry 17: cn=u3,ou=accounts,dc=jojo,dc=local
73 dn: cn=u3,ou=accounts,dc=jojo,dc=local
74 cn: u3
75 gidnumber: 501
76 homedirectory: /home/users/u3
77 objectclass: inetOrgPerson
78 objectclass: posixAccount
79 objectclass: top
80 sn: u3
81 uid: u3
82 uidnumber: 1012
83 userpassword: {MD5}7MvIfktc4v4oMI/Z8qe68w==
84 *
85 * # Entry 2: cn=administrators,ou=groups,dc=jojo,dc=local
86 dn: cn=administrators,ou=groups,dc=jojo,dc=local
87 cn: administrators
88 gidnumber: 502
89 memberuid: jojo
90 memberuid: admin2
91 memberuid: jojo2
92 objectclass: posixGroup
93 objectclass: top
94 
95 *
96 */
97 
98 /*
99 $first_uid = 1000;
100 $first_gid = 500;
101 $groups_quant = 4;
102 $groups = array(
103  500 => "admins",
104  501 => "teachers",
105 );
106 for($i=2;$i<$groups_quant+2;++$i){
107  $n = $i-1;
108  $groups[500+$i] = "class$n";
109 }
110 
111 
112 $users = array(
113 array("name" => "admin","group"=>500),
114 
115 array("name" => "Johannes tH","group"=>501,"pass"=>"isabelle","uid"=>"jojo"),
116 array("name" => "Natsu Dragneel","group"=>501),
117 array("name" => "Lucy Heartfilia","group"=>501),
118 array("name" => "Erza Scarlet","group"=>501),
119 array("name" => "Gray Fullbuster","group"=>501),
120 
121 array("name" => "Wendy Marvell","group"=>502),
122 array("name" => "Gajeel Redfox","group"=>502),
123 array("name" => "Makarov Dreyar","group"=>502),
124 
125 array("name" => "Mirajane Strauss","group"=>503),
126 array("name" => "Elfman Strauss","group"=>503),
127 array("name" => "Lisanna Strauss","group"=>503),
128 array("name" => "Cana Alberona","group"=>503),
129 
130 array("name" => "Juvia Lockser","group"=>504),
131 array("name" => "Freed Justine","group"=>504),
132 array("name" => "Gildarts Clive","group"=>504),
133 array("name" => "Macao Conbolt","group"=>504),
134 
135 array("name" => "Happy","group"=>505),
136 array("name" => "Carla","group"=>505)
137 );
138 
139 
140 
141 foreach($users as &$user){
142  if(!isset($user["uid"])){
143  $n = explode(" ",$user["name"]);
144  $t = substr($n[0],0,1).substr($n[1],0,2);
145  $user["uid"] = strtolower($t);
146  if( strlen($user["uid"]) <3 ){
147  $user["uid"] = substr(strtolower($user["name"]),0,3);
148  }
149  }
150  if(!isset($user["pass"])){
151  $user["pass"] = $user["uid"];
152  }
153 }
154 */
155 
156 
157 
158 
159 
160 
161 
162 
163 
164 
165 
166 
167 /****************************************************************************
168  *
169  * CONFIGURE
170  *
171  * ***************************************************************************/
172 
173 $first_uid = 1000; // giving user IDs from this value onward ... default: 1000
174 $first_gid = 500; // giving group IDs from this value onward ... default: 500
175 $groups_quant = 4; // making n groups (only in the groups database ... you have to decide where which user will go) ... default: 4
176 
177 $table_EnablejavaScript = true; // make a nice javaScript login when clicking on a username in the HTML table
178 $crypt_salt = "isabelle"; // well, passwords are not werry good food for databases, so salt them a bit
179 
180 
181 
182 /****************************************************************************
183  *
184  * DATA
185  *
186  * ***************************************************************************/
187 
188 // DEFINE STANDART GROUPS
189 // the classes will be added after this
190 $groups = array(
191  500 => "admins",
192  501 => "teachers",
193 );
194 
195 
196 // DEFINE THE USERS
197 // available fields: name, givenName, surName, groups, pass, uid
198 $users = array(
199  /*GROUP 500 Admins*/
200  array( "name" => "admin",
201  "givenName" => "The Black Wizard",
202  "surName" => "Zeref",
203  "group"=>500 ),
204 
205  /*GROUP 501 Teachers*/
206  array( "name" => "Johannes th",
207  "givenName" => "johannes",
208  "surName" => "th",
209  "group"=>501,
210  "pass"=>"isabelle",
211  "uid"=>"jojo"),
212 
213  array( "name" => "Natsu Dragneel",
214  "givenName" => "Natsu",
215  "surName" => "Dragneel",
216  "group"=>501),
217 
218  array( "name" => "Lucy Heartfilia",
219  "givenName" => "Lucy",
220  "surName" => "Heartfilia",
221  "group"=>501),
222 
223  array( "name" => "Erza Scarlet",
224  "givenName" => "Erza",
225  "surName" => "Scarlet",
226  "group"=>501),
227 
228  array( "name" => "Gray Fullbuster",
229  "givenName" => "Gray",
230  "surName" => "Fullbuster",
231  "group"=>501),
232 
233  /*GROUP 502 Class1*/
234  array( "name" => "Wendy Marvell",
235  "givenName" => "Wendy",
236  "surName" => "Marvell",
237  "group"=>502),
238 
239  array( "name" => "Gajeel Redfox",
240  "givenName" => "Gajeel",
241  "surName" => "Redfox",
242  "group"=>502),
243 
244  array( "name" => "Makarov Dreyar",
245  "givenName" => "Makarov",
246  "surName" => "Dreyar",
247  "group"=>502),
248 
249  /*GROUP 503 Class2*/
250  array( "name" => "Mirajane Strauss",
251  "givenName" => "Mirajane",
252  "surName" => "Strauss",
253  "group"=>503),
254 
255  array( "name" => "Elfman Strauss",
256  "givenName" => "Elfman",
257  "surName" => "Strauss",
258  "group"=>503),
259 
260  array( "name" => "Lisanna Strauss",
261  "givenName" => "Lisanna",
262  "surName" => "Strauss",
263  "group"=>503),
264 
265  array( "name" => "Cana Alberona",
266  "givenName" => "Cana",
267  "surName" => "Alberona",
268  "group"=>503),
269 
270  /*GROUP 504 Class3*/
271  array( "name" => "Juvia Lockser",
272  "givenName" => "Juvia",
273  "surName" => "Lockser",
274  "group"=>504),
275 
276  array( "name" => "Freed Justine",
277  "givenName" => "Freed",
278  "surName" => "Justine",
279  "group"=>504),
280 
281  array( "name" => "Gildarts Clive",
282  "givenName" => "Gildarts",
283  "surName" => "Clive",
284  "group"=>504),
285 
286  array( "name" => "Macao Conbolt",
287  "givenName" => "Macao",
288  "surName" => "Conbolt",
289  "group"=>504),
290 
291  /*GROUP 505 Class4*/
292  array( "name" => "Happy",
293  "givenName" => "Happy",
294  "surName" => "exceed",
295  "group"=>505),
296 
297  array( "name" => "Carla",
298  "givenName" => "Carla",
299  "surName" => "exceed",
300  "group"=>505),
301 
302  array( "name" => "Pantherlily",
303  "givenName" => "Pantherlily",
304  "surName" => "exceed",
305  "group"=>505)
306 
307 );
308 
309 
310 // COMPLETE USER INFO
311 foreach($users as &$user){
312  if(!isset($user["uid"])){
313  // one letter from the given Name and two from the sur name ...
314  //extracted from full Name !!!!
315  $n = explode(" ",$user["name"]);
316  $t = substr($n[0],0,1).substr($n[1],0,2);
317  $user["uid"] = strtolower($t);
318  if( strlen($user["uid"]) <3 ){
319  $user["uid"] = substr(strtolower($user["name"]),0,3);
320  }
321  }
322  if(!isset($user["pass"])){
323  $user["pass"] = $user["uid"];
324  }
325  if(!isset($user["surName"])){
326  $user["surName"] = "";
327  }
328  if(!isset($user["givenName"])){
329  $user["givenName"] = "";
330  }
331 
332 }
333 
334 // MAKE GROUPS
335 for($i=2;$i<$groups_quant+2;++$i){
336  $n = $i-1;
337  $groups[500+$i] = "class$n";
338 }
339 
340 
341 
342 
343 
344 /****************************************************************************
345  *
346  * LDAP STATEMENT
347  *
348  * ***************************************************************************/
349 
350 
351 
352 echo "# Entry 1: ou=accounts,dc=jojo,dc=local
353 dn: ou=accounts,dc=jojo,dc=local
354 objectclass: top
355 objectclass: organizationalUnit
356 ou: accounts
357 
358 ";
359 
360 echo "
361 # Entry 2: ou=groups,dc=jojo,dc=local
362 dn: ou=groups,dc=jojo,dc=local
363 objectclass: organizationalUnit
364 objectclass: top
365 ou: groups
366 
367 ";
368 
369 $entry = 3;
370 
371 $i=0;
372 foreach($users as &$user){
373  $id = $first_uid+$i;
374  $sn = explode(" ",$user["name"]);
375  $sn = $sn[ sizeof($sn)-1 ];
376  $user["numid"] = $id;
377 
378  echo "# Entry $entry: cn={$user["uid"]},ou=accounts,dc=jojo,dc=local".PHP_EOL;
379  echo "dn: cn={$user["uid"]},ou=accounts,dc=jojo,dc=local".PHP_EOL;
380  echo "cn: {$user["name"]}".PHP_EOL;
381  echo "gidnumber: {$user["group"]}".PHP_EOL;
382  echo "homedirectory: /home/users/{$user["uid"]}".PHP_EOL;
383  echo "objectclass: inetOrgPerson".PHP_EOL;
384  echo "objectclass: posixAccount".PHP_EOL;
385  echo "objectclass: top".PHP_EOL;
386  echo "sn: {$user["surName"]}".PHP_EOL;
387  echo "givenName: {$user["givenName"]}".PHP_EOL;
388  echo "uid: {$user["uid"]}".PHP_EOL;
389  echo "uidnumber: $id".PHP_EOL;
390  $hash = shell_exec('slappasswd -s "'.$user["pass"].'" -h "{MD5}"');
391  //echo PHP_EOL.$hash.PHP_EOL;
392  echo "userpassword: $hash".PHP_EOL.PHP_EOL;
393  ++$entry; ++$i;
394 }
395 unset($user);
396 
397 
398 
399 $keys = array_keys($groups);
400 for($i=0;$i<sizeof($groups);++$i){
401  $gid = $keys[$i];
402  $name= $groups[$gid];
403  echo "# Entry $entry: cn=$name,ou=groups,dc=jojo,dc=local".PHP_EOL;
404  echo "dn: cn=$name,ou=groups,dc=jojo,dc=local".PHP_EOL;
405  echo "cn: $name".PHP_EOL;
406  echo "gidnumber: $gid".PHP_EOL;
407 
408  foreach($users as $user){
409  if($user["group"] == $gid){
410  echo "memberuid:".$user["uid"].PHP_EOL;
411  }
412  }
413  echo "objectclass: posixGroup".PHP_EOL;
414  echo "objectclass: top".PHP_EOL.PHP_EOL;
415 ++$entry;
416 }
417 
418 echo PHP_EOL;
419 echo PHP_EOL;
420 echo PHP_EOL;
421 echo PHP_EOL;
422 echo PHP_EOL;
423 
424 
425 
426 
427 /****************************************************************************
428  *
429  * HTML TABLE
430  *
431  * ***************************************************************************/
432 echo "/*".PHP_EOL;
433 echo "This is the HTML table to be copy and pasted into the login.php file".PHP_EOL;
434 
435 echo PHP_EOL;
436 echo PHP_EOL;
437 
438 
440  $ccc = 0;
441  echo "<table>".PHP_EOL;
442  echo "<tr><th>FullName</th><th>login</th><th>pass</th><th>group</th></tr>".PHP_EOL;
443  foreach($users as $user){
444  if($ccc%2 == 0){
445  echo " <tr style='background-color:#F1F1F1'>".PHP_EOL;
446  }else{
447  echo " <tr>".PHP_EOL;
448  }
449  echo " <td>{$user["name"]}</td>".PHP_EOL;
450  echo " <td><b>{$user["uid"]}</b> ({$user["numid"]})</td>".PHP_EOL;
451  echo " <td>{$user["pass"]}</td>".PHP_EOL;
452  echo " <td>{$groups[$user["group"]]} ({$user["group"]})</td>".PHP_EOL;
453  echo " </tr>".PHP_EOL;
454  ++$ccc;
455  }
456 
457  echo "</table>".PHP_EOL;
458 }else{
459  $ccc = 0;
460  echo "<table>".PHP_EOL;
461  echo "<tr><th>FullName</th><th>login</th><th>pass</th><th>group</th></tr>".PHP_EOL;
462  foreach($users as $user){
463  if($ccc%2 == 0){
464  echo " <tr style='background-color:#F1F1F1'>".PHP_EOL;
465  }else{
466  echo " <tr>".PHP_EOL;
467  }
468  echo " <td> <a href='#' onClick='login(\"{$user["uid"]}\",\"{$user["pass"]}\");'> {$user["name"]} </a> </td>".PHP_EOL;
469  echo " <td><b>{$user["uid"]}</b> ({$user["numid"]})</td>".PHP_EOL;
470  echo " <td>{$user["pass"]}</td>".PHP_EOL;
471  echo " <td>{$groups[$user["group"]]} ({$user["group"]})</td>".PHP_EOL;
472  echo " </tr>".PHP_EOL;
473  ++$ccc;
474  }
475 
476  echo "</table>".PHP_EOL;
477 }
478 echo PHP_EOL;
479 echo PHP_EOL;
480 
481 echo "*/";
482 
483 ?>
484