Magellan Linux

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

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

revision 2518 by niro, Mon Sep 14 11:36:20 2015 UTC revision 2821 by niro, Fri Jul 28 09:55:58 2017 UTC
# Line 3  Line 3 
3  MCORE_LIBDIR="@@MCORE_LIBDIR@@"  MCORE_LIBDIR="@@MCORE_LIBDIR@@"
4  source @@SYSCONFDIR@@/mcore/mcore.conf  source @@SYSCONFDIR@@/mcore/mcore.conf
5  source @@SYSCONFDIR@@/mcore/citrix.conf  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  source ${MCORE_LIBDIR}/include/common.global.class
9  source ${MCORE_LIBDIR}/include/daemon.global.class  source ${MCORE_LIBDIR}/include/daemon.global.class
10  source ${MCORE_LIBDIR}/include/mysqlfunctions.global.class  source ${MCORE_LIBDIR}/include/mysqlfunctions.global.class
# Line 12  source ${MCORE_LIBDIR}/include/mysqlfunc Line 14  source ${MCORE_LIBDIR}/include/mysqlfunc
14  : ${STOREFRONT_PASS=""}  : ${STOREFRONT_PASS=""}
15  : ${STOREFRONT_DOMAIN=""}  : ${STOREFRONT_DOMAIN=""}
16    
17  # get default store  export IMPORTED_IDS=""
 if [[ -z ${STOREFRONT_STORE} ]]  
 then  
  export STOREFRONT_STORE="${DEFAULT_STOREFRONT_STORE}"  
 fi  
18    
19  if ! storebrowse &> /dev/null  LOCKFILE="@@RUNDIR@@/lock/storefront-cron.lock"
 then  
  if [ -d ~/.ICAClient ]  
  then  
  rm -r ~/.ICAClient  
  fi  
20    
21   install -d ~/.ICAClient  is_not_an_import_id()
22   touch ~/.ICAClient/.eula_accepted  {
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   # kill running instances   return 0
35   pidof AuthManagerDaemon > /dev/null && killall AuthManagerDaemon  }
  pidof ServiceRecord > /dev/null && killall ServiceRecord  
  pidof storebrowse > /dev/null && killall storebrowse  
36    
37   # register eula and add default store  # the lockfile is not meant to be perfect, it's just in case the
38   xvfb-run -a -s "-extension RANDR" storebrowse -a "${STOREFRONT_STORE}"  # two cron scripts get run close to each other to keep
39  fi  # 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    # register eula and add default store as MCORE_UNPRIV_USER
52    ${MCORE_LIBDIR}/storefront-store --add --store ${STOREFRONT_STORE}
53    ${MCORE_LIBDIR}/storefront-store --regen
54    
55  # get all sessions  # get all sessions
56  if [[ -z $(storebrowse -l | grep -i ${STOREFRONT_STORE}) ]]  if [[ -z $(su - ${MCORE_UNPRIV_USER} -c "storebrowse -l" | grep -i ${STOREFRONT_STORE}) ]]
57  then  then
58   echo "Store ${STOREFRONT_STORE} unknown, perhaps not added. Run 'rm -r ~/.ICAClient'."   echo "Store ${STOREFRONT_STORE} unknown, perhaps not added. Run 'rm -r ~/.ICAClient'."
59  else  else
# Line 46  else Line 61  else
61   [[ -n ${STOREFRONT_USER} ]] && OPT+=" -U ${STOREFRONT_USER}"   [[ -n ${STOREFRONT_USER} ]] && OPT+=" -U ${STOREFRONT_USER}"
62   [[ -n ${STOREFRONT_PASS} ]] && OPT+=" -P ${STOREFRONT_PASS}"   [[ -n ${STOREFRONT_PASS} ]] && OPT+=" -P ${STOREFRONT_PASS}"
63   [[ -n ${STOREFRONT_DOMAIN} ]] && OPT+=" -D ${STOREFRONT_DOMAIN}"   [[ -n ${STOREFRONT_DOMAIN} ]] && OPT+=" -D ${STOREFRONT_DOMAIN}"
64   SESSION_LIST=$(storebrowse -E ${OPT} ${STOREFRONT_STORE})   SESSION_LIST=$(su - ${MCORE_UNPRIV_USER} -c "storebrowse -E ${OPT} ${STOREFRONT_STORE}" 2> /dev/null)
65     if [[ $? != 0 ]]
66     then
67     echo "could not retrieve session list"
68     exit 1
69     fi
70    
71   # exclude the desktop session, which is always the first   # exclude the desktop session, which is always the first
72   declare -i counter=0   declare -i counter=0
73   echo "${SESSION_LIST}" | while read line   while read line
74   do   do
75   if [[ ${counter} -gt 0 ]]   if [[ ${counter} -gt 0 ]]
76   then   then
77   session=$(echo ${line} | cut -d"'" -f 2)   session=$(echo ${line} | cut -d"'" -f 2)
78   description=$(echo ${line} | cut -d"'" -f 4)   description=$(echo ${line} | cut -d"'" -f 4)
79   echo "Session: '${session}' -> Description '${description}'"   decho "Session: '${session}' -> Description '${description}'"
80    
81     # import or update db entry
82     id=$(mysqldo "select id from values_storefront_session where session='${session}';")
83     if [[ -z ${id} ]]
84     then
85     mysqldo "insert into values_storefront_session (session,description,store,enabled) values('${session}','${description}','${STOREFRONT_STORE}','1');"
86     else
87     mysqldo "update values_storefront_session set session='${session}',description='${description}',store='${STOREFRONT_STORE}',enabled='1' where id='${id}';"
88     fi
89    
90     # get and save id
91     id=$(mysqldo "select id from values_storefront_session where session='${session}';")
92     export IMPORTED_IDS+=" ${id}"
93   fi   fi
94   (( counter++ ))   (( counter++ ))
95     done << EOF
96    $(echo "${SESSION_LIST}")
97    EOF
98    
99     # now disable all other ids in the database
100     DATABASE_IDS=$(mysqldo "select id from values_storefront_session")
101     for id in ${DATABASE_IDS}
102     do
103     if is_not_an_import_id "${id}"
104     then
105     # disable this one, not imported=not existing on the storefront-server in the moment
106     mysqldo "update values_storefront_session set enabled='0' where id='${id}';"
107     fi
108   done   done
109  fi  fi
110    
111    exit 0

Legend:
Removed from v.2518  
changed lines
  Added in v.2821