Magellan Linux

Diff of /mcore-src/trunk/mcore-tools/src/modules/citrix/citrix.client.class.in

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2271 by niro, Tue Jan 14 10:50:06 2014 UTC revision 2272 by niro, Tue Jan 14 13:20:35 2014 UTC
# Line 39  help_citrix_session() Line 39  help_citrix_session()
39   mecho "  Adds or delets a ICA session."   mecho "  Adds or delets a ICA session."
40   mecho "  Available actions:"   mecho "  Available actions:"
41   mecho "   add        - adds a new ica session"   mecho "   add        - adds a new ica session"
42   mecho "   del        - deletes ica session with file name [file]"   mecho "   del        - deletes ica session with name [name]"
43   mecho "                if no [file] given, all sessions will be deleted"   mecho "                if no [name] given, all sessions will be deleted"
44   mecho   mecho
45   mecho "  Available modes:"   mecho "  Available modes:"
46   mecho "   fullscreen - fullscreen session"   mecho "   fullscreen - fullscreen session"
# Line 64  set_citrix_session() Line 64  set_citrix_session()
64   local user="${CLASS_ARGV[4]}"   local user="${CLASS_ARGV[4]}"
65   local domain="${CLASS_ARGV[5]}"   local domain="${CLASS_ARGV[5]}"
66   local password="${CLASS_ARGV[6]}"   local password="${CLASS_ARGV[6]}"
  local serverlist  
  local server  
  local server_num  
  local icafile  
  local CONFIG  
67   local i   local i
68    
69   [[ -z ${action} ]] && help_citrix_session && return 1   [[ -z ${action} ]] && help_citrix_session && return 1
  [[ -z ${name} ]] && help_citrix_session && return 1  
70    
71   case "${action}" in   case "${action}" in
72   add)   add)
73     # requires name
74     [[ -z ${name} ]] && help_citrix_session && return 1
75   # action 'add' need mode too   # action 'add' need mode too
76   [[ -z ${mode} ]] && help_citrix_session && return 1   [[ -z ${mode} ]] && help_citrix_session && return 1
77   # and session   # and session
# Line 89  set_citrix_session() Line 85  set_citrix_session()
85   *) help_citrix_session && return 1   *) help_citrix_session && return 1
86   esac   esac
87    
88   icafile="${MCORE_CONFIG_PATH}/citrix/ica/${name}.ica"   # create citrix session file
89   CONFIG="${MROOT}/${icafile}"   ${MCORE_LIBDIR}/citrix-session \
90   clearconfig   --add \
91     --name "${name}" \
92   addconfig '[WFClient]'   --session "${session}" \
93   addconfig 'Version=2'   --mode "${mode}" \
94     --user "${user}" \
95   serverlist=$(NOCOLORS=true get_citrix_serverlist)   --domain "${domain}" \
96   declare -i i=0   --password "${password}"
  for server in ${serverlist}  
  do  
  (( i++ ))  
  server_num="${i}"  
  [[ ${i} -eq 1 ]] && server_num=""  
  addconfig "TcpBrowserAddress${server_num}=${server}"  
  done  
  addconfig 'ScreenPercent=0'  
  addconfig '[ApplicationServers]'  
  addconfig "${session}="  
  addconfig "[${session}]"  
  addconfig "Address=${session}"  
  addconfig "InitialProgram=#${session}"  
   
  # mapping table xorg -> citrix  
  # citrix 1 = 16 colors  
  # citrix 2 = 256 colors  
  # citrix 4 = 16 bit  
  # citrix 8 = 32 bit  
  # try always 16 bit  
  addconfig "DesiredColor=4"  
   
  addconfig 'TransportDriver=TCP/IP'  
  addconfig 'WinStationDriver=ICA 3.0'  
   
  [[ -n ${user} ]] && addconfig "Username=${user}"  
  [[ -n ${domain} ]] && addconfig "Domain=${domain}"  
  [[ -n ${password} ]] && addconfig "ClearPassword=${password}"  
   
  # use the right display settings  
  case "${mode}" in  
  # fullscreen mode  
  fullscreen)  
  addconfig 'UseFullScreen=Yes'  
  addconfig 'NoWindowManager=True'  
  addconfig "DesiredHRES=65535"  
  addconfig "DesiredVRES=65535"  
  ;;  
  # seamless window mode  
  seamless)  
  addconfig 'TWIMode=On'  
  ;;  
  # a desired resolution  
  *x*)  
  addconfig "DesiredHRES=${mode%x*}"  
  addconfig "DesiredVRES=${mode#*x}"  
  ;;  
  esac  
97    
98   # generate fluxbox menu entry   # generate fluxbox menu entry
99   set_fluxbox_menuitem add "${name}" "wfica ${icafile}"   set_fluxbox_menuitem add "${name}" "wfica ${icafile}"
100   ;;   ;;
101    
102   del)   del)
103   if [ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica ]   if [[ -n "${name}" ]]
104   then   then
105   rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica   ${MCORE_LIBDIR}/citrix-session --del --name "${name}"
106   set_fluxbox_menuitem del "${name}"   set_fluxbox_menuitem del "${name}"
107     else
108   elif [[ -z ${file} ]]   for i in $(NOCOLORS=true ${MCORE_LIBDIR}/citrix-session --print)
  then  
  # delete all items, needed to loop through every session  
  # or we delete *all* fluxbox menuitem too  
  for i in $(find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica -type f)  
109   do   do
110   rm ${i}   ${MCORE_LIBDIR}/citrix-session --del --name "${i}"
111   set_fluxbox_menuitem del "$(basename ${i} .ica)"   set_fluxbox_menuitem del "${name}"
112   done   done
113   fi   done
114   ;;   ;;
115    
116   *) help_citrix_session && return 1 ;;   *) help_citrix_session && return 1 ;;
# Line 176  set_citrix_session() Line 120  set_citrix_session()
120  get_citrix_session()  get_citrix_session()
121  {  {
122   local action="${CLASS_ARGV[0]}"   local action="${CLASS_ARGV[0]}"
  local server="${CLASS_ARGV[1]}"  
  local sessionlist  
  local sessioncount  
  local i  
  local exclude  
123    
124   [[ -z ${action} ]] && help_citrix_serverlist && return 1   [[ -z ${action} ]] && help_citrix_serverlist && return 1
125    
126   case "${action}" in   case "${action}" in
127   print) list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica ;;   print) citrix-session --print ;;
128   query)   query) citrix-session --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  
  eval sessionlist=( $(eval ${MROOT}/${PNABROWSE_EXECUTABLE} -A "${PNABROWSE_CITRIX_BROWSER}" ${exclude}) )  
  sessioncount="${#sessionlist[*]}"  
  for (( i=0; i<sessioncount; i++))  
  do  
  rvecho -n "${sessionlist[${i}]};"  
  done  
  rvecho  
  else  
  eecho "'${MROOT}/${PNABROWSE_EXECUTABLE}' executable not found."  
  fi  
  ;;  
129   *) help_citrix_session && return 1 ;;   *) help_citrix_session && return 1 ;;
130   esac   esac
131  }  }
# Line 214  set_citrix_serverlist() Line 134  set_citrix_serverlist()
134  {  {
135   local action="${CLASS_ARGV[0]}"   local action="${CLASS_ARGV[0]}"
136   local server="${CLASS_ARGV[1]}"   local server="${CLASS_ARGV[1]}"
  local CONFIG  
  local serverlist  
  local servercount  
137   local i   local i
  local exclude  
138    
139   [[ -z ${action} ]] && help_citrix_serverlist && return 1   [[ -z ${action} ]] && help_citrix_serverlist && return 1
140    
141   case "${action}" in   case "${action}" in
142   add)   add) ${MCORE_LIBDIR}/citrix-serverlist --add --server "${server}" ;;
  [[ -z ${server} ]] && help_citrix_serverlist && return 1  
  CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server}"  
  clearconfig  
  addconfig "${server}"  
  ;;  
   
143   del)   del)
144   if [ ! -d ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist ]   if [[ -n ${server} ]]
  then  
  eecho "'${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist' directory not found."  
  elif [ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server} ]  
  then  
  rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/"${server}"  
  elif [[ -z ${server} ]]  
145   then   then
146     ${MCORE_LIBDIR}/citrix-serverlist --del --server "${server}"
147     else
148   # delete all items   # delete all items
149   find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist -type f | xargs --no-run-if-empty rm   for i in $(NOCOLORS=true ${MCORE_LIBDIR}/citrix-serverlist --print)
  fi  
  ;;  
   
  auto)  
  [[ -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_SERVER_EXCLUDE} ]]  
  then  
  exclude="| grep -v '${PNABROWSE_SERVER_EXCLUDE}'"  
  fi  
  eval serverlist=( $(eval ${MROOT}/${PNABROWSE_EXECUTABLE} -S ${PNABROWSE_CITRIX_BROWSER} ${exclude}) )  
  servercount="${#serverlist[*]}"  
  for (( i=0; i<servercount; i++))  
150   do   do
151   server="${serverlist[${i}]}"   ${MCORE_LIBDIR}/citrix-serverlist --del --server "${i}"
  CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server}"  
  clearconfig  
  addconfig "${server}"  
152   done   done
  else  
  eecho "'${MROOT}/${PNABROWSE_SERVER_EXCLUDE}' executable not found."  
153   fi   fi
154   ;;   ;;
155     auto) ${MCORE_LIBDIR}/citrix-serverlist --auto ;;
156   *) help_citrix_serverlist && return 1 ;;   *) help_citrix_serverlist && return 1 ;;
157   esac   esac
158  }  }
# Line 274  set_citrix_serverlist() Line 160  set_citrix_serverlist()
160  get_citrix_serverlist()  get_citrix_serverlist()
161  {  {
162   local action="${CLASS_ARGV[0]}"   local action="${CLASS_ARGV[0]}"
  local server="${CLASS_ARGV[1]}"  
  local serverlist  
  local servercount  
  local i  
  local exclude  
163    
164   [[ -z ${action} ]] && help_citrix_serverlist && return 1   [[ -z ${action} ]] && help_citrix_serverlist && return 1
165    
166   case "${action}" in   case "${action}" in
167   print)   print) citrix-serverlist --print ;;
168   list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist ;;   query) citrix-serverlist --query ;;
  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_SERVER_EXCLUDE} ]]  
  then  
  exclude="| grep -v '${PNABROWSE_SERVER_EXCLUDE}'"  
  fi  
  eval serverlist=( $(eval ${MROOT}/${PNABROWSE_EXECUTABLE} -S ${PNABROWSE_CITRIX_BROWSER} ${exclude}) )  
  servercount="${#serverlist[*]}"  
  for (( i=0; i<servercount; i++))  
  do  
  rvecho -n "${serverlist[${i}]};"  
  done  
  rvecho  
  else  
  eecho "'${MROOT}/${PNABROWSE_EXECUTABLE}' executable not found."  
  fi  
  ;;  
169   *) help_citrix_session && return 1 ;;   *) help_citrix_session && return 1 ;;
170   esac   esac
171  }  }

Legend:
Removed from v.2271  
changed lines
  Added in v.2272