]> andersk Git - moira.git/blob - gen/events.gen
Don't generate hesiod pobox entries for users with a potype of "NONE".
[moira.git] / gen / events.gen
1 #!/moira/bin/perl -Tw
2
3 # $Id$
4
5 # The following exit codes are defined and MUST BE CONSISTENT with the
6 # error codes the library uses:
7 $MR_DBMS_ERR = 47836421;
8 $MR_OCONFIG = 47836460;
9
10 $outfile = '/moira/dcm/events.out';
11
12 use DBI;
13
14 $dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
15   || exit $MR_DBMS_ERR;
16
17 $sth = $dbh->prepare("SELECT name FROM list WHERE maillist = 1 AND active = 1")
18     || exit $MR_DBMS_ERR;
19
20 $sth->execute || exit $MR_DBMS_ERR;
21
22 umask 022;
23 open(OUT, ">$outfile") || exit $MR_OCONFIG;
24
25 while (($name) = $sth->fetchrow_array) {
26
27     $sth2 = $dbh->prepare("SELECT UNIQUE u.login FROM users u, imembers i, " .
28                           "list l WHERE l.name = " . $dbh->quote($name) .
29                           "AND l.list_id = i.list_id " .
30                           "AND i.member_type = 'USER' " .
31                           "AND i.member_id = u.users_id") || exit $MR_DBMS_ERR;
32
33     $sth2->execute || exit $MR_DBMS_ERR;
34                  
35     $row = "$name:";
36     $row =~ s/\0//g;
37     print OUT $row;
38     $maybecomma = "";
39
40     while (($member) = $sth2->fetchrow_array) {
41         $row = "$maybecomma$member";
42         $row =~ s/\0//g;
43         print OUT $row;
44         $maybecomma = ",";
45     }
46
47     $sth3 = $dbh->prepare("SELECT UNIQUE s.string FROM strings s, " .
48                           "imembers i, list l WHERE l.name = " . 
49                           $dbh->quote($name) .
50                           "AND l.list_id = i.list_id " .
51                           "AND i.member_type = 'KERBEROS' " .
52                           "AND i.member_id = s.string_id") || exit $MR_DBMS_ERR;
53     $sth3->execute || exit $MR_DBMS_ERR;
54
55     while (($member) = $sth3->fetchrow_array) {
56         # If principal is @ATHENA.MIT.EDU, strip realm, otherwise skip.
57         if ($member =~ /\@ATHENA.MIT.EDU/) {
58             $member =~ s/\@ATHENA.MIT.EDU//;
59         } else {
60             next;
61         }
62         $row = "$maybecomma$member";
63         $row =~ s/\0//g;
64         print OUT $row;
65         $maybecomma = ",";
66     }
67
68     $row = "\n";
69     $row =~ s/\0//g;
70     print OUT $row;
71 }
72
73 close(OUT);
74 $dbh->disconnect;
75
76 exit 0;
This page took 0.228856 seconds and 5 git commands to generate.