diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/cred/pamauth.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/cred/pamauth.py | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/cred/pamauth.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/cred/pamauth.py deleted file mode 100755 index 12357dfb..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/cred/pamauth.py +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -Support for asynchronously authenticating using PAM. -""" - - -import PAM - -import getpass, threading, os - -from twisted.internet import threads, defer - -def pamAuthenticateThread(service, user, conv): - def _conv(items): - from twisted.internet import reactor - try: - d = conv(items) - except: - import traceback - traceback.print_exc() - return - ev = threading.Event() - def cb(r): - ev.r = (1, r) - ev.set() - def eb(e): - ev.r = (0, e) - ev.set() - reactor.callFromThread(d.addCallbacks, cb, eb) - ev.wait() - done = ev.r - if done[0]: - return done[1] - else: - raise done[1].type, done[1].value - - return callIntoPAM(service, user, _conv) - -def callIntoPAM(service, user, conv): - """A testing hook. - """ - pam = PAM.pam() - pam.start(service) - pam.set_item(PAM.PAM_USER, user) - pam.set_item(PAM.PAM_CONV, conv) - gid = os.getegid() - uid = os.geteuid() - os.setegid(0) - os.seteuid(0) - try: - pam.authenticate() # these will raise - pam.acct_mgmt() - return 1 - finally: - os.setegid(gid) - os.seteuid(uid) - -def defConv(items): - resp = [] - for i in range(len(items)): - message, kind = items[i] - if kind == 1: # password - p = getpass.getpass(message) - resp.append((p, 0)) - elif kind == 2: # text - p = raw_input(message) - resp.append((p, 0)) - elif kind in (3,4): - print message - resp.append(("", 0)) - else: - return defer.fail('foo') - d = defer.succeed(resp) - return d - -def pamAuthenticate(service, user, conv): - return threads.deferToThread(pamAuthenticateThread, service, user, conv) |