#!/usr/bin/env bash

set -e

eval `ultrapossum-config init`
tmp=`tempfile`
trap "/bin/rm -f $tmp; eval `ultrapossum-config term`" 0

#keygen <cmd>
keygen() {
  if ! test -f "$SSHKEYDIR/$1/id_rsa"; then
    install -d $SSHKEYDIR/$1
    ssh-keygen -t rsa -f $SSHKEYDIR/$1/id_rsa -N ""
  fi
}

auth() {
  add_startmark "##" "SERVER" > $tmp
  echo -n "Registering ssh permissions..." 1>&2
  /bin/ls $SSHKEYDIR | while read cmd
  do
    if test -f $SSHKEYDIR/$cmd/id_rsa.pub; then
      echo -n " $cmd" 1>&2
      echo "command=\"$MODULEDIR/server/$cmd\" `cat $SSHKEYDIR/$cmd/id_rsa.pub`" >> $tmp
    fi
  done
  echo "." 1>&2
  add_endmark "##" "SERVER" >> $tmp
  add_end_vaconf $HOME/.ssh/authorized_keys $tmp "SERVER"
}

unauth() {
  strip_vaconf $HOME/.ssh/authorized_keys "SERVER"
}

# cmd <host> <cmd>
cmd() {
  echo "$HOST" | ssh -T -i $SSHKEYDIR/$2/id_rsa $1
}

case "x$1" in
  xkeygen)
    install -m 750 -d $SSHKEYDIR
    if test "x$2" = "x"; then
      echo "Usage: $0 keygen <cmd>" 1>&2
      exit 1
    fi
    keygen "$2"
    ;;
  xauth)
    auth
    ;;
  xunauth)
    unauth
    ;;
  xcmd)
    if test "x$3" = "x"; then
      echo "Usage: $0 cmd <host> <cmd>" 1>&2
      exit 1
    fi
    cmd "$2" "$3"
    ;;
  *)
    echo "Unknown argument: $1" 1>&2
    exit 1
    ;;
esac

