#!/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 STOREFRONT_DIR="${MCORE_CONFIG_PATH}/citrix/storefront" STOREFRONT_STORES_DIR="${STOREFRONT_DIR}/stores" die() { echo "ERROR: $@"; exit 1; } normalize_store() { local store="$1" # remove : and / from uri and replace them with _ store="${store//:/_}" store="${store//\//_}" echo "${store}" } generate_storefront_xml() { local config local store_uri local xml install -o "${MCORE_UNPRIV_USER}" -g "${MCORE_UNPRIV_GROUP}" -d "${MCORE_UNPRIV_HOME}/.ICAClient/cache/Stores" CONFIG="${MCORE_UNPRIV_HOME}/.ICAClient/cache/Stores/StoreCache.ctx" clearconfig addconfig '' if [[ -L ${STOREFRONT_DIR}/default-store ]] then store_uri=$(source ${STOREFRONT_DIR}/default-store; echo "${STORE}") addconfig " ${store_uri}" else # use the first one which gets found for config in $(NOCOLOR=1 list_files_in_directory/${STOREFRONT_STORES_DIR}) do store_uri=$(source ${config}; echo "${STORE}") if [[ -n ${store_uri} ]] then addconfig " ${store_uri}" break fi done fi addconfig ' False' addconfig ' False' addconfig ' False' addconfig ' 0' addconfig ' True' addconfig ' False' addconfig ' ' for config in $(NOCOLOR=1 list_files_in_directory/${STOREFRONT_STORES_DIR}) do store_uri=$(source ${config}; echo "${STORE}") if [[ -n ${store_uri} ]] then addconfig " " addconfig " ${store_uri}" addconfig ' ' fi done addconfig ' ' addconfig '' chown "${MCORE_UNPRIV_USER}":"${MCORE_UNPRIV_GROUP}" "${CONFIG}" } # very basic getops for argv in $* do case $1 in --add|--del|--default|--print|--regen) method="${1//--}" ;; --store) shift; store_uri="$1" ;; esac shift done [[ -n ${method} ]] || die "No method given" # always create the STOREFRONT_STORES_DIR install -d "${STOREFRONT_STORES_DIR}" case "${method}" in add) # requires name and store [[ -n ${store_uri} ]] || die "No store uri given" # only pna stores are allowed at the moment if [[ ${store_uri/config.xml} = ${store_uri} ]] then die "Only PNA Stores are allowed." fi store_name="$(normalize_store ${store_uri})" config="${STOREFRONT_STORES_DIR}/${store_name}.conf" CONFIG="${MROOT}/${config}" clearconfig addconfig "STORE=\"${store_uri}\"" ;; del) if [[ -z ${store_uri} ]] then for config in $(NOCOLOR=1 list_files_in_directory/${STOREFRONT_STORES_DIR}) do if [ -f ${config} ] && [[ ${config/.conf} != ${config} ]] then rm ${config} fi done else store_name="$(normalize_store ${store_uri})" if [ -f ${MROOT}/${STOREFRONT_STORES_DIR}/"${store_name}".conf ] then rm ${MROOT}/${STOREFRONT_STORES_DIR}/"${store_name}".conf else eecho "No configured store named '${store_name}' exists." fi fi ;; default) # requires store_uri [[ -n ${store_uri} ]] || die "No store uri given" store_name="$(normalize_store ${store_uri})" if [ -f ${MROOT}/${STOREFRONT_STORES_DIR}/"${store_name}".conf ] then ln -snf ${STOREFRONT_STORES_DIR}/"${store_name}".conf ${STOREFRONT_DIR}/default-store else eecho "No configured store named '${store_name}' exists." fi ;; print) for config in $(NOCOLOR=1 list_files_in_directory/${STOREFRONT_STORES_DIR}) do store_uri=$(source ${config}; echo "${STORE}") rvecho "${store_uri}" done ;; regen) generate_storefront_xml ;; esac