#!/bin/bash
declare CURRENT_PTS=$(tty | sed -e s-/--g -e s/dev//g)
declare CURRENT_UID=$(id -u)
declare CURRENT_UNAME=$(id -un)
declare -a MPIDS
MODE=$1
MPIDS=( $(ls /var/run/vyatta/monitor/*.pid 2> /dev/null ) )

for pidfile in "${MPIDS[@]}"; do
  pid=$(<$pidfile)
  procname=$(cat /proc/$pid/cmdline 2>/dev/null)
  if [[ "$procname" =~ "tail" ]] ; then
    # Clean up tail processes that didn't die on logout
    pts=${pidfile##*-pts}
    pts=${pts%%.pid}
    # If the process isn't attaced to the current PTY
    if [[ "pts$pts" != "$CURRENT_PTS" ]]; then
      # If I owned this process
      if cat /proc/$pid/status | grep -q "Uid:.*$CURRENT_UID" ; then 
        # If I'm no longer on the pty that process started on
        if ! who  | grep -q "$CURRENT_UNAME.*pts/$pts" ; then 
          kill $pid
          rm -rf $pidfile
        fi
      fi
    elif [[ "$MODE" == "LOGOUT" ]]; then
      # on logout kill all monitors
      kill $pid
      rm -rf $pidfile
    fi
  else 
    # Clean up killed tail processes
    rm -rf $pidfile
  fi
done