Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/modules/citrix/storefront-cron.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2697 - (show annotations) (download)
Wed Dec 16 13:50:20 2015 UTC (8 years, 4 months ago) by niro
File size: 3700 byte(s)
-use lock files to prevent race-conditions of the cronjobs
1 #!/bin/bash
2
3 MCORE_LIBDIR="@@MCORE_LIBDIR@@"
4 source @@SYSCONFDIR@@/mcore/mcore.conf
5 source @@SYSCONFDIR@@/mcore/citrix.conf
6 source @@SYSCONFDIR@@/mcore/citrix-enumerate.conf
7 source @@SYSCONFDIR@@/mcore/control.conf
8 source ${MCORE_LIBDIR}/include/common.global.class
9 source ${MCORE_LIBDIR}/include/daemon.global.class
10 source ${MCORE_LIBDIR}/include/mysqlfunctions.global.class
11
12 : ${STOREFRONT_STORE=""}
13 : ${STOREFRONT_USER=""}
14 : ${STOREFRONT_PASS=""}
15 : ${STOREFRONT_DOMAIN=""}
16
17 export IMPORTED_IDS=""
18
19 LOCKFILE="@@RUNDIR@@/lock/storefront-cron.lock"
20
21 is_not_an_import_id()
22 {
23 local id="$1"
24 local entry
25
26 for entry in ${IMPORTED_IDS}
27 do
28 if [[ ${entry} = ${id} ]]
29 then
30 return 1
31 fi
32 done
33
34 return 0
35 }
36
37 # the lockfile is not meant to be perfect, it's just in case the
38 # two cron scripts get run close to each other to keep
39 # them from stepping on each other's toes.
40 [[ -f ${LOCKFILE} ]] && exit 0
41
42 trap "{ rm -f ${LOCKFILE}; exit 0; }" EXIT
43 touch ${LOCKFILE}
44
45 # get default settings from configs
46 [[ -z ${STOREFRONT_STORE} ]] && export STOREFRONT_STORE="${DEFAULT_STOREFRONT_STORE}"
47 [[ -z ${STOREFRONT_USER} ]] && export STOREFRONT_USER="${MCORE_STOREFRONT_USER}"
48 [[ -z ${STOREFRONT_PASS} ]] && export STOREFRONT_PASS="${MCORE_STOREFRONT_PASS}"
49 [[ -z ${STOREFRONT_DOMAIN} ]] && export STOREFRONT_DOMAIN="${MCORE_STOREFRONT_DOMAIN}"
50
51 if ! storebrowse &> /dev/null
52 then
53 if [ -d ~/.ICAClient ]
54 then
55 rm -r ~/.ICAClient
56 fi
57
58 install -d ~/.ICAClient
59 touch ~/.ICAClient/.eula_accepted
60
61 # kill running instances
62 pidof AuthManagerDaemon > /dev/null && killall AuthManagerDaemon
63 pidof ServiceRecord > /dev/null && killall ServiceRecord
64 pidof storebrowse > /dev/null && killall storebrowse
65
66 # register eula and add default store
67 xvfb-run -a -s "-extension RANDR" storebrowse -a "${STOREFRONT_STORE}" > /dev/null
68 fi
69
70 # get all sessions
71 if [[ -z $(storebrowse -l | grep -i ${STOREFRONT_STORE}) ]]
72 then
73 echo "Store ${STOREFRONT_STORE} unknown, perhaps not added. Run 'rm -r ~/.ICAClient'."
74 else
75 OPT=""
76 [[ -n ${STOREFRONT_USER} ]] && OPT+=" -U ${STOREFRONT_USER}"
77 [[ -n ${STOREFRONT_PASS} ]] && OPT+=" -P ${STOREFRONT_PASS}"
78 [[ -n ${STOREFRONT_DOMAIN} ]] && OPT+=" -D ${STOREFRONT_DOMAIN}"
79 SESSION_LIST=$(storebrowse -E ${OPT} ${STOREFRONT_STORE} 2> /dev/null)
80 if [[ $? != 0 ]]
81 then
82 echo "could not retrieve session list"
83 exit 1
84 fi
85
86 # exclude the desktop session, which is always the first
87 declare -i counter=0
88 while read line
89 do
90 if [[ ${counter} -gt 0 ]]
91 then
92 session=$(echo ${line} | cut -d"'" -f 2)
93 description=$(echo ${line} | cut -d"'" -f 4)
94 decho "Session: '${session}' -> Description '${description}'"
95
96 # import or update db entry
97 id=$(mysqldo "select id from values_storefront_session where session='${session}';")
98 if [[ -z ${id} ]]
99 then
100 mysqldo "insert into values_storefront_session (session,description,store,enabled) values('${session}','${description}','${STOREFRONT_STORE}','1');"
101 else
102 mysqldo "update values_storefront_session set session='${session}',description='${description}',store='${STOREFRONT_STORE}',enabled='1' where id='${id}';"
103 fi
104
105 # get and save id
106 id=$(mysqldo "select id from values_storefront_session where session='${session}';")
107 export IMPORTED_IDS+=" ${id}"
108 fi
109 (( counter++ ))
110 done << EOF
111 $(echo "${SESSION_LIST}")
112 EOF
113
114 # now disable all other ids in the database
115 DATABASE_IDS=$(mysqldo "select id from values_storefront_session")
116 for id in ${DATABASE_IDS}
117 do
118 if is_not_an_import_id "${id}"
119 then
120 # disable this one, not imported=not existing on the storefront-server in the moment
121 mysqldo "update values_storefront_session set enabled='0' where id='${id}';"
122 fi
123 done
124 fi
125
126 exit 0