From e251e2c24fb1d2f874bb3def66837d2d5b41a16b Mon Sep 17 00:00:00 2001 From: Tarik Gasmi Date: Fri, 6 Oct 2006 19:40:33 +0000 Subject: completed ldapconf helper-function matching_timerange git-svn-id: http://svn.openslx.org/svn/openslx/trunk@446 95ad53e4-c205-0410-b2fa-d234c58c8868 --- initramfs/initrd-stuff/etc/functions | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/initramfs/initrd-stuff/etc/functions b/initramfs/initrd-stuff/etc/functions index 1f739319..8a93b12f 100644 --- a/initramfs/initrd-stuff/etc/functions +++ b/initramfs/initrd-stuff/etc/functions @@ -535,6 +535,55 @@ trquery=`ldapsearch -x -H ldap://$ldapserver -b $1 -D $user -w $pwd -LLL \ # matching_timerange: helper function for ldapconf to get "most # specific timerange" matching actual time matching_timerange(){ +match=0 +lines=$[`echo $trquery | sed 's/#/\n#/g'|wc -l` -1] +for ((i=0;i<$lines;i++)) ; do + timerange[$i]=`echo $trquery | cut -d "#" -f $[$i+2] | sed 's/ //g'` +done +while true ; do + for ((i=0;i<$lines;i++)) ; do + trday=`echo ${timerange[i]} | cut -d "_" -f 1` + trbegin=`echo ${timerange[i]} | cut -d "_" -f 2` + trend=`echo ${timerange[i]} | cut -d "_" -f 3` + if [ $trday == $wday ] && [ $trday != "X" ] && [ $trbegin != "X" ] && \ + [ $trbegin -le $time ] && [ $time -le $trend ]; then + echo $wday $time "[D H H]match ->" ${timerange[i]} + tr=${timerange[i]} + match=1 && break + fi + done + if [ $match == 1 ] ; then break ; fi + for ((i=0;i<$lines;i++)) ; do + trday=`echo ${timerange[i]} | cut -d "_" -f 1` + trbegin=`echo ${timerange[i]} | cut -d "_" -f 2` + trend=`echo ${timerange[i]} | cut -d "_" -f 3` + if [ $trday == $wday ] && [ $trbegin == "X" ] && [ $trend == "X" ]; then + echo $wday $time "[D _ _]match ->" ${timerange[i]} + tr=${timerange[i]} + match=1 && break + fi + done + if [ $match == 1 ] ; then break ; fi + for ((i=0;i<$lines;i++)) ; do + trday=`echo ${timerange[i]} | cut -d "_" -f 1` + trbegin=`echo ${timerange[i]} | cut -d "_" -f 2` + trend=`echo ${timerange[i]} | cut -d "_" -f 3` + if [ $trday == "X" ] && [ $trbegin != "X" ] && [ $trbegin -le $time ] && \ + [ $time -le $trend ]; then + echo $wday $time "[_ H H]match ->" ${timerange[i]} + tr=${timerange[i]} + match=1 && break + else + if [ ${timerange[$i]} == "X_X_X" ]; then + echo $wday $time "[_ _ _]match ->" ${timerange[i]} + tr="X_X_X" && match=1 + else + match=0 + fi + fi + done + if [ $match == 1 ] || [ $match == 0 ] ; then break ; fi +done } # get_machineconfig: helper function for ldapconf, writing machine # config data of one timerange $tr into file "tmp/confvialdap/$tr" -- cgit v1.2.3-55-g7522