X-Git-Url: https://snippets.scripts.mit.edu/gitweb.cgi/Scripts/git/.git/blobdiff_plain/6650ee780daad6ce2a35cf8ca8d308b7411b08d8..20e2c5bc19c19624fc906a06cca82b4e5ef8c5a3:/__init__.py diff --git a/__init__.py b/__init__.py index 62ec848..8f9356d 100644 --- a/__init__.py +++ b/__init__.py @@ -1,3 +1,4 @@ +import os import subprocess import ldap import ldap.filter @@ -29,6 +30,32 @@ def UrlOrAfsValidator(value): except ValidationError: raise ValidationError('Provide a valid URL or AFS path') +def pag_check_helper(fn, args, aklog=False, ccname=None, **kwargs): + if 'executable' in kwargs: + raise ValueError('"executable" not supported with pag_check_*') + + env = None + if 'env' in kwargs: + env = kwargs['env'] + del kwargs['env'] + if ccname: + if env is not None: + env = dict(env) + else: + env = dict(os.environ) + env['KRB5CCNAME'] = ccname + + pagsh_cmd = 'exec "$@"' + if aklog: pagsh_cmd = "aklog && " + pagsh_cmd + args = ['pagsh', '-c', pagsh_cmd, 'exec', ] + args + + return fn(args, env=env, **kwargs) + +def pag_check_call(args, **kwargs): + return pag_check_helper(subprocess.check_call, args, **kwargs) +def pag_check_output(args, **kwargs): + return pag_check_helper(subprocess.check_output, args, **kwargs) + class ScriptsRemoteUserMiddleware(RemoteUserMiddleware): header = 'SSL_CLIENT_S_DN_Email'