Umfragen
Main Page
Related Pages
Data Structures
Files
File List
Globals
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
439
if
( !
$table_EnablejavaScript
){
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
demo
testing
testUsers_LDAP.php
Generated on Sat Nov 30 2013 14:28:44 for Umfragen by
1.8.1.2