Merge branch 'master' into 6572-doc-copy-pipeline
[arvados.git] / sdk / pam / arvados_pam / __init__.py
1 import sys
2 sys.argv=['']
3
4 from . import auth_event
5
6 def pam_sm_authenticate(pamh, flags, argv):
7     config = {}
8     config['arvados_api_host'] = argv[1]
9     config['virtual_machine_hostname'] = argv[2]
10     if len(argv) > 3:
11         for k in argv[3:]:
12             config[k] = True
13
14     try:
15         username = pamh.get_user(None)
16     except pamh.exception, e:
17         return e.pam_result
18
19     if not username:
20         return pamh.PAM_USER_UNKNOWN
21
22     try:
23         prompt = '' if config.get('noprompt') else 'Arvados API token: '
24         token = pamh.conversation(pamh.Message(pamh.PAM_PROMPT_ECHO_OFF, prompt)).resp
25     except pamh.exception as e:
26         return e.pam_result
27
28     if auth_event.AuthEvent(
29             config=config,
30             service=pamh.service,
31             client_host=pamh.rhost,
32             username=username,
33             token=token).can_login():
34         return pamh.PAM_SUCCESS
35     else:
36         return pamh.PAM_AUTH_ERR
37
38 def pam_sm_setcred(pamh, flags, argv):
39     return pamh.PAM_SUCCESS
40
41 def pam_sm_acct_mgmt(pamh, flags, argv):
42     return pamh.PAM_SUCCESS
43
44 def pam_sm_open_session(pamh, flags, argv):
45     return pamh.PAM_SUCCESS
46
47 def pam_sm_close_session(pamh, flags, argv):
48     return pamh.PAM_SUCCESS
49
50 def pam_sm_chauthtok(pamh, flags, argv):
51     return pamh.PAM_SUCCESS