Add hopper to the appropriate config lines
[hcoop/zz_old/config/exim4-hopper.git] / get-token
index 3a28140..b7b5e02 100755 (executable)
--- a/get-token
+++ b/get-token
 
 REALUSER=$(whoami)
 USER=$1
-LOGFILE=/tmp/exim4/get-token-log.$USER
+LOGFILE=/tmp/exim4/weird-error.log
 
-if [ "$REALUSER" = "root" ]; then
-    if [ -n "$2" ]; then
+if test "$REALUSER" = "root"; then
+    if test "$2" = "norecurse"; then
         echo "Error: running as root even after trying to change to $USER" \
-            > $LOGFILE
+            >> $LOGFILE
         exit 1
     fi
 
     # Decide whether the user exists: getent returns 0 error code if so
     getent passwd "$USER" >/dev/null
-    if [ $? -ne 0 ]; then
-        echo "$USER is not a local user, so ignoring them"
+    if test $? -ne 0; then
+        echo "$USER is not a local user, so ignoring them" \
+            >> $LOGFILE
         exit 1
     else
+        USER=$(getent passwd "$1" | cut -d':' -f 1)
         exec su $USER -c "$0 $1 norecurse"
     fi
 fi
 
+# Make sure USER exists, and resolve UIDs to a login name
+USER=$(getent passwd "$USER" | cut -d':' -f 1)
+LOGFILE=/tmp/exim4/get-token-log.$USER
+
+if test -z "$USER"; then
+    echo "$USER is not a local user, so ignoring them" \
+        >> /tmp/exim4/weird-error.log
+    exit 1
+fi
+
 # fuse stdin and stderr
 exec 2>&1
 
@@ -41,6 +53,12 @@ exec >& $LOGFILE
 # print name of user
 echo "Running as user $REALUSER"
 
+# debugging output
+if test "$2" = "debug"; then
+    shift; shift
+    echo "Debugging output: $*"
+fi
+
 # set the credentials cache
 export KRB5CCNAME=FILE:/tmp/exim4/krb5cc_$USER.email