bump release number
[pl_sshd.git] / auto.pl_sshd
1 #!/bin/bash
2 #
3 # autofs(5) executable map for /var/pl_sshd/keys/
4 #
5 # Mark Huang <mlhuang@cs.princeton.edu>
6 # Copyright (C) 2004 The Trustees of Princeton University
7 #
8 # $Id: auto.pl_sshd,v 1.3 2004/10/04 18:43:16 mlh-pl_sshd Exp $
9 #
10
11 usage()
12 {
13     echo "usage: $0 slice" >/dev/stderr
14     exit 1
15 }
16
17 [ -z "$1" ] && usage
18 slice="$1"
19
20 # Try real home directory first
21 eval home="~$slice"
22 if [ -f "$home/.ssh/authorized_keys" ] ; then
23     echo "--bind,-r :$home/.ssh"
24     exit 0
25 fi
26
27 # Try virtual server home directory next
28 vhome=/vservers/$slice/$(su - $slice -c "echo \$HOME")
29
30 echo -n "Retrieving SSH keys for $slice..." >/dev/stderr
31
32 # Execute this script as the slice user. Remember that the script
33 # 1. Must be executable by any shell.
34 # 2. Must not write to stdout.
35 # 3. Must return a non-zero exit code if an error occurs.
36 # 4. May be run by a malicious shell.
37
38 su - $slice >/dev/stderr <<EOF
39 install -d -m 700 \$HOME/.ssh/
40 touch \$HOME/.ssh/authorized_keys
41 chmod 600 \$HOME/.ssh/authorized_keys
42
43 curl -s \
44     --fail \
45     --connect-timeout 30 \
46     --max-time 60 \
47     --output \$HOME/.ssh/authorized_keys \
48     "http://localhost:815/keys?slice=$slice"
49 EOF
50
51 rc=$?
52 if [ $rc -ne 0 ] ; then
53     echo "failed with error $rc." >/dev/stderr
54     exit $rc
55 fi
56
57 echo "succeeded." >/dev/stderr
58
59 echo "--bind,-r :$vhome/.ssh"
60 exit 0