#!/bin/bash
#
# Copyright (c) 2017 Omnissa, LLC. All rights reserved.
# This product is protected by copyright and intellectual property laws in the
# United States and other countries as well as by international treaties.
# -- Omnissa Public
#
# This script implement the lib dependency checking function of installer
#

longname_smartcard="Omnissa Horizon Smart Card"
longname_rtav="Omnissa Horizon Real-Time Audio-Video"
longname_cdr="Omnissa Horizon Client Drive Redirection"
longname_mmr="Omnissa Horizon Multimedia Redirection (MMR)"
longname_pcoip="Omnissa Horizon PCoIP"
longname_usb="Omnissa Horizon USB Redirection"
longname_mediaprovider="Omnissa Horizon(R) Virtualization Pack for Skype for Business"
longname_client="Omnissa Horizon Client"

# TODO: make this map related with vmis scan file list in the future
comp_smartcard="/usr/lib/pcoip/vchan_plugins/libscredirvchanclient.so "
comp_rtav="/usr/lib/pcoip/vchan_plugins/libviewMMDevRedir.so "
comp_cdr="/usr/lib/omnissa/horizon/vdpService/libtsdrClient.so "
comp_mmr="/usr/lib/omnissa/horizon/vdpService/libtsmmrClient.so "

comp_pcoip="/usr/bin/horizon-protocol "
comp_pcoip+="/usr/bin/horizon-protocol-container "
comp_pcoip+="/usr/lib/libpcoip_client.so "
comp_pcoip+="/usr/lib/omnissa/horizon/vdpService/librdeSvc.so "
comp_pcoip+="/usr/lib/omnissa/horizon/vdpService/libmksvchanclient.so "
comp_pcoip+="/usr/lib/omnissa/libudpProxyLib.so "
comp_pcoip+="/usr/lib/pcoip/vchan_plugins/librdpvcbridge.so "
comp_pcoip+="/usr/lib/pcoip/vchan_plugins/libvdpservice.so "

comp_usb="/usr/lib/omnissa/horizon/usb/libhorizon-usbd.so "
comp_usb+="/usr/lib/omnissa/horizon/usb/horizon-eucusbarbitrator "

comp_mediaprovider="/usr/lib/omnissa/mediaprovider/libVMWMediaProvider.so "
comp_client="/usr/lib/omnissa/horizon/bin/horizon-client "

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/omnissa

for comp in client pcoip smartcard rtav cdr mmr usb mediaprovider
do
   compSuccess=true
   fileMissing=false
   errorOutput=""

   files="comp_"${comp}
   files=${!files}
   for file in $files
   do
      if [ ! -e $file ]; then
         errorOutput+="\t$file: No such file.\n"
         compSuccess=false
         fileMissing=true
         continue
      fi

      result=`ldd $file | grep "not found"`
      if [ "$result"x != ""x ]
      then
         compSuccess=false
         errorOutput+="$result\n"
      fi
   done

   longname="longname_"${comp}
   longname=${!longname}
   if $compSuccess; then
      echo -e "$longname: Success\n"
   else
      echo "$longname: Failed"
      if $fileMissing; then
         echo -e -n "\tThis feature was improperly installed, please re-install"
         echo " it or ignore this message if you won't use it."
      fi
      echo -e "$errorOutput"
   fi
done
