Initial import to Tizen
[profile/ivi/python-PyPAM.git] / examples / pamtest.py
1 #!/usr/bin/env python
2
3 import sys
4 import PAM
5 from getpass import getpass
6
7 def pam_conv(auth, query_list):
8
9     resp = []
10     
11     for i in range(len(query_list)):
12         query, type = query_list[i]
13         if type == PAM.PAM_PROMPT_ECHO_ON:
14             val = raw_input(query)
15             resp.append((val, 0))
16         elif type == PAM.PAM_PROMPT_ECHO_OFF:
17             val = getpass(query)
18             resp.append((val, 0))
19         elif type == PAM.PAM_PROMPT_ERROR_MSG or type == PAM.PAM_PROMPT_TEXT_INFO:
20             print query
21             resp.append(('', 0));
22         else:
23             return None
24
25     return resp
26
27 service = 'passwd'
28
29 if len(sys.argv) == 2:
30     user = sys.argv[1]
31 else:
32     user = None
33
34 auth = PAM.pam()
35 auth.start(service)
36
37 print auth
38
39 if user != None:
40     auth.set_item(PAM.PAM_USER, user)
41
42 auth.set_item(PAM.PAM_CONV, pam_conv)
43
44 auth.set_userdata("testing user data")
45
46 try:
47     auth.authenticate()
48     auth.acct_mgmt()
49 except PAM.error, (resp, code):
50     print 'Go away! (%s)' % resp
51 except:
52     print 'Internal error'
53 else:
54     print 'Good to go!'