#!/bin/bash
### ------------------------------------------------------------------------
# Copyright© Guangzhou r&d center of China telecom co., LTD. 2018-2019. All rights reserved.
# 本文件为clinkRemoteApp脚本
### ------------------------------------------------------------------------
BASE_DIR=$(cd `dirname $0`; pwd)
export LD_LIBRARY_PATH=${BASE_DIR}/../lib

Usage() {
    echo "Usage: clinkRemoteApp [options]"
    echo "eg:"
    echo "  clinkRemoteApp --remote-app=\"C:\\Windows\\office.exe\" --remote-ip=\"192.168.1.101\" --remote-file=\"/home/electron/loop.txt\""
    echo "options:"
    echo "  -h | --help         Help"
    echo "  --remote-app        Remote application program (exe path)"
    echo "  --remote-ip         Remote application Server hostname"
    echo "  --remote-file       File to open with remote application"
    echo "  --usb-rule          usb rule with remote application"
    echo "  --multiInstance     multiInstance with remote application"
}

### 1、参数解析
ARGS=`getopt -o h -l help,remote-app:,remote-ip:,remote-file::,usb-rule:,multiInstance:, -n 'clinkRemoteApp' -- "$@"`

if [ $? != 0 ]; then
    echo "Terminating..."
    exit 1
fi
eval set -- "${ARGS}"

while true
do
    case "$1" in
        -h | --help)
            Usage;
            shift
            exit 0
            ;;
        --remote-app)
            remoteApp=$2
            shift 2
            ;;
        --remote-ip)
            remoteIp=$2
            shift 2
            ;;
        --remote-file)
            remoteFile=$2
            shift 2
            ;;
        --usb-rule)
            usbRule=$2
            shift 2
            ;;
        --multiInstance)
            multiInstance=$2
            shift 2
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!"
            exit 1
            ;;
    esac
done

if [ ""x == "${remoteIp}"x ]; then
  ECHO "[error] please input  remote application Server hostname"
  exit -1
fi
echo "remoteApp:${remoteApp}"
echo "remoteIp:${remoteIp}" 
echo "remoteFile:${remoteFile}"
echo "usbRule:${usbRule}"
echo "multiInstance:${multiInstance}"

remoteAppTemp=${remoteApp#\"}
remoteApp=${remoteAppTemp%\"}
remoteIpTemp=${remoteIp#\"}
remoteIp=${remoteIpTemp%\"}
usbRuleTemp=${usbRule#\"}
usbRule=${usbRuleTemp%\"}

ps -ef | grep xfreerdp | grep -v grep| awk '{print $2}' | xargs -i kill {}

#if [ "${remoteFile#${HOME}}" != "${remoteFile}" ]; then
#  subPath=$(echo ${remoteFile#${HOME}} | sed 's#/#\\#g')
#  appCmd="${BASE_DIR}/xfreerdp /u:ctyun /p:rmapp@3389XC /drive:home,${HOME} /app:\"C:\FreerdpEx.exe\" /app-cmd:'\"${remoteApp}\" \"\\\\tsclient\home${subPath}\"' /cert-ignore /v:${remoteIp}:43389"
#  echo ${appCmd}
#cat > ${HOME}/clinkRemoteAppSh <<-EOF
##!/bin/bash
#export LD_LIBRARY_PATH=${BASE_DIR}/../lib
#${appCmd}
#EOF
#bash ${HOME}/clinkRemoteAppSh
#else
#  ${BASE_DIR}/xfreerdp /u:ctyun /p:rmapp@3389XC /app:"${remoteApp}" /v:${remoteIp}:43389
#fi
#xfreerdp /u:ctyun /p:rmapp@3389XC /drive:home,/home/electron /app:"C:\FreerdpEx_UI.exe" /app-cmd:'"C:\Program Files\Google\Chrome\Application\chrome.exe"  \\tsclient\home\Downloads\123.txt' /v:219.141.189.245:43389
#./clinkRemoteApp --remote-app="C:\Windows\notepad.exe" --remote-ip="219.141.189.245" --remote-file="/home/electron/Downloads/123.txt"


if [ "${remoteFile#${HOME}}" != "${remoteFile}" ]; then
  fileFile='\\tsclient\home'$(echo ${remoteFile#${HOME}} | sed 's#/#\\#g')
else
  fileFile="NULLARG"
fi
echo fileFile:${fileFile}

if [ "${multiInstance}"x == "0"x ]; then
  singleInstance="Y"
else
  singleInstance="N"
fi

if [ "${usbRule}"x != ""x ];then
    ruleCmd="/usb:id,dev:${usbRule}"
fi
mediaDir=/media/${HOME##*/}

appCmd="${BASE_DIR}/xfreerdp /u:Administrator /p:rmapp@3389XC /gfx-h264:avc420 /drive:hotplug,* /drive:home,${HOME} /drive:usb,${mediaDir} ${ruleCmd} /app:\"C:\FreerdpEx.exe\" /app-cmd:'\"${remoteApp}\" \"${fileFile}\" ${singleInstance}' /cert-tofu /v:${remoteIp}:43389"
echo ${appCmd}
cat > ${HOME}/clinkRemoteAppSh <<-EOF
#!/bin/bash
export LD_LIBRARY_PATH=${BASE_DIR}/../lib
${appCmd}
EOF
#bash ${HOME}/clinkRemoteAppSh
bash -c "${appCmd}"

#./rdp.sh --remote-app="C:\Windows\notepad.exe" --remote-ip="219.141.189.245" --remote-file="/home/electron/Downloads/123.txt" --usb-rule="04b4:1234#058f:6387" --multiInstance=0
