X-Git-Url: http://git.onelab.eu/?p=pl_sshd.git;a=blobdiff_plain;f=auto.pl_sshd.py;fp=auto.pl_sshd.py;h=0000000000000000000000000000000000000000;hp=f30c3c5cae1a713f655d7934663f71c1f8e61843;hb=2852b4ea661094c2c80883d22122c9d70bf72cc0;hpb=8e4f5a60c50733819fbc452b224040233429264d diff --git a/auto.pl_sshd.py b/auto.pl_sshd.py deleted file mode 100644 index f30c3c5..0000000 --- a/auto.pl_sshd.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/python -# -# Copyright 2005 Princeton University -# -# autofs(5) executable map for /var/pl_sshd/keys/ -# - -import cStringIO -import os -import pwd -import pycurl -import sys - - - -def abort(msg): - print >>sys.stderr, msg - sys.exit(1) - -if len(sys.argv) != 2: - print >>sys.stderr, "usage:\n %s " % sys.argv[0] - sys.exit(1) - -slice = sys.argv[1] -try: - (name, passwd, uid, gid, comment, home, sh) = pwd.getpwnam(slice) -except KeyError, ex: - abort("no such user: " + slice) - -result = "--bind,-r :" - -sshdir = home + "/.ssh" -keyfile = sshdir + "/authorized_keys" - -# check whether authorized_keys exists in the real home dir -if os.access(keyfile, os.R_OK): - # yes - use it - result += sshdir -else: - # no - look in the vserver - # try to get keys from KeySensor - sys.stderr.write("Retrieving SSH keys for %s... " % slice) - pycurl.global_init(pycurl.GLOBAL_ALL) - c = pycurl.Curl() - c.setopt(pycurl.URL, "http://localhost:815/keys?slice=" + slice) - out = cStringIO.StringIO() - c.setopt(pycurl.WRITEFUNCTION, out.write) - c.setopt(pycurl.NOSIGNAL, 1) - c.setopt(pycurl.TIMEOUT, 1) - try: - c.perform() - rc = c.getinfo(pycurl.HTTP_CODE) - if rc != 200: - abort("HTTP error: " + str(rc)) - except pycurl.error, ex: - if ex[0] == 28: # XXX - pycurl doesn't define error constants - abort("timed-out") - abort("curl error: " + ex[1]) - keydata = out.getvalue() - - # try to update keyfile - vsbase = "/vservers/" + slice - os.chroot(vsbase) - os.setgid(gid) - os.setuid(uid) - if not os.path.isdir(sshdir): - os.mkdir(sshdir, 0700) - - f = file(keyfile, "w") - f.write(keydata) - f.close() - os.chmod(keyfile, 0600) - result += vsbase + sshdir - print >>sys.stderr, "succeeded." - -print result