$dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
|| exit $MR_DBMS_ERR;
-$sth = $dbh->prepare("SELECT login, first, middle, last FROM users " .
- "WHERE status = 1");
+$sth0 = $dbh->prepare("SELECT u.login, u.first, u.middle, u.last, " .
+ "u.clearid, u.unix_uid, u.shell FROM users u " .
+ "WHERE (u.status = 1 OR u.status = 9)")
+ || exit $MR_DBMS_ERR;
+
-$sth->execute;
+$sth0->execute;
open(OUT, ">$outdir/users") || exit $MR_OCONFIG;
-while(($login, $first, $middle, $last, $clearid) = $sth->fetchrow_array) {
+while(($login, $first, $middle, $last, $clearid, $unix_uid,
+ $shell) = $sth0->fetchrow_array) {
$row = "dn: uid=$login,ou=users,dc=mit,dc=edu\n";
$row .= "objectclass: top\n";
$row .= "objectclass: person\n";
$row .= "krb5PrincipalName: $login\@ATHENA.MIT.EDU\n";
$row .= "userPassword: {KERBEROS}$login\@ATHENA.MIT.EDU\n";
$row .= "employeeNumber: $clearid\n";
+ $row .= "loginShell: $shell\n";
+ $row .= "uidNumber: $unix_uid\n";
+ $row .= "gidNumber: 101\n";
if($last) {
$sn = "sn: $last\n";
$givenName .= "\n";
}
+ $sth = $dbh->prepare("SELECT f.type, f.name FROM filesys f " .
+ "WHERE f.label = '$login'") || exit $MR_DBMS_ERR;
+
+ $sth->execute;
+
+ if(($f_type, $f_name) = $sth->fetchrow_array) {
+ if($f_type eq "AFS") {
+ $row .= "homeDirectory: $f_name\n";
+ }
+ }
+
$row .= $sn;
$row .= $cn;
$row .= $givenName;
open(OUT, ">$outdir/groups") || exit $MR_OCONFIG;
-$sth0 = $dbh->prepare("SELECT DISTINCT l.name FROM list l, imembers i " .
- "WHERE i.member_type = 'LIST' " .
- "AND i.member_id = l.list_id " .
- "AND l.grouplist = 1 " .
- "ORDER BY l.name") || exit $MR_DBMS_ERR;
+$sth0 = $dbh->prepare("SELECT name FROM list WHERE active = 1 " .
+ "AND grouplist = 1")
+ || exit $MR_DBMS_ERR;
+
$sth0->execute;
while (($name) = $sth0->fetchrow_array) {
- $sth = $dbh->prepare("SELECT UNIQUE i.member_id " .
- "FROM imembers i, list l, users u " .
- "WHERE l.name = " . $dbh->quote($name) .
- "AND i.list_id = l.list_id " .
- "AND i.member_id = u.users_id " .
- "AND u.status = 1 " .
- "AND member_type = 'USER'")
- || exit $MR_DBMS_ERR;
+ $sth = $dbh->prepare("SELECT UNIQUE u.login FROM users u, imembers i, " .
+ "list l WHERE l.name = " . $dbh->quote($name) .
+ "AND l.list_id = i.list_id " .
+ "AND i.member_type = 'USER' " .
+ "AND (u.status = 1 OR u.status = 9) " .
+ "AND i.member_id = u.users_id") || exit $MR_DBMS_ERR;
$sth->execute;
$members = 0;
- while (($id) = $sth->fetchrow_array) {
- if(!$members) {
- $row = "dn: cn=$name,ou=groups,dc=mit,dc=edu\n";
- $row .= "objectClass: top\n";
- $row .= "objectClass: groupOfUniqueNames\n";
- $row .= "cn: $name\n";
- $row =~ s/\0//g;
- print OUT $row;
-
- $members = 1;
- }
-
- ($member) = $dbh->selectrow_array("SELECT login FROM users " .
- "WHERE users_id = " .
- $dbh->quote($id)) ||
- exit $MR_DBMS_ERR;
-
- $row = "uniqueMember: uid=$member,ou=users,dc=mit,dc=edu\n";
- $row =~ s/\0//g;
- print OUT $row;
+ while (($member) = $sth->fetchrow_array) {
+ if(!$members) {
+ $row = "dn: cn=$name,ou=groups,dc=mit,dc=edu\n";
+ $row .= "objectClass: top\n";
+ $row .= "objectClass: groupOfUniqueNames\n";
+ $row .= "cn: $name\n";
+ $row =~ s/\0//g;
+ print OUT $row;
+
+ $members = 1;
+ }
+
+ $row = "uniqueMember: uid=$member,ou=users,dc=mit,dc=edu\n";
+ $row =~ s/\0//g;
+ print OUT $row;
}
print OUT "\n";