Magellan Linux

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

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

revision 2626 by niro, Mon Jan 20 14:08:31 2014 UTC revision 2627 by niro, Tue Sep 29 10:03:39 2015 UTC
# Line 1  Line 1 
1  #!/bin/sh  # $Id$
2    
3  # set_session_addmenuitem $name $exec $workdir $icon  push_config 70_citrix_serverlist
4  set_session_addmenuitem()  push_config 80_citrix_session
5    
6    help_citrix_serverlist()
7  {  {
8   local serial="${CLASS_ARGV[0]}"   local serial="${CLASS_ARGV[0]}"
9   local name="${CLASS_ARGV[1]}"   control_client "${serial}" help citrix.serverlist
  local exec="${CLASS_ARGV[2]}"  
  local workdir="${CLASS_ARGV[3]}"  
  local icon="${CLASS_ARGV[4]}"  
10    
11   mysql_insert cfg_other_menuitems,serial="${serial}",name="${name}",exec="${exec}",workdir="${workdir}",icon="${workdir}"   mecho "get citrix.serverlist [action]"
12     mecho " Shows all hosts added on the serverlist."
13     mecho " [actions]:"
14     mecho "   print - prints local configured serverlist"
15     mecho "   query - get serverlist of the farm from given [server]"
16     mecho
17     mecho "set citrix.serverlist [action] [host]"
18     mecho " Adds or deletes a server from the ica serverlist."
19     mecho " [actions]:"
20     mecho "   add   - adds a server"
21     mecho "   del   - deletes a server"
22     mecho "   auto  - queries given [server] for the serverlist and adds all of them"
23     mecho
24     mecho "   host  - dns hostname or ip of the server"
25     mecho
26     mecho " If no [host] was given, all entries are deleted."
27  }  }
28    
29  # control_session_addmenuitem $serial  help_citrix_session()
 control_session_addmenuitem()  
30  {  {
31   local serial="${CLASS_ARGV[0]}"   local serial="${CLASS_ARGV[0]}"
32   local all   control_client "${serial}" help citrix.session
  local item  
33    
34   # retvals of evaluate_table_xml   mecho "get citrix.session"
35   local cfg_other_menuitems_serial   mecho " Shows all configured ICA sessions"
36   local cfg_other_menuitems_id   mecho "   print - prints all local configured sessions"
37   local cfg_other_menuitems_name   mecho "   query - get sessionlist of the farm from given [server]"
38   local cfg_other_menuitems_exec   mecho
39   local cfg_other_menuitems_workdir   mecho "set citrix.session [action] [name] [session] [mode] [user] [domain] [password]"
40   local cfg_other_menuitems_icon   mecho "  Adds or delets a ICA session."
41     mecho "  Available actions:"
42     mecho "   add        - adds a new ica session"
43     mecho "   del        - deletes ica session with name [name]"
44     mecho "                if no [name] given, all sessions will be deleted"
45     mecho
46     mecho "  Available modes:"
47     mecho "   fullscreen - fullscreen session"
48     mecho "   seamless   - seamless windows session"
49     mecho "   *x*        - windowed session with given resolution"
50     mecho "                any resonable resolution is fine like:"
51     mecho "                   1024x768, 1280x1024, 1440x900 etc"
52     mecho
53     mecho "   session    - name of the Citrix session"
54     mecho "   user       - user inside the session - optional"
55     mecho "   domain     - logon domain of the user - optional"
56     mecho "   password   - password of the user - optional"
57    }
58    
59   all=$(mysqldo "select name from cfg_other_menuitems where serial='${serial}'")  set_citrix_session()
60   for item in ${all}  {
61   do   local serial="${CLASS_ARGV[0]}"
62   # first of all get the vars   local action="${CLASS_ARGV[1]}"
63   evaluate_table_xml cfg_other_menuitems "where serial='${serial}' and name='${item}'"   local name="${CLASS_ARGV[2]}"
64     local session="${CLASS_ARGV[3]}"
65     local mode="${CLASS_ARGV[4]}"
66     local user="${CLASS_ARGV[5]}"
67     local domain="${CLASS_ARGV[6]}"
68     local password="${CLASS_ARGV[7]}"
69     local id
70     local enabled
71    
72     case "${action}" in
73     add) enabled=1 ;;
74     del) enabled=0 ;;
75     *)
76     eecho "Unknown action '${action}'"
77     return 1
78     ;;
79     esac
80    
81     if [[ -z ${name} ]]
82     then
83     eecho "No name given"
84     return 1
85     fi
86    
87     id=$(mysqldo "select id from cfg_sessions_citrix where serial='${serial}' and name='${name}';")
88     if [[ -n ${id} ]]
89     then
90     mysqldo "update cfg_sessions_citrix set name='${name}', session='${session}', filename='${filename}', username='${username}', domain='${domain}', password='${password}', browseradrs='${browseradrs}', enabled='${enabled}' where id=${id};"
91     else
92     mysqldo "insert into cfg_sessions_citrix(serial, name, session, filename, username, domain, password, browseradrs, enabled) values('${serial}', '${name}', '${session}', ${store}', '${filename}', '${domain}', '${password}', '${browseradrs}', '${enabled}');"
93     fi
94    }
95    
96    control_citrix_session()
97    {
98     local serial="${CLASS_ARGV[0]}"
99     push_config_80_citrix_session "${serial}"
100    }
101    
102    push_config_80_citrix_session()
103    {
104     local serial="$1"
105     local values
106     local id
107    
108   control_client "${serial}" set session.addmenuitem \   values=$(mysqldo "select id from cfg_sessions_citrix where serial='${serial}';")
109   "${cfg_other_menuitems_name}" \   for id in ${values}
110   "${cfg_other_menuitems_exec}" \   do
111   "${cfg_other_menuitems_workdir}" \   evaluate_table_xml cfg_sessions_citrix "where serial='${serial}'"
112   "${cfg_other_menuitems_icon}"   if [[ -z ${cfg_sessions_citrix_session} ]]
113     then
114     eecho "Session must not be empty id->'${id}'"
115     continue
116     fi
117     if [[ -z ${cfg_sessions_citrix_enabled} ]]
118     then
119     eecho "Enabled must not be empty id->'${id}'"
120     continue
121     fi
122     if [[ ${cfg_sessions_citrix_enabled} = 1 ]]
123     then
124     control_client "${serial}" set citrix.session add "${cfg_sessions_citrix_name}" "${cfg_sessions_citrix_session}" "${cfg_sessions_citrix_store}" "${cfg_sessions_citrix_username}" "${cfg_sessions_citrix_domain} ${cfg_sessions_citrix_password}"
125     elif [[ ${cfg_sessions_citrix_enabled} = 0 ]]
126     then
127     control_client "${serial}" set citrix.session del "${cfg_sessions_citrix_name}"
128     # remove from database too
129     mysqldo "delete from cfg_sessions_citrix where id='${id}';"
130     else
131     eecho "unknown enabled value id->'${id}', cfg_sessions_citrix_enabled -> '${cfg_sessions_citrix_enabled}'"
132     return 1
133     fi
134   done   done
135  }  }
136    
137  # set_session_delmenuitem  set_citrix_serverlist()
 control_session_delmenuitem()  
138  {  {
139   local serial="${CLASS_ARGV[0]}"   local serial="${CLASS_ARGV[0]}"
140     local action="${CLASS_ARGV[1]}"
141     local host="${CLASS_ARGV[2]}"
142     local id
143     local enabled
144    
145     case "${action}" in
146     add) enabled=1 ;;
147     del) enabled=0 ;;
148     *)
149     eecho "Unknown action '${action}'"
150     return 1
151     ;;
152     esac
153    
154     if [[ -z ${store} ]]
155     then
156     eecho "No store given"
157     return 1
158     fi
159    
160     id=$(mysqldo "select id from cfg_citrix_serverlist where serial='${serial}' and host='${host}';")
161     if [[ -n ${id} ]]
162     then
163     mysqldo "update cfg_citrix_serverlist set host='${host}', enabled='${enabled}' where id=${id};"
164     else
165     mysqldo "insert into cfg_citrx_serverlist(serial, store, enabled) values('${serial}', '${store}', '${enabled}');"
166     fi
167    }
168    
169   # no arguments given to del all items!  control_citrix_serverlist()
170   control_client "${serial}" set session.delmenuitem  {
171     local serial="${CLASS_ARGV[0]}"
172     push_config_70_citrix_serverlist "${serial}"
173    }
174    
175    push_config_70_citrix_serverlist()
176    {
177     local serial="$1"
178     local values
179     local id
180    
181     values=$(mysqldo "select id from cfg_citrix_serverlist where serial='${serial}';")
182     for id in ${values}
183     do
184     evaluate_table_xml cfg_citrix_serverlist "where serial='${serial}'"
185     if [[ -z ${cfg_citrix_serverlist_host} ]]
186     then
187     eecho "Host must not be empty id->'${id}'"
188     continue
189     fi
190     if [[ -z ${cfg_citrix_serverlist_enabled} ]]
191     then
192     eecho "Enabled must not be empty id->'${id}'"
193     continue
194     fi
195     if [[ ${cfg_citrix_serverlist_enabled} = 1 ]]
196     then
197     control_client "${serial}" set citrix.serverlist add "${cfg_citrix_serverlist_host}"
198     elif [[ ${cfg_citrix_serverlist_enabled} = 0 ]]
199     then
200     control_client "${serial}" set citrix.serverlist del "${cfg_citrix_serverlist_host}"
201     # remove from database too
202     mysqldo "delete from cfg_citrix_serverlist where id='${id}';"
203     else
204     eecho "unknown enabled value id->'${id}', cfg_citrix_serverlist_enabled -> '${cfg_citrix_serverlist_enabled}'"
205     return 1
206     fi
207     done
208  }  }

Legend:
Removed from v.2626  
changed lines
  Added in v.2627