16
|
1 /*
|
|
2
|
|
3 Copyright (c) 2004 Carl Byington - 510 Software Group, released under
|
|
4 the GPL version 2 or any later version at your choice available at
|
|
5 http://www.fsf.org/licenses/gpl.txt
|
|
6
|
|
7 */
|
|
8
|
|
9 #include <stdio.h>
|
|
10 #include <iostream>
|
|
11 //#include <fstream>
|
|
12 #include <unistd.h>
|
|
13
|
|
14 char *ldap_base = NULL;
|
|
15 char *ldap_org = NULL;
|
|
16 char *ldap_class = NULL;
|
|
17
|
|
18 using namespace std;
|
|
19
|
|
20 int main(int argc, char** argv) {
|
|
21 char c;
|
|
22 char *temp;
|
|
23 while ((c = getopt(argc, argv, "b:c:"))!= -1) {
|
|
24 switch (c) {
|
|
25 case 'b':
|
|
26 ldap_base = optarg;
|
|
27 temp = strchr(ldap_base, ',');
|
|
28 if (temp) {
|
|
29 *temp = '\0';
|
|
30 ldap_org = strdup(ldap_base);
|
|
31 *temp = ',';
|
|
32 }
|
|
33 break;
|
|
34 case 'c':
|
|
35 ldap_class = optarg;
|
|
36 break;
|
|
37 default:
|
|
38 break;
|
|
39 }
|
|
40 }
|
|
41
|
|
42 const int LINE_SIZE = 2000;
|
|
43 char line[LINE_SIZE];
|
|
44 while (!cin.eof()) {
|
|
45 cin.getline(line, LINE_SIZE);
|
|
46 int n = strlen(line);
|
|
47 if (!n) continue;
|
|
48 char *f = line + 6; // skip alias keyword
|
|
49 char *e;
|
|
50 if (*f == '"') {
|
|
51 f++;
|
|
52 e = strchr(f, '"');
|
|
53 }
|
|
54 else {
|
|
55 e = strchr(f, ' ');
|
|
56 }
|
|
57 if (!e) continue;
|
|
58 *e = '\0';
|
|
59 char *m = e+1;
|
|
60 while (*m == ' ') m++;
|
|
61 if (*m != '\0') {
|
|
62 char cn[1000];
|
|
63 snprintf(cn, sizeof(cn), "email %s", f);
|
|
64 printf("dn: cn=%s, %s\n", cn, ldap_base);
|
|
65 printf("cn: %s\n", cn);
|
|
66 printf("sn: %s\n", f);
|
|
67 printf("mail: %s\n", m);
|
|
68 printf("objectClass: %s\n\n", ldap_class);
|
|
69 }
|
|
70 }
|
|
71 }
|