--- mcore-src/trunk/mcore-tools/daemon/client/include/citrix.client.class 2012/08/13 11:22:32 2021 +++ mcore-src/trunk/mcore-tools/src/modules/citrix/citrix.client.class.in 2014/01/13 15:36:24 2262 @@ -5,16 +5,23 @@ # needs fluxbox! require fluxbox basic-video +# citrix global config +include @@SYSCONFDIR@@/mcore/citrix.conf + help_citrix_serverlist() { - mecho "get citrix.serverlist" + mecho "get citrix.serverlist [action]" mecho " Shows all hosts added on the serverlist." + mecho " [actions]:" + mecho " print - prints local configured serverlist" + mecho " query - get serverlist of the farm from given [server]" mecho mecho "set citrix.serverlist [action] [host]" mecho " Adds or deletes a server from the ica serverlist." mecho " [actions]:" mecho " add - adds a server" mecho " del - deletes a server" + mecho " auto - queries given [server] for the serverlist and adds all of them" mecho mecho " host - dns hostname or ip of the server" mecho @@ -25,8 +32,10 @@ { mecho "get citrix.session" mecho " Shows all configured ICA sessions" + mecho " print - prints all local configured sessions" + mecho " query - get sessionlist of the farm from given [server]" mecho - mecho "set citrix.session [action] [session] [mode] [user] [domain] [password]" + mecho "set citrix.session [action] [name] [session] [mode] [user] [domain] [password]" mecho " Adds or delets a ICA session." mecho " Available actions:" mecho " add - adds a new ica session" @@ -49,11 +58,12 @@ set_citrix_session() { local action="$1" - local session="$2" - local mode="$3" - local user="$4" - local domain="$5" - local password="$6" + local name="$2" + local session="$3" + local mode="$4" + local user="$5" + local domain="$6" + local password="$7" local serverlist local server local server_num @@ -62,12 +72,14 @@ local i [[ -z ${action} ]] && help_citrix_session && return 1 - [[ -z ${session} ]] && help_citrix_session && return 1 + [[ -z ${name} ]] && help_citrix_session && return 1 case "${action}" in add) # action 'add' need mode too [[ -z ${mode} ]] && help_citrix_session && return 1 + # and session + [[ -z ${session} ]] && help_citrix_session && return 1 # other sanity checks case "${mode}" in @@ -77,7 +89,7 @@ *) help_citrix_session && return 1 esac - icafile="${MCORE_CONFIG_PATH}/citrix/ica/${session}.ica" + icafile="${MCORE_CONFIG_PATH}/citrix/ica/${name}.ica" CONFIG="${MROOT}/${icafile}" clearconfig @@ -136,20 +148,20 @@ esac # generate fluxbox menu entry - set_fluxbox_menuitem add "${session}" "wfica ${icafile}" + set_fluxbox_menuitem add "${name}" "wfica ${icafile}" ;; del) - if [[ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/${session}.ica ]] + if [ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica ] then - rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${session}".ica - set_fluxbox_menuitem del "${session}" + rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica + set_fluxbox_menuitem del "${name}" elif [[ -z ${file} ]] then # delete all items, needed to loop through every session # or we delete *all* fluxbox menuitem too - for i in ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/* + for i in $(find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica -type f) do rm ${i} set_fluxbox_menuitem del "$(basename ${i} .ica)" @@ -163,15 +175,39 @@ get_citrix_session() { + local action="$1" + local server="$2" + local sessionlist + local sessioncount local i - local item + local exclude - for i in $(find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica -type f) - do - item="${item} $(basename ${i} .ica)" - done + [[ -z ${action} ]] && help_citrix_serverlist && return 1 - rvecho "${item}" + case "${action}" in + print) list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica ;; + query) + [[ -n ${PNABROWSE_EXECUTABLE} ]] || eecho "\$PNABROWSE_EXECUTABLE not defined" + [[ -n ${PNABROWSE_CITRIX_BROWSER} ]] || eecho "\$PNABROWSE_CITRIX_BROWSER not defined" + if [ -x ${MROOT}/${PNABROWSE_EXECUTABLE} ] + then + if [[ -n ${PNABROWSE_SESSION_EXCLUDE} ]] + then + exclude="| grep -v '${PNABROWSE_SESSION_EXCLUDE}'" + fi + sessionlist=( $(${MROOT}/${PNABROWSE_EXECUTABLE} -A "${PNABROWSE_CITRIX_BROWSER}" ${exclude}) ) + sessioncount="${#sessionlist[*]}" + for (( i=0; i