#!/bin/bash
#
# Copyright 2014 Red Hat, Inc.
#
# NAME
#     lab-ssh - setup script for RH124 SSH lab
#
# SYNOPSIS
#     lab-ssh setup
#
# DESCRIPTION
#     This script is the lab setup script for the RH124 SSH lab.
#     It can be executed on both desktopX and serverX.
#
# CHANGELOG
#   * Tue Apr 29 2014 George Hacker <ghacker@redhat.com>
#   - original code

PATH=/usr/bin:/bin:/usr/sbin:/sbin

# Initialize some variables
lab_user=visitor
cmd=""
MYHOST=""
DEBUG='true'
RUN_AS_ROOT='true'

# Source library of functions
source /usr/local/bin/labtool.shlib
trap on_exit EXIT

# Additional functions for this shell script
function print_usage {
  local problem_name=$(basename $0 | sed -e 's/^lab-//')
  cat << EOF
This script controls the setup of the SSH lab.
Usage: lab ${problem_name} COMMAND
       lab ${problem_name} -h|--help
COMMAND is one of:
    setup - perform any setup steps for this lab on this machine
EOF
}

function lab_setup {
  VMNAME=$1
  case $VMNAME in
    desktop | server)
      # If not found, add lab user account on desktopX.
      if ! id ${lab_user} &> /dev/null
      then
	useradd ${lab_user} &> /dev/null
	echo 'password' | passwd --stdin ${lab_user} &> /dev/null
      fi
      ;;
    *)
      # Should never get here, but what the hey....
      print_FAIL && echo "The setup script needs to be run on desktop or server"
      ;;
  esac
}

# Main area

# Check if to be run as root (must do this first)
if [[ "${RUN_AS_ROOT}" == 'true' ]] && [[ "${EUID}" -gt "0" ]] ; then
  if [[ -x /usr/bin/sudo ]] ; then
    ${SUDO:-sudo} $0 "$@"
    exit
  else
    # Fail out if not running as root
    check_root
  fi
fi

# Process command line
# Parse input
case $1 in
  setup|grade)
    cmd=$1
    ;;
  -h|--help)
    print_usage
    exit 0
    ;;
  *)
    echo Bad option $1
    print_usage
    exit 1
    ;;
esac
# Validation
[[ -z "${cmd}" ]] && debug "Missing command" && print_usage && exit 1

# Get local system information
get_X

# Branch based on short (without number) hostname
case "${MYHOST}" in
  desktop|server)
    lab_${cmd} ${MYHOST}
    ;;
  *)
    debug "Bad or missing hostname - ${MYHOST}"
    debug "This command needs to be run on desktop or server"
    exit 3
    ;;
esac
