7 # The following exit codes are defined and MUST BE CONSISTENT with the
8 # error codes the library uses:
9 $MR_DBMS_ERR = 47836421;
10 $MR_OCONFIG = 47836460;
12 $ENV{PATH} = "/bin:/usr/bin:/sbin:/usr/sbin";
14 $outdir = '/moira/dcm/ldap';
15 $outfile = '/moira/dcm/ldap.out';
18 $dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
21 $sth0 = $dbh->prepare("SELECT u.login, u.first, u.middle, u.last, " .
22 "u.clearid, u.unix_uid, u.shell FROM users u " .
23 "WHERE (u.status = 1 OR u.status = 9)")
29 open(OUT, ">$outdir/users") || exit $MR_OCONFIG;
31 while(($login, $first, $middle, $last, $clearid, $unix_uid,
32 $shell) = $sth0->fetchrow_array) {
33 $row = "dn: uid=$login,ou=users,dc=mit,dc=edu\n";
34 $row .= "objectclass: top\n";
35 $row .= "objectclass: person\n";
36 $row .= "objectclass: organizationalperson\n";
37 $row .= "objectclass: inetorgperson\n";
38 $row .= "objectClass: krb5Principal\n";
39 $row .= "uid: $login\n";
40 $row .= "krb5PrincipalName: $login\@ATHENA.MIT.EDU\n";
41 $row .= "userPassword: {KERBEROS}$login\@ATHENA.MIT.EDU\n";
42 $row .= "employeeNumber: $clearid\n";
43 $row .= "loginShell: $shell\n";
44 $row .= "uidNumber: $unix_uid\n";
45 $row .= "gidNumber: 101\n";
56 $givenName = "givenName: $first";
60 $givenName = "givenName:";
65 $givenName .= " $middle\n";
72 $sth = $dbh->prepare("SELECT f.type, f.name FROM filesys f " .
73 "WHERE f.label = '$login'") || exit $MR_DBMS_ERR;
77 if(($f_type, $f_name) = $sth->fetchrow_array) {
78 if($f_type eq "AFS") {
79 $row .= "homeDirectory: $f_name\n";
87 $row .= "description: user\n\n";
94 open(OUT, ">$outdir/groups") || exit $MR_OCONFIG;
96 $sth0 = $dbh->prepare("SELECT name FROM list WHERE active = 1 " .
102 while (($name) = $sth0->fetchrow_array) {
103 $sth = $dbh->prepare("SELECT UNIQUE u.login FROM users u, imembers i, " .
104 "list l WHERE l.name = " . $dbh->quote($name) .
105 "AND l.list_id = i.list_id " .
106 "AND i.member_type = 'USER' " .
107 "AND (u.status = 1 OR u.status = 9) " .
108 "AND i.member_id = u.users_id") || exit $MR_DBMS_ERR;
112 while (($member) = $sth->fetchrow_array) {
114 $row = "dn: cn=$name,ou=groups,dc=mit,dc=edu\n";
115 $row .= "objectClass: top\n";
116 $row .= "objectClass: groupOfUniqueNames\n";
117 $row .= "cn: $name\n";
124 $row = "uniqueMember: uid=$member,ou=users,dc=mit,dc=edu\n";
133 system("cd $outdir && tar cf $outfile .") == 0 || exit $MR_OCONFIG;