Update of setuid cleanup code.
[mspang/pyceo.git] / bin / ceoquery
1 #!/usr/bin/python2.4 --
2 """
3 ceoquery - a script to lookup member and account information
4 """
5 import os, sys
6
7 safe_environment = ['LOGNAME', 'USERNAME', 'USER', 'HOME', 'TERM', 'LANG'
8     'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_MESSAGES', 'LC_MONETARY',
9     'LC_NUMERIC', 'LC_TIME', 'UID', 'GID', 'SSH_CONNECTION', 'SSH_AUTH_SOCK',
10     'SSH_CLIENT']
11
12 for key in os.environ.keys():
13     if key not in safe_environment:
14         del os.environ[key]
15
16 os.environ['PATH'] = '/usr/sbin:/usr/bin:/sbin:/bin'
17
18 for pathent in sys.path[:]:
19     if not pathent.find('/usr') == 0:
20         sys.path.remove(pathent)
21
22 euid = os.geteuid()
23 egid = os.getegid()
24 try:
25     os.setreuid(euid, euid)
26     os.setregid(egid, egid)
27 except OSError, e:
28     print str(e)
29     sys.exit(1)
30
31 from csc.adm import members, terms
32
33 try:
34     members.connect()
35 except Exception, e:
36     print "ceoquery: %s" % e
37     sys.exit(1)
38
39 def usage():
40     print "Usage: ceoquery memberlist|booklist|allmembers|allusers|termusers"
41
42 if len(sys.argv) < 2:
43     usage()
44
45 elif sys.argv[1] == 'memberlist':
46     
47     current_term = terms.current()
48     members = members.list_term(current_term)
49     for member in members:
50         print "%(memberid)s|%(name)s|%(program)s|%(userid)s" % member
51
52 elif sys.argv[1] == 'allmembers':
53
54     members = members.list_all()
55     for member in members:
56         print "%(memberid)s|%(name)s|%(program)s|%(userid)s" % member
57
58 elif sys.argv[1] == 'booklist':
59
60     pass
61
62 elif sys.argv[1] == 'allusers':
63
64     members = members.list_all()
65     for member in members:
66         if member['userid']:
67             print member['userid']
68
69 elif sys.argv[1] == 'termusers':
70
71     if len(sys.argv) > 2:
72         term = sys.argv[2]
73     else:
74         term = terms.current()
75
76     members = members.list_term(term)
77     for member in members:
78         if member['userid']:
79             print member['userid']
80
81 else:
82
83     usage()
84