#!/usr/bin/bash

#set -x

user=$SUDO_USER
uid=$(id -u $user)
oca_user=""
oca_uid=""
cli_opts=""
journal_ctl="/usr/bin/journalctl"

while getopts ":hflru:" opt; do
  case $opt in
    f)
      cli_opts="$cli_opts -f"
      ;;
    l)
      cli_opts="$cli_opts -l"
      ;;
    r)
      cli_opts="$cli_opts -r"
      ;;
    u)
      oca_user="${OPTARG}"
      oca_uid=$(id -u $oca_user)
      if [ ! $? -eq 0 ]; then
        echo "invalid user"
        exit 1
      fi
      ;;
    h)
      echo "Usage: ng-php-journalctl -f -l -r -u oca_user_id (e.g. oca_test)"
      exit 0
      ;;
    \?)
      echo "Invalid option"
      echo "Usage: ng-php-journalctl -f -l -r -u oca_user_id (e.g. oca_test)"
      exit 1
      ;;
  esac
done

if [ "$user" == "root" ]; then
  if [ -n "$oca_user" ]; then
    $journal_ctl _EXE=/bin/php _UID=$oca_uid + _EXE=/sbin/php-fpm _UID=$oca_uid + SYSLOG_IDENTIFIER=php _UID=$oca_uid + _COMM=php _UID=$oca_uid + _COMM=php-fpm _UID=$oca_uid --priority=5 $cli_opts 
  else
    $journal_ctl _EXE=/bin/php + _EXE=/sbin/php-fpm + SYSLOG_IDENTIFIER=php + _COMM=php + _COMM=php-fpm --priority=5 $cli_opts
  fi
elif [ "$user" == "oca" ]; then
  if [ -n "$oca_user" ]; then
    if [ ${oca_user:0:4} == "oca_" ]; then
      $journal_ctl _EXE=/bin/php _UID=$oca_uid + _EXE=/sbin/php-fpm _UID=$oca_uid + SYSLOG_IDENTIFIER=php _UID=$oca_uid + _COMM=php _UID=$oca_uid + _COMM=php-fpm _UID=$oca_uid --priority=5 $cli_opts 
    else
      echo "User $user can only view php logs of the following user:"
      lid -g oca
    fi
  else
    $journal_ctl _EXE=/bin/php _UID=$uid + _EXE=/sbin/php-fpm _UID=$uid + SYSLOG_IDENTIFIER=php _UID=$uid + _COMM=php _UID=$uid + _COMM=php-fpm _UID=$uid --priority=5 $cli_opts 
  fi
else
  if [ -n "$oca_user" ]; then
    echo "User $user can only view its own php logs"
  else
    $journal_ctl _EXE=/bin/php _UID=$uid + _EXE=/sbin/php-fpm _UID=$uid + SYSLOG_IDENTIFIER=php _UID=$uid + _COMM=php _UID=$uid + _COMM=php-fpm _UID=$uid --priority=5 $cli_opts 
  fi
fi

