[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-internet/sources/sbin/ -> update-internet.sh (source)

   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  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1