[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 ##### met à jour les droits des machines et des utilisateurs lors de leur modif via l'interface web ##### 3 # usage : update-internet.sh user|machine droit plage 4 # licence GPL 5 # auteur : denis bonnenfant 6/02/2008 - Et Moi alors ? (Génaël) 6 ## 7 # $Id: update-internet.sh 3280 2008-10-12 20:40:29Z dbo $ ## 8 if [ "$1" == "--help" -o "$1" == "-h" ]; then 9 echo "Script de mise à jour de l'enregistrement ldap cn=machine " 10 echo "qui configure les droits lors de leur modification dans l'interface web" 11 echo "Usage : update-internet.sh nom droit plage" 12 echo "nom peut être un utilisateur ou une machine" 13 echo "si plage = tous , on fixe les droits permanents" 14 echo "sinon, les droits temporaires" 15 echo "--help cette aide" 16 exit 17 fi 18 19 [[ "$#" != "3" ]] && exit 1 20 21 user=$1 22 droit=$2 23 plage_u=$3 24 25 if [ -e /var/www/se3/includes/config.inc.php ]; then 26 dbhost=`cat /var/www/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f 2 |cut -d \" -f 2` 27 dbname=`cat /var/www/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 |cut -d \" -f 2` 28 dbuser=`cat /var/www/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 |cut -d \" -f 2` 29 dbpass=`cat /var/www/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 |cut -d \" -f 2` 30 else 31 echo "Fichier de conf inaccessible" >> $SE3LOG 32 exit 1 33 fi 34 35 # 36 # Recuperation des params LDAP 37 # 38 39 BASEDN=`echo "SELECT value FROM params WHERE name='ldap_base_dn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 40 if [ -z "$BASEDN" ]; then 41 echo "Impossible d'accéder au paramètre BASEDN" 42 exit 1 43 fi 44 COMPUTERSRDN=`echo "SELECT value FROM params WHERE name='computersRdn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 45 if [ -z "$COMPUTERSRDN" ]; then 46 echo "Impossible d'accéder au paramètre COMPUTERSRDN" 47 exit 1 48 fi 49 PEOPLERDN=`echo "SELECT value FROM params WHERE name='peopleRdn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 50 if [ -z "$PEOPLERDN" ]; then 51 echo "Impossible d'accéder au paramètre PEOPLERDN" 52 exit 1 53 fi 54 ADMINRDN=`echo "SELECT value FROM params WHERE name='adminRdn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 55 if [ -z "$ADMINRDN" ]; then 56 echo "Impossible d'accéder au paramètre ADMINRDN" 57 exit 1 58 fi 59 ADMINPW=`echo "SELECT value FROM params WHERE name='adminPw'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 60 if [ -z "$ADMINPW" ]; then 61 echo "Impossible d'accéder au paramètre ADMINPW" 62 exit 1 63 fi 64 65 66 resu=$(ldapsearch -xLLL -D $ADMINRDN,$BASEDN -w $ADMINPW -b $PEOPLERDN,$BASEDN "(uid=$user)" uid | grep "uid:" | cut -d " " -f2) 67 if [ -z "$resu" ]; then 68 # On cherche les machines 69 res=$(ldapsearch -xLLL -D $ADMINRDN,$BASEDN -w $ADMINPW -b $COMPUTERSRDN,$BASEDN "(cn=$user)" cn | grep "cn:" | cut -d " " -f2) 70 case $plage_u in 71 tous) 72 droit_u_p="machine" 73 ;; 74 cours*) 75 droit_u_t=$droit 76 droit_u_p="eleve" 77 ;; 78 esac 79 else 80 # On cherche les machines correspondant au manager 81 resu=$(ldapsearch -xLLL -D $ADMINRDN,$BASEDN -w $ADMINPW -b $PEOPLERDN,$BASEDN "(uid=$user)" destinationIndicator | grep "destinationIndicator:" | cut -d " " -f2) 82 res=$(ldapsearch -xLLL -D $ADMINRDN,$BASEDN -w $ADMINPW -b $COMPUTERSRDN,$BASEDN "(manager=uid=$user,$PEOPLERDN,$BASEDN)" cn | grep "cn:" | cut -d " " -f2) 83 droit_u_p=$(echo $resu |cut -d ":" -f1) 84 droit_u_t=$(echo $resu |cut -d ":" -f2) 85 if [ -z "$droit_u_p" ]; then droit_u_p="eleve"; fi 86 if [ -z "$droit_u_t" ]; then droit_u_t="aucun"; fi 87 if [ -z "$plage_u" ]; then plage_u="tous"; fi 88 89 90 case $droit_u_p in 91 eleve|prof|administratif|admin) 92 ;; 93 *) 94 droit_u_p="eleve" 95 ;; 96 esac 97 case $droit_u_t in 98 aucun|intranet|internet-cours|internet-pause|internet-soir|internet) 99 ;; 100 *) 101 droit_u_t="aucun" 102 ;; 103 esac 104 105 106 case $droit in 107 eleve) # fixe droit permanent 108 droit_u_p=$droit 109 ;; 110 prof|administratif|admin) # fixe droit permanent 111 droit_u_p=$droit 112 droit_u_t="internet" 113 ;; 114 aucun|intranet|internet-cours|internet-pause|internet-soir|internet) # fixe droit temporaires 115 case $droit_u_t in 116 aucun) 117 case $plage_u in 118 tous) 119 droit_u_t=$droit 120 ;; 121 cours*) 122 ;; 123 esac 124 ;; 125 *) 126 droit_u_t=$droit 127 ;; 128 esac 129 ;; 130 esac 131 ( 132 echo "dn: uid=$user,$PEOPLERDN,$BASEDN" 133 echo "changetype: modify" 134 echo "replace: destinationIndicator" 135 echo "destinationIndicator: $droit_u_p:$droit_u_t:$plage_u" 136 )| ldapmodify -x -D $ADMINRDN,$BASEDN -w $ADMINPW 137 fi 138 for machine in $res ; do 139 droit_m=$(ldapsearch -xLLL -D $ADMINRDN,$BASEDN -w $ADMINPW -b $COMPUTERSRDN,$BASEDN "(&(objectClass=ipHost)(cn=$machine))" destinationIndicator | grep "destinationIndicator:" | cut -d " " -f2) 140 droit_m_p=$(echo "$droit_m" |cut -d ":" -f1) 141 droit_m_t=$(echo "$droit_m" |cut -d ":" -f2) 142 plage_m=$(echo "$droit_m" |cut -d ":" -f3) 143 144 # mise à jour des droits pour le contrôle d'accès internet 145 146 # les droits sont : pour les utilisateurs : 147 # - eleve|prof|administratif|admin : droits permanents 148 # - aucun|intranet|internet-cours|internet-pause|internet-soir|internet : droits temporaires 149 # - cours[1-9]|tous 150 151 # les droits sont : pour les machines : 152 # - intranet|internet-cours|internet-pause|internet-soir|internet|total : droits permanents 153 # - aucun|intranet|internet-cours|internet-pause|internet-soir|internet|total : droits temporaires (lus par squidGuard) 154 # - cours[1-9]|tous 155 156 if [ -z "$droit_m_p" ]; then droit_m_p="intranet"; fi 157 if [ -z "$droit_m_t" ]; then droit_m_t="intranet"; fi 158 case $droit_u_p in 159 eleve) # eleve 160 case $droit_u_t in 161 aucun) # pas d'accès (puni ou charte non signée) 162 droit_m_t="aucun" 163 plage_m="tous" 164 ;; 165 intranet) # accès par défaut (droits de la machine) 166 droit_m_t=$droit_m_p 167 plage_m="tous" 168 ;; 169 internet-cours|internet-pause|internet-soir|internet) # accès forcé par profs pour une durée donnée 170 droit_m_t=$droit_u_t 171 plage_m=$plage_u 172 ;; 173 esac 174 ;; 175 prof|administratif) # prof 176 droit_m_t="internet" 177 plage_m="tous" 178 ;; # pas de limites 179 admin) # administrateur (non filtré et prioritaire) 180 droit_m_t="total" 181 plage_m="tous" 182 ;; # pas de limites 183 machine) 184 droit_m_p=$droit 185 droit_m_t=$droit 186 plage_m="tous" 187 ;; 188 esac 189 ( 190 echo "dn: cn=$machine,$COMPUTERSRDN,$BASEDN" 191 echo "changetype: modify" 192 echo "replace: destinationIndicator" 193 echo "destinationIndicator: $droit_m_p:$droit_m_t:$plage_m" 194 )| ldapmodify -x -D $ADMINRDN,$BASEDN -w $ADMINPW 195 done 196 197 198
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |