#!/bin/bash MCORE_LIBDIR="@@MCORE_LIBDIR@@" source @@SYSCONFDIR@@/mcore/mcore.conf source ${MCORE_LIBDIR}/include/common.global.class source ${MCORE_LIBDIR}/include/daemon.global.class STOREFRONTDIR="${MCORE_CONFIG_PATH}/citrix/storefront" die() { echo "ERROR: $@"; exit 1; } print_storefront_session_list() { local counter declare -i counter=0 x11runas "${MCORE_LIBDIR}/storefront-resolver --enumerate --user '${user}' --password '${password}' --domain '${domain}'" | while read line do [[ ${counter} -gt 0 ]] && echo "${line}" | cut -d"'" -f1-3 ((counter++)) done } # very basic getops for argv in $* do case $1 in --add|--del|--print|--query) method="${1//--}" ;; --name) shift; name="$1" ;; --session) shift; session="$1" ;; --user) shift; user="$1" ;; --domain) shift; domain="$1" ;; --password) shift; password="$1" ;; --store) shift; store="$1" ;; --autostart) shift; autostart="$1" ;; esac shift done [[ -n ${method} ]] || die "No method given" [[ -n ${autostart} ]] || autostart=0 case "${method}" in add) # requires name [[ -n ${name} ]] || die "No name given" # and session [[ -n ${session} ]] || die "No session given" # add store and regen user xml if [[ -n ${store} ]] then ${MCORE_LIBDIR}/storefront-store --add --store "${store}" ${MCORE_LIBDIR}/storefront-store --regen fi storefront_starter="${STOREFRONTDIR}/${name}.sh" CONFIG="${MROOT}/${storefront_starter}" clearconfig addconfig '#!/bin/bash' addconfig "${MCORE_LIBDIR}/storefront-resolver --launch --user '${user}' --password '${password}' --domain '${domain}' --app '${session}' --store '${store}'" chmod +x "${storefront_starter}" if is_provided fluxbox then # generate fluxbox menu entry ${MCORE_LIBDIR}/fluxbox-menuitem --add --name "${name}" --exec "${storefront_starter}" && ${MCORE_LIBDIR}/fluxbox-rebuild-menu # add autostart if [[ ${autostart} = 1 ]] then ${MCORE_LIBDIR}/fluxbox-autostart --add --name "${name}" --exec "${storefront_starter}" && ${MCORE_LIBDIR}/fluxbox-rebuild-autostart fi fi if is_provided idesk then # generate idesk desktop icon ${MCORE_LIBDIR}/idesk-generate-icon-info --add --name "${name}" --command "${storefront_starter}" --icon default.png && ${MCORE_LIBDIR}/idesk-generate-all-desktop-icons fi ;; del) [[ -n ${name} ]] || die "No name given" if [ -f ${MROOT}/${STOREFRONTDIR}/"${name}".sh ] then rm ${MROOT}/${STOREFRONTDIR}/"${name}".sh if is_provided fluxbox then ${MCORE_LIBDIR}/fluxbox-menuitem --del --name "${name}" && ${MCORE_LIBDIR}/fluxbox-rebuild-menu ${MCORE_LIBDIR}/fluxbox-autostart --del --name "${name}" && ${MCORE_LIBDIR}/fluxbox-rebuild-autostart fi if is_provided idesk then ${MCORE_LIBDIR}/idesk-generate-icon-info --del --name "${name}" && ${MCORE_LIBDIR}/idesk-generate-all-desktop-icons fi else eecho "No configured session named '${name}' exists." fi ;; print) list_files_in_directory ${MROOT}/${STOREFRONTDIR} | sed 's:\.sh::g' ;; query) eval sessionlist=( $(print_storefront_session_list) ) sessioncount="${#sessionlist[*]}" for (( i=0; i